Typing SVG

为啥需要自建ChatGPT反代服务

OpenAI提供了两种访问方式,一种是直接在ChatGPT网页端使用的Access Token方式,这种方式可以免费使用GPT-3.5模型,只需要登录即可使用。但缺点是不稳定,且无法扩展。另一种是使用API,注册用户可以获得5美元的赠送额度,但使用完之后就需要付费。这种方式相对更稳定,但缺点是赠送额度较少且存在限流,目前是3条/分钟。

因此,对于那些希望免费使用OpenAI GPT-3.5模型的用户来说,选择Access Token方式是比较好的选择。但是需要解决的问题是不稳定以及可能IP被封禁的问题。为了解决这些问题,我们可以自建反向代理服务来提高稳定性,并保护我们的IP地址不被OpenAI封禁。也有一些公共的反向代理服务可以选择使用,但是很不稳定,因为它们是免费共享的。所以自建反向代理服务是一个不错的选择

如果部署或者配置过程出现问题或不懂的地方,请先搜索历史issue或者加TG交流群

ChatGPT-Porxy一键部署

如果自己安装觉得麻烦,可以使用我提供的一键部署脚本! 脚本目前已实现基础环境安装、所需组件依赖部署、镜像版本自动更新、403|401|429检测邮箱告警(使用QQ邮箱会被Tencent邮箱服务拦截)、uptime-kuma监控等功能!

  • 说明:目前脚本适用于CentOS 7\8\9、RHEL-8\9、Ubuntu、debian以及opencloudos系统;运行脚本需要确保网络环境稳定(确保系统所需组件可以正常下载)。
# 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)"

ChatGPT-Porxy手动部署

1、环境说明

特别说明:目前这个项目,经过多个版本迭代之后比较稳定;目前可以一个服务多人共用

2、部署docker

  • 设置一个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

3、部署docker-compose

(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

4、部署ChatGPT反代

4.1、创建工作目录

mkdir -p /data/go-chatgpt-api && cd $_

4.2、创建部署清单

GPT-4 相关模型目前需要验证 arkose_token,请自行搭建解决!参考项目:xyhelper-arkose-v2xyhelper-arkose-v3

服务器直连或通过代理可正常访问ChatGPT

  • 如果你的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   # 可选,将容器加入主机网络模式,即与主机共享网络命名空间;上面的端口映射将失效
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      - TZ=Asia/Shanghai
      - PROXY=   # GO_CHATGPT_API_PROXY=:可配置科学上网代理地址,例如:http://clash_vpsIP:7890;注释掉或者留空则不启用
      - ARKOSE_TOKEN_URL=
      - BX=
      - BX_URL=
      - OPENAI_EMAIL=
      - OPENAI_PASSWORD=
      - CONTINUE_SIGNAL=  # CONTINUE_SIGNAL=1,开启/imitate接口自动继续会话功能,留空关闭,默认关闭
    restart: unless-stopped

基于Cloudflare WARP模式

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   # 可选,将容器加入主机网络模式,即与主机共享网络命名空间;上面的端口映射将失效
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      - TZ=Asia/Shanghai
      - PROXY=socks5://chatgpt-proxy-server-warp:65535
      - BX=
      - BX_URL=
      - OPENAI_EMAIL=
      - OPENAI_PASSWORD=
      - CONTINUE_SIGNAL=
    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

4.3、运行容器服务

docker-compose up -d

# 检查运行的容器;确保容器状态为UP
docker ps

# 检测容器映射到宿主机的监听端口是否监听
ss -tnlp|grep 8080

4.4、检查是否正常

  • go-chatgpt-api需要初始化启动需要耐心等待
# 查看容器日志是否运行正常
docker logs -f go-chatgpt-api
  • 出现下图中 Service go-chatgpt-api is ready. 则表示服务可正常使用了

4.5、容器镜像更新

# 停止
docker-compose down

# 拉取新镜像
docker-compose pull

# 启动
docker-compose up -d

5、项目接入自建反代

接口更新

ChatGPTUnofficialProxyAPI(accessToken)
API_REVERSE_PROXY=http://127.0.0.1:8080/chatgpt/backend-api/conversation
  • 现在我们访问chatgpt-web,查看是否可以正常使用

  • 同样日志返回请求结果正常

ChatGPTAPI(APIKEY)
OPENAI_API_BASE_URL=http://127.0.0.1:8080/platform
# ==== OpenAI 部分开始
[openai]
# OpenAI 相关设置
# 自定义 ChatGPT 的 browserless 接入点
# 自 3月9日 开始,不设置此项将无法正常使用 browserless 模式下的网页版 ChatGPT
browserless_endpoint = "http(s)://你的服务地址或者IP/chatgpt/backend-api/"
CHATGPT_BASE_URL = "http(s)://你的服务地址或者IP/chatgpt/backend-api/"
http://go-chatgpt-api:8080/imitate

部署总结

目前使用发现,只要确保节点稳定或者国内服务器配置的代理地址稳定(没有被opeai封锁),那么就可以正常使用。

问题总结

1、ERRO[00xx] Access denied

  • 问题描述:按照步骤部署起来了,但是查看go-chatgpt-api日志提示ERRO[0015] Access denied
  • 问题原因:大概率你的VPS IP不干净或者使用的国内服务器;如果使用的代理,那么进入到容器查看下IP是啥或者更换个代理节点
docker exec chatgpt-proxy-server curl -x socks5://代理 ipinfo.io

2、Failed to handle captcha: timeout

  • 问题原因:这个错误就是处理不了验证码
  • 解决方法:重启 api 恢复正常;先 down 再 up,不能 restart

3、pthread_create: Operation not permitted (1)

  • 问题原因:是由于 Docker 容器的安全限制导致的,container内的root只是外部的一个普通用户权限,所以会出现这个问题
  • 问题解决:docker-compose.yml 添加参数 privileged: true

4、ChatGPT error 404: {"errorMessage":"[object Object]"}

  • 问题原因:如果你更新到了新版本,那么接口需要进行更改
  • 解决方法:
http://127.0.0.1:8080/chatgpt/backend-api/conversation

5、Connection refused

  • 问题原因:accesstoken过期或者账号被封禁
  • 问题解决:重启获取新的accesstoken,或者注册新账号

6、ChatGPTUnofficialProxyAPI.sendMessage: conversationId and parentMessageId must both be set or both be undefined

  • 问题原因:有可能你是api和token同时使用,并且在同一个会话
  • 问题解决:切换新的会话;或者把会话清除掉

7、ERRO[0000] Looks like you have bean blocked

  • 问题原因:字面意思,你的VPS或者节点IP被openai封锁了,无法访问;ping通不代表就可以正常访问
  • 问题解决:(1)更换IP;(2)使用warp

ChatGPT WEB项目一键部署脚本

chatgpt-web一键部署脚本

推荐文章

更多学习教程请关注 浅时光博客