OpenAI提供了两种访问方式,一种是直接在ChatGPT网页端使用的Access Token方式,这种方式可以免费使用GPT-3.5模型,只需要登录即可使用。但缺点是不稳定,且无法扩展。另一种是使用API,注册用户可以获得5美元的赠送额度,但使用完之后就需要付费。这种方式相对更稳定,但缺点是赠送额度较少且存在限流,目前是3条/分钟。
因此,对于那些希望免费使用OpenAI GPT-3.5模型的用户来说,选择Access Token方式是比较好的选择。但是需要解决的问题是不稳定以及可能IP被封禁的问题。为了解决这些问题,我们可以自建反向代理服务来提高稳定性,并保护我们的IP地址不被OpenAI封禁。也有一些公共的反向代理服务可以选择使用,但是很不稳定,因为它们是免费共享的。所以自建反向代理服务是一个不错的选择
如果部署或者配置过程出现问题或不懂的地方,请先搜索历史issue或者加TG交流群
如果自己安装觉得麻烦,可以使用我提供的一键部署脚本!底部有脚本安装命令
- 一台VPS,规格最低配 1C1G;注意:warp不支持arm架构的机器
- VPS可以正常访问chatgpt;或者国内服务器实现科学上网也可以
- 参考这篇文章国内服务器实现科学上网
- 目前个人使用的机场:机场1按量不限时,解锁ChatGPT \ 机场2按周期,解锁ChatGPT
- 部署docker和docker-compose
特别说明:目前这个项目,经过多个版本迭代之后比较稳定;目前可以一个服务多人共用
- 设置一个yum源,下面两个都可用
# **仓库
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo
# 阿里仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker
yum -y install docker-ce
# 启动并设置开机自启
systemctl start docker
systemctl enable docker
systemctl status docker
(1)定义Docker-Compose版本变量
export composeVer=v2.16.0
(2)下载最新版本的 docker-compose 到 /usr/bin 目录下
curl -L https://github.com/docker/compose/releases/download/${composeVer}/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose
(3)给 docker-compose 授权
chmod +x /usr/bin/docker-compose
(4)检查docker-compose安装情况
docker-compose -v
- 这里使用的chatGPT反代项目:linweiyuan/go-chatgpt-api
- 目前已经支持多次对话
mkdir -p /data/go-chatgpt-api && cd $_
- 使用API 模式
- 如果你的VPS IP稳定,或者你使用的科学上网地址稳定,那就首选这种方式
vim docker-compose.yml
version: "3"
services:
go-chatgpt-api:
container_name: go-chatgpt-api
image: linweiyuan/go-chatgpt-api
ports:
- 8080:8080 # 容器端口映射到宿主机8080端口;宿主机监听端口可按需改为其它端口
#network_mode: host # 可选,将容器加入主机网络模式,即与主机共享网络命名空间;上面的端口映射将失效;clash TUN模式下使用此方法
environment:
- GO_CHATGPT_API_PROXY=http://host:port # NETWORK_PROXY_SERVER:科学上网代理地址,例如:http://10.0.5.10:7890
restart: unless-stopped
- 基于Cloudflare WARP模式
- 解决IP被Ban,提示Access denied之类的报错
- 如果使用此模式还是提示Access denied,大概率是你机器IP不干净或者用的国内服务器导致验证码过不去
- Cloudflare WARP官网文档:https://developers.cloudflare.com/warp-client/get-started/linux
vim docker-compose.yml
version: "3"
services:
go-chatgpt-api:
container_name: go-chatgpt-api
image: linweiyuan/go-chatgpt-api
ports:
- 8080:8080 # 容器端口映射到宿主机8080端口;宿主机监听端口可按需改为其它端口
#network_mode: host # 可选,将容器加入主机网络模式,即与主机共享网络命名空间;上面的端口映射将失效;clash TUN模式下使用此方法
environment:
- GO_CHATGPT_API_PROXY=socks5://chatgpt-proxy-server-warp:65535
depends_on:
- chatgpt-proxy-server-warp
restart: unless-stopped
chatgpt-proxy-server-warp:
container_name: chatgpt-proxy-server-warp
image: linweiyuan/chatgpt-proxy-server-warp
environment:
- LOG_LEVEL=OFF
restart: unless-stopped
docker-compose up -d
# 检查运行的容器;确保容器状态为UP
docker ps
# 检测容器映射到宿主机的监听端口是否监听
ss -tnlp|grep 8080
- go-chatgpt-api需要初始化启动需要耐心等待
# 查看容器日志是否运行正常
docker logs -f go-chatgpt-api
- 出现下图中
Service go-chatgpt-api is ready.
则表示服务可正常使用了
![](https://private-user-images.githubusercontent.com/42825450/238850385-081886e0-72e8-44b5-954f-e122efcedfcb.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQyNjU1MTEsIm5iZiI6MTcyNDI2NTIxMSwicGF0aCI6Ii80MjgyNTQ1MC8yMzg4NTAzODUtMDgxODg2ZTAtNzJlOC00NGI1LTk1NGYtZTEyMmVmY2VkZmNiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIxVDE4MzMzMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWIxY2NmYjc4MjQzOThmNzEyNzNhOTU0NzUwNTcwNjg2YzljM2VhNDk4Y2MxYWY5YjgwYmI3OTY1ZTNhYTM5YmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Zsj8B0kpoPQk5bapLTHncdMXYBFABFwiEsdHFaQbeLM)
# 停止
docker-compose down
# 拉取新镜像
docker-compose pull
# 启动
docker-compose up -d
-
现在我们可以找一个项目,使用access token模式,并使用我们自建的代理地址进行访问;
- 自建IP的访问地址为http://vps-ip:8080/chatgpt/conversation
- 如果前端项目是直接跑的并且与反代服务同在一台VPS上,则反代地址可写成:http://127.0.0.1:8080/chatgpt/conversation
- 如果你前端项目是容器启的并且与反代服务同在一台VPS上,则反代地址可写成:http://go-chatgpt-api:8080/chatgpt/conversation
-
access token获取:https://chat.openai.com/api/auth/session
API_REVERSE_PROXY=http://127.0.0.1:8080/chatgpt/conversation
- 现在我们访问chatgpt-web,查看是否可以正常使用
- 同样日志返回请求结果正常
- 使用ChatGPTAPI模式,并使用我们自建的代理地址进行访问;
- 自建IP的访问地址为http://vps-ip:8080/platform
- 如果前端项目是直接跑的并且与反代服务同在一台VPS上,则反代地址可写成:http://127.0.0.1:8080/platform
- 如果你前端项目是容器启的并且与反代服务同在一台VPS上,则反代地址可写成:http://go-chatgpt-api:8080/platform
OPENAI_API_BASE_URL=http://127.0.0.1:8080/platform
![](https://private-user-images.githubusercontent.com/42825450/238116482-aa93dd61-ab4d-4e56-9677-d86d8287eab9.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQyNjU1MTEsIm5iZiI6MTcyNDI2NTIxMSwicGF0aCI6Ii80MjgyNTQ1MC8yMzgxMTY0ODItYWE5M2RkNjEtYWI0ZC00ZTU2LTk2NzctZDg2ZDgyODdlYWI5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIxVDE4MzMzMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTgwYjYyYjMyODFlNjBlMDkzMzM2NTZkZWQ4YjA0NmVhYzZhMmVkNTkxN2MxZmEwYzFjNTYwMGUyNzRkMzQ3NmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.h9W1szp0Y31QdD5qeIoPQNL4ikbxwlWZxsmX_K3OuYE)
目前部署发现,只要确保节点稳定或者国内服务器配置的代理地址稳定,那么就可以正常使用
- 问题描述:按照步骤部署起来了,但是查看go-chatgpt-api日志提示ERRO[0015] Access denied
- 问题原因:大概率你的VPS IP不干净或者使用的国内服务器;如果使用的代理,那么进入到容器查看下IP是啥或者更换个代理节点
docker exec chatgpt-proxy-server curl -x socks5://代理 ipinfo.io
- 问题原因:这个错误就是处理不了验证码
- 解决方法:重启 api 恢复正常;先 down 再 up,不能 restart
- 问题原因:是由于 Docker 容器的安全限制导致的,container内的root只是外部的一个普通用户权限,所以会出现这个问题
- 问题解决:
docker-compose.yml
添加参数privileged: true
- 问题原因:如果你更新到了新版本,那么接口需要进行更改
- 解决方法:
http://127.0.0.1:8080/chatgpt/conversation
- 问题原因:accesstoken过期或者账号被封禁
- 问题解决:重启获取新的accesstoken,或者注册新账号
6、ChatGPTUnofficialProxyAPI.sendMessage: conversationId and parentMessageId must both be set or both be undefined
- 问题原因:有可能你是api和token同时使用,并且在同一个会话
- 问题解决:切换新的会话;或者把会话清除掉
- 说明:目前该脚本适用于CentOS 7\8、RHEL-8、Ubuntu系统;因为脚本测试环境不一样,不能确保在你的环境可以完美运行
# CentOS
yum -y install wget
# Ubuntu
apt -y install wget
bash -c "$(wget -q -O- https://raw.githubusercontent.com/dqzboy/ChatGPT-Proxy/main/install/chatgpt-proxy.sh)"