• Stars
    star
    163
  • Rank 222,845 (Top 5 %)
  • Language
    Shell
  • Created about 1 year ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

ChatGPT Proxy

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、项目接入自建反代

接口更新

项目:Chanzhaoyu/chatgpt-web | Kerwin1202/chatgpt-web

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

项目:chatgpt-mirai-qq-bot

browserless_endpoint = "http(s)://你的服务/chatgpt/backend-api/"

项目:moeakwak/chatgpt-web-share

CHATGPT_BASE_URL = "http(s)://你的服务/chatgpt/backend-api/"

项目:Yidadaa/ChatGPT-Next-Web

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一键部署脚本

推荐文章

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