一个免费的使用 GPT-4 API 的方案
Saika 博主

先自锤标题党,本文介绍的 GPT-4 API 目前还只能调用 /v1/chat/completions 以及 /v1/modelsv1/embeddings 接口。至于 v1/audio/speechv1/fine_tuningv1/filesv1/imagesv1/moderations 等接口是不支持的。但是胜在免费,而且其文字能力确实强大而又出众。

本文只需要用到一个仓库,是 Yanyutin753 开发的 gpt4-copilot-java ,目前还没有放出源码,只能在 Release 中下载打包好的 fat jar 包运行或者直接 docker 运行使用。

感谢始皇提供的 Cocopilot 以及公车 ghu_ThisIsARealFreeCopilotKeyByCoCopilot (已失效)。

部署

docker 运行过于简单,这里不再赘述。大致说明一下 fat jar 直接运行的方法:

1
2
3
4
5
6
# 下载 fat jar 包
curl -L -o gpt4-copilot-java.jar "https://github.com/Yanyutin753/gpt4-copilot-java/releases/download/v0.0.3/gpt4-copilot-java-0.0.3.jar"
# 测试运行,把 PORT 改为自己喜欢的端口,最后的 server.servlet.context-path 参数可以改成自己喜欢的尾缀
java -jar gpt4-copilot-java.jar --server.port=PORT --server.servlet.context-path=/
# 加入 pm2 管理
pm2 start java --name gpt4-copilot-java -- -jar gpt4-copilot-java.jar --server.port=PORT --server.servlet.context-path=/

使用

不妨设 gpt4-copilot-java 运行的地址为 https://your_gpt4-copilot-java.com 。使用公车作为 API Key 进行请求:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 请求 /v1/chat/comletions 接口
curl --location 'https://your_gpt4-copilot-java.com/cocopilot/v1/chat/completions' \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ghu_ThisIsARealFreeCopilotKeyByCoCopilot" \
--data '{
"model": "gpt-4",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "鲁迅打周树人"
}
]
}'
1
2
3
4
5
6
7
8
9
# 请求 v1/embeddings 接口
curl --location 'https://your_gpt4-copilot-java.com/cocopilot/v1/embeddings' \
--header "Authorization: Bearer ghu_ThisIsARealFreeCopilotKeyByCoCopilot" \
--header "Content-Type: application/json" \
--data '{
"input": "鲁迅打周树人...",
"model": "text-embedding-ada-002",
"encoding_format": "float"
}'
1
2
3
# 请求 /v1/models 接口
curl --location 'https://your_gpt4-copilot-java.com/cocopilot/v1/models' \
--header "Authorization: Bearer ghu_ThisIsARealFreeCopilotKeyByCoCopilot"

即为 https://your_gpt4-copilot-java.com/cocopilot 做 API BASE URL ,再使用 ghu_ThisIsARealFreeCopilotKeyByCoCopilot 做 API Key 请求即可。为了使用方便,可以与上一篇博客一样接入 One-api 进行使用。



lvguanjun/copilot_to_chatgpt4

如果你需要同时薅很多家 copilot 中转商,又不希望同时搭多个 gpt4-copilot-java ,那么可以使用 lvguanjun/copilot_to_chatgpt4 这个仓库。

首先,为了防止被人白嫖,也为了自己的IP安全,可以先搭建一个 HTTP 代理:

1
2
3
4
5
6
7
8
{
"rewrites": [
{ "source": "/proxy/:match/:url*", "destination": "https://:match/:url*" },
{ "source": "/proxy/:match/:url*/", "destination": "https://:match/:url*/" },
{ "source": "/httpproxy/:match/:url*", "destination": "http://:match/:url*" },
{ "source": "/httpproxy/:match/:url*/", "destination": "http://:match/:url*/" }
]
}

在 GitHub 中新建一个仓库,仓库中新建名为 vercel.json 的文件,并填入以上内容。再去 Vercel 中新建 Project ,选择刚刚新建的这个仓库即可。这样你就获得了一个由 Vercel 提供的通用 HTTP 代理,只需要在你需要访问的地址前加上https://your-vercel-project.vercel.app/proxy/即可通过 Vercel 代理访问目标地址,如https://proxy-nineninesix.vercel.app/proxy/www.google.com即为通过 Vercel 访问https://www.google.com

接下来,我以 Serv00 免费 FreeBSD 主机为例记录 lvguanjun/copilot_to_chatgpt4 的部署过程:

首先在 Panel 中放行一个端口,然后将仓库代码克隆到 Serv00 上:

1
git clone -b endpoint https://github.com/lvguanjun/copilot_to_chatgpt4 c2g4 && cd c2g4

接着按照源仓库的README准备虚拟环境:

1
2
3
4
5
python3 -m venv venv
source venv/bin/activate
# 由于 Serv00 免费用户的使用限制,在这里必须使用cpuset命令进行依赖安装,不然装不上。
cpuset -l 0 pip install -r requirements.txt
cp config.py.sample config.py

接着使用 Panel 自带的编辑器或者 vim 编辑 config.py 的内容,主要修改WHITE_TOKEN_URLS的值:

1
2
# 切记不要带 /proxy 路径,该仓库不支持识别此路径,直接用 /* 覆盖全路径即可。
WHITE_TOKEN_URLS = "https://your-vercel-project.vercel.app/*"

保存后,新建一个启动脚本,方便使用 pm2 管理:

1
2
3
4
5
6
7
cat > run.sh << EOF
#!/bin/bash
source venv/bin/activate
# 记得将下一行的 PORT 替换为自己放行的端口
uvicorn main:app --host 0.0.0.0 --port PORT
deactivate
EOF

测试运行:

1
chmod +x run.sh && bash run.sh

使用pm2管理运行:

1
chmod +x run.sh && ~/.npm-global/bin/pm2 start ./run.sh --name copilot_to_chatgpt4

拼接Key的规则:https://your-vercel-project.app/proxy/地址||秘钥,如https://your-vercel-project.app/proxy/1.1.1.1/copilot_internal/v2/token||mxY5Oc8i8qUHoaiyfgeiuqgefoufmdZwyUqJmlz+MVIXNOabdfkhdaqL0tkQyajSOihkkP/tXbvBUMZhQE08GTfGW4p9GdSHRaNLijJCNVc=.kJfupjFfQeriLXvBDGiA7g==

由 Hexo 驱动 & 主题 Keep
本站由 提供部署服务
访问量