用 github copilot 帐号和 GPT-4 聊天
开源项目:copilot-gpt4-service
1 原理
将 Github Copilot 请求转换为 ChatGPT 请求,免费使用 GPT-4 模型。也就是说,如果你购买了 Copilot 包月,就可以用此方法免费使用 GPT-4 聊天了。
作者追踪数据包发现:Copilot Chat 后台使用的也是 OpenAI 的 ChatGPT,只是加入了很多提示,以避免闲聊与程序无关的问题。
连接过程并非直接使用 copilot token,还需要连接 github 获取用户信息,因此作者用 go 语言写了一个中转服务,消化了此步骤。
2 操作
从以下网址获得 github copilot token:
https://cocopilot.org/copilot/token
该 token 一般以 ghu_ 或 gho_ 开头。
3 在本地搭建中转服务
1 | git clone https://github.com/aaamoon/copilot-gpt4-service |
注意:如果 build 时总是提示连不通,请在 docker-compose.yml 的 build 部分加代理。
4 安装 NextWeb 界面工具
1 | docker pull yidadaa/chatgpt-next-web |
在设置界面选择自定义接口:
(我的 8080 被其它服务占上了,所以部署在 8081 端口)
使用效果如下:
(问第一个问题时,使用 3.5,然后切成 4,问了第二个问题)
5 程序调用
目前测试只能在网页上使用,用 python openai 库调用,返回 200,但无内容。
项目代码量不大,主要逻辑在 main.go 中,初步判断是 python openai 库与命令行通讯协议不一致导致的。
实在想用,也可以在程序里使用命令行调用方式,只是比较麻烦:
1 | curl -X POST http://localhost:8081/v1/chat/completions \ |
6 问题及解决
在云服务器上安装时,遇到一些问题,解决方法记录如下:
6.1 问题一:报错找不到 BUILDPLATFORM
1 | Step 1/14 : FROM --platform=$BUILDPLATFORM golang:alpine as builder |
在 docker-compose.yml 中加运行参数 BUILDPLATFORM
1 | services: |
在 Dockerfile 中把接收参数放在使用参数前
1 | ARG BUILDPLATFORM |
6.2 问题二:报错没打开 BUILDKIT
1 | the --mount option requires BuildKit. Refer to https://docs.docker.com/go/buildkit/ to learn how to build images with BuildKit enabled |
在运行 docker-compose 前设置环境变量
1 | export DOCKER_BUILDKIT=1 |
6.3 问题三:docker-compose 时死机
可能由于 build image 时内存占用过大,导致机器不响应,解决方法是在其它机器上打好 image 后复制过去即可,go 语言的 image 很小,大概只有 18M 左右。
6.4 问题四:无法使用 openai api 访问
- 设了 http_proxy 之后,即使用了 no_proxy,也影响连本地
ip。并非所有的应用都支持 CIDR
表示法(如
192.168.10.0/24
),在 Python 中,requests
库是支持NO_PROXY
环境变量的,但是它不支持 CIDR 表示法。需要为NO_PROXY
环境变量指定一个逗号分隔的 IP 地址列表,而不是 CIDR 表示法的 IP 地址范围。 - 连服务时没注意 openai v1 版本的 url 与之前有差异