Github Copilot 转换为免费 GPT-4 方法及注意事项

Github Copilot 作为一款代码解析及编码辅助 AI 工具,深受广大程序员朋友的喜爱。令人感到遗憾的是该工具被限制于特定使用场景,尽管其基于 OpenAI GPT 模型。那么,有没有什么可行的方法能够解锁其底层 GPT-4 模型能力,让其具备与 ChatGPT 通用的功能?答案是可以。

在本文中,我们将结合开源项目 copilot-gpt4-service 来谈谈如何将 Github Copilot 转换为通用 ChatGPT 服务,从而达到免费使用 GPT-4 的目的。

我们的主要思路分为以下几步:

  1. 使用本文介绍的方法形成一个 Github Copilot 到 GPT-4 的服务端 API 转换网关。
  2. 使用 Github Copilot Plugin Token 从 Github Copilot 账号提取认证 Token 。
  3. 使用第三方 ChatGPT 客户端(ChatGPT-Next-WebChatBox 等)通过步骤二中提取到的 Token 接入步骤一 API 服务网关实现通用 ChatGPT 功能。

此外,我们建议您仅做个人使用,不要将其公开或商业运营,以免引发 Github 封禁账号。

下面就让我们开始吧!

1. 部署服务端网关

本部分将介绍三种方法帮助您部署一个 Github Copilot 到 GPT-4 的服务端 API 转换网关。分别为:

  • Docker 部署
  • 源码部署
  • Kubernetes 部署

您只需要根据自身情况选择其中一种方法即可。

1.1 Docker 部署

这是最简单一种方法,支持一键部署,推荐使用本方法。请在您的服务器(VPS)终端中执行以下命令,即可完成安装:


docker run -d \
  --name copilot-gpt4-service \
  --restart always \
  -p 8080:8080 \
  -e HOST=0.0.0.0 \
  aaamoon/copilot-gpt4-service:latest

注意:您需要在服务端安装 Docker 服务,如尚未安装。请根据以上命令返回的系统提示进行安装。

1.2 源码安装

请在服务器终端执行以下命令:


git clone https://github.com/aaamoon/copilot-gpt4-service && cd copilot-gpt4-service
# 如果需要的话可以在 docker-compose.yml 文件中修改服务监听端口
docker compose up -d

如果您需要更新本服务版本,请通过一下命令进行:


git pull && docker compose up -d --build

1.3 Kubernetes 部署

本服务支持 Kubernetes 部署,命令如下:


helm repo add aaamoon https://charts.kii.la && helm repo update # Source by github pages
helm install copilot-gpt4-service aaamoon/copilot-gpt4-service

当然,您也可以连同第三方 ChatGPT 客户端 ChatGPT-Next-Web 一起部署,然后立刻就可以使用了。本方法需要您提前获取并准备好 Github Copilot Token (提取方法下文会提到)以及预先设置一个 ChatGPT-Next-Web 的网页访问密码,然后修改以下代码对应区域


helm install copilot-gpt4-service aaamoon/copilot-gpt4-service \
  --set chatgpt-next-web.enabled=true \
  --set chatgpt-next-web.config.OPENAI_API_KEY=[ your openai api key ] \   # 请修改 [ your openai api key ] 为您的 Github Copilot Token
  --set chatgpt-next-web.config.CODE=[ backend access code ] \    # 请修改 [ backend access code ] 为 ChatGPT-Next-Web 预设访问密码
  --set chatgpt-next-web.service.type=NodePort \
  --set chatgpt-next-web.service.nodePort=30080

2. 获取 Github Copilot Token

首先,您的 GitHub 账户必须已开通 Github Copilot 服务。然后安装 Github Copilot CLI 并进行认证。如果您已开通 Copilot 服务,请通过以下命令自动安装 CLI 及 提取 Token。

Linux/MacOS 系统:


# The script below will automatically install Github Copilot CLI and obtain the Github Copilot Plugin Token through authorization
bash -c "$(curl -fsSL https://raw.githubusercontent.com/aaamoon/copilot-gpt4-service/master/shells/get_copilot_token.sh)"

Windows 系统:

新建一个名为 get_copilot_token.bat 的文件,然后写入以下代码:


@echo off

where /q npm
if %errorlevel% neq 0 (
    echo Node.js is not installed. Please download it from https://nodejs.org/en/download
    pause
    exit /b
)

where /q github-copilot-cli
if %errorlevel% neq 0 (
    echo github-copilot-cli is not installed. Installing...
    npm i @githubnext/github-copilot-cli -g
    if %errorlevel% neq 0 (
        echo Failed to install github-copilot-cli. Please check your npm installation and try again.
        pause
        exit /b
    )
)

:: Check if token file exists
if exist %USERPROFILE%\.copilot-cli-access-token (
    :: View the token
    type %USERPROFILE%\.copilot-cli-access-token
    echo.

    :: Ask user if they want to reauthorize
    set /p reauth="Token exists. Do you want to reauthorize? (Y/N): "
    if /i "%reauth%" neq "Y" (
        echo Exiting script...
        exit /b
    )
)

:: Retrieve the token
github-copilot-cli auth
if %errorlevel% neq 0 (
    echo Failed to retrieve GitHub Copilot Token. Please check your internet connection and try again.
    pause
    exit /b
)

:: View the token
type %USERPROFILE%\.copilot-cli-access-token

if %errorlevel% neq 0 (
    echo Failed to view the token. Please check the file path and try again.
    pause
    exit /b
)

pause

注意,您可能需要设定本文件为可执行文件,然后双击运行。您也可以在这里直接下载 get_copilot_token.bat 文件。

3. 结合第三方客户端使用

完成上文中提到的 服务端 API 转换网关部署后,您将获得一个默认的 API 服务地址:http://127.0.0.1:8080 。默认配置(docker-compose.yml)如下:


HOST=localhost # Service listening address
PORT=8080 # Service listening port
CACHE=true # Whether to enable persistence
CACHE_PATH=db/cache.sqlite3 # Path to persistent cache (only used when CACHE=true)
DEBUG=false # Whether to enable debug mode, more logs will be output when enabled
LOGGING=true # Whether to enable logging
LOG_LEVEL=info # Log level, optional values: panic, fatal, error, warn, info, debug, trace (Note: Only effective when LOGGING=true)

如果您的 VPS 具备公网 IP 地址,将 127.0.0.1 替换为公网 IP 地址,然后将该地址填写到第三方 ChatGPT 客户端的 自定义 OpenAI API 地址中,密钥使用步骤二提取到的 Github Copilot Token 即可。

当接口返回 401 状态码代表 Github Copilot Plugin Token 错误或已过期,403 代表账户未开启 Github Copilot 服务。

注意:我们不建议您直接通过 HTTP 及公网 IP 作为 API 地址来使用。鉴于安全性考虑,您应该前置一个 Nginx 反向代理 http://127.0.0.1:8080 ,然后给 Nginx 配备一个域名,以域名 HTTPS 方式提供接口服务。

支持的模型可以选择:GPT-4 或者 GPT-3.5-turbo ,是不是一定可以支持 GPT-4,这就要看脸了,这由 Github 说了算。