由于ChatGPT-plus官方充值/开通存在诸多困难,故通过copilot使用gpt-4,支持ChatGPT-NextWeb

前言

动机

想搞GPT-4一直搞不下来,遇到了以下困难:

  1. OpenAI不支持大陆手机号注册(通过虚拟手机号平台搞定了);
  2. ChatGPT-plus开通要排队(未解决);
  3. ChatGPT-plus不能绑定大陆银行卡(未解决,网友推荐虚拟卡,有手续费)。

由于Copilot本身支持GPT-4,机缘巧合下,在v2ex看到可以用GitHub-Copilot作为GPT-4的代理,故捣鼓进行实现。

使用Copilot对比ChatGPT-plus官方开通官方有以下好处:

  1. Copilot只需10刀/月,ChatGPT-plus需要20刀;
  2. Copilot开通不用排队;
  3. Copilot可以使用大陆银行卡支付(绑定PayPal)

集成内容

GitHub Copilot

需要先开通Copilot,作为GPT-4接口调用的提供方,开通过程不在本文赘述。

copilot-gpt4-service

作为Copilot的代理,将 Github-Copilot 转换为 ChatGPT。

ChatGPT-Next-Web

流行的Chat-GPT Web端图形界面。

集成步骤

部署copilot-gpt4-service

注意HOST=0.0.0.0,否则无法容器外访问

8080端口常用,故暴露38080,可按实际情况

docker run -d  aaamoon/copilot-gpt4-service:latest -p 38080:8080 --restart=always --env=HOST=0.0.0.0 

启动后logs会显示相应的IP地址,按需取用(若客户端使用docker部署,则取veth对应地址)

2024-01-27 02:07:43 Service is running at:
2024-01-27 02:07:43  - Local               : http://0.0.0.0:8080
2024-01-27 02:07:43  - Network             : http://127.0.0.1:8080
2024-01-27 02:07:43  - Network             : http://172.17.0.2:8080

获取Copilot的访问token

copilot-gpt4-service的GitHub主页中有相关python/node脚本,以下使用简单方法,通过apifox(postman亦可)获取

步骤一:获取device_code并验证登录

url:https://github.com/login/device/code

json固定参数:

{
    "client_id": "Iv1.b507a08c87ecfe98",
    "scope": "read:user"
}

结果:

device_code=XXX&expires_in=899&interval=5&user_code=9394-156C&verification_uri=https%3A%2F%2Fgithub.com%2Flogin%2Fdevice

步骤二:Github Oauth2 验证

  1. 浏览器打开步骤一返回的verification_uri: https://github.com/login/device

  2. 登录GitHub账号,并输入步骤一返回的user_code;

  3. 验证通过即可。

步骤三:验证通过后,获取access_token

url:https://github.com/login/oauth/access_token

json参数:

{
    "client_id": "Iv1.b507a08c87ecfe98",
    "device_code": "步骤一返回的device_code",
    "grant_type": "urn:ietf:params:oauth:grant-type:device_code"
}

结果即为copilot的access_token:

access_token=YYYYYY&scope=&token_type=bearer

部署ChatGPT-Next-Web

BASE_URL:取copilot-gpt4-service的访问地址

CODE:ChatGPT-Next-Web的登录密码

OPENAI_API_KEY:copilot的access_token

docker run --name=demo2 --env=CODE=${客户端登录密码} --env=OPENAI_API_KEY=${你的copilot_access_token} --env=BASE_URL=http://172.17.0.2:8080  -p 33003:3000 --restart=always -d yidadaa/chatgpt-next-web:latest

验证

如何判断是不是 GPT-4 模型

鲁迅为什么暴打周树人?

  • GPT-3.5 会一本正经的胡说八道
  • GPT-4 表示鲁迅和周树人是同一个人

我爸妈结婚时为什么没有邀请我?

  • GPT-3.5 他们当时认为你还太小,所以没有邀请你。
  • GPT-4 他们结婚时你还没出生。

访问 http://localhost:33000/#/,选择gpt-4模型,进行验证:

完成!