通过GitHub-Copilot使用GPT-4模型
由于ChatGPT-plus官方充值/开通存在诸多困难,故通过copilot使用gpt-4,支持ChatGPT-NextWeb
前言
动机
想搞GPT-4一直搞不下来,遇到了以下困难:
- OpenAI不支持大陆手机号注册(通过虚拟手机号平台搞定了);
- ChatGPT-plus开通要排队(未解决);
- ChatGPT-plus不能绑定大陆银行卡(未解决,网友推荐虚拟卡,有手续费)。
由于Copilot本身支持GPT-4,机缘巧合下,在v2ex看到可以用GitHub-Copilot作为GPT-4的代理,故捣鼓进行实现。
使用Copilot对比ChatGPT-plus官方开通官方有以下好处:
- Copilot只需10刀/月,ChatGPT-plus需要20刀;
- Copilot开通不用排队;
- 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 验证
-
浏览器打开步骤一返回的verification_uri:
https://github.com/login/device
; -
登录GitHub账号,并输入步骤一返回的user_code;
-
验证通过即可。
步骤三:验证通过后,获取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模型,进行验证:
完成!