ChatGPT / 系统运维

自建ChatGPT反向代理服务器

浅时光博客 · 4月18日 · 2023年 · 8.8w 次已读

一、为啥需要自建反代

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

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

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

ChatGPT Access Token和API的区别

ChatGPT Access Token 和 API 都是用于与 ChatGPT 进行交互的重要工具。但它们之间有以下几个不同点:

  1. 功能不同:Access Token 是一种身份验证令牌,用于获取访问 ChatGPT 的授权。而 API 则是一组预定义的请求和响应规则,用于获取 ChatGPT 响应、操作数据等。
  2. 使用方式不同:Access Token 通常是一个字符串,包含在每个 API 请求中,以验证用户的身份。而 API 是一组代码或库文件,可由开发人员使用特定的编程语言直接调用。
  3. 安全性不同:Access Token 主要用于身份验证和授权,确保只有授权用户才能访问特定资源。而 API 可能会暴露敏感信息,因此需要谨慎处理,以确保用户数据的安全。
  4. 复杂度不同:Access Token 简单易用,只需将其包含在 API 请求中即可。而 API 包括多个端点、参数和规则,需要更多的实现细节和技术知识。
  5. 互相依赖:Access Token 通常是访问 API 的前提条件,没有有效的 Access Token,则无法使用 API 访问 ChatGPT。反过来,API 是 Access Token 的基础之一,没有 API,Access Token 无法实现其功能。

如果自己安装觉得麻烦,可以使用我提供的一键部署脚本!底部有脚本安装命令。脚本目前已实现基础环境安装、所需组件依赖部署、镜像版本自动检查更新、401|429|403检测邮箱告警等功能!

之后更新请关注项目地址:https://github.com/dqzboy/ChatGPT-Porxy

二、所需环境组件安装

1、环境说明

  • 一台VPS,规格最低配 1C1G
  • 可以访问到 chat.openai.com,或者国内服务器实现科学上网也可以,可以参考下面的文章
  • 部署docker和docker-compose

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

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

启动并设置开机自启
mkdir /data/docker
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

三、部署ChatGPT反代

这里使用的chatGPT反代项目地址:https://github.com/linweiyuan/go-chatgpt-api

目前已经支持多次对话

1、创建工作目录

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

2、创建部署清单

  • 服务器直连或通过代理可正常访问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=
    restart: unless-stopped
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=
    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

3、运行容器服务

docker-compose up -d

# 检查运行的容器
docker ps

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

4、检查是否正常

docker logs -f go-chatgpt-api

四、项目使用自建反代

接口更新

ChatGPTUnofficialProxyAPI(accessToken)

  • 现在我们访问chatgpt-web,查看是否可以正常使用

ChatGPTAPI(APIKEY)

OPENAI_API_BASE_URL=http://127.0.0.1:8080/platform

注意:如果访问chatGPT-原文链接:https://dqzboy.comweb无法返回信息或者返回报错信息,则查看go-chatgpt-api容器的日志里面是否存在报错

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

五、一键部署脚本

# 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)"

本文作者:浅时光博客
原文链接:https://www.dqzboy.com/13935.html
版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可,转载时请以>超链接形式标明文章原始出处和作者信息
免责声明:本站内容仅供个人学习与研究,严禁用于商业或非法目的。请在下载后24小时内删除相应内容。继续浏览或下载即表明您接受上述条件,任何后果由用户自行承担。

2 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!

  1. Vega2023-5-13 · 16:04

    感谢分享,根据博主的教程可以实现accesstoekn和api的代理了

  2. 流年2023-5-1 · 20:49

    可以可以,部署起来可以用,多谢