PEANUT996

搭建可直连的ChatGPT镜像站

· Peanuts

写在前面

此教程旨在搭建一个可直连的chatgpt网页站点,只使用免费的ChatGPT额度,而无需使用付费的API key,支持上下文。同样这种方式带来的风险需要自己承担,如使用IP被封锁的原因导致账号被block ,请仔细考虑后决定是否使用本套搭建方案。

准备

  • 服务器 (需要安装 python 3.10+ )
  • 域名(非必需, 如果想要直连则为必需)
  • Open AI 账号
  • GitHub 账号

以上的准备工作不在本次教程的范围内,如需帮助请左转Google 或者直接请求帮助

获取Open AI Account AccessToken

你可以通过登录官方网站,然后从浏览器存储的cookie中提取出access token。不过,这种方法存在一定的风险,而且可能会比较繁琐。

为了方便起见,以下链接提供了一种获取token的方法,来自Pandora作者:获取Token链接。在输入你的账号凭证并点击获取按钮后,你将会得到一个以以下内容开头的token:

eyJhbGciOiJSUzI15cCI6IkpXVCIsImtpZCI6Ik1UaEVOVUpHTkVNMVFURTRNMEZCTWpkJodHInwsadgwzsf...

这个token就是open ai accout的access_token。请注意,该token的有效期为 expires_in: 1209600 秒,意味着在此时间过后需要重新获取,以确保持续使用。

同样在此页面上会同时获得一个 refresh_token 保存这个token就可以自动刷新获取最新的access token, 而无需手动更新配置文件

后端(ChatGPT-Engine)

下载代码&安装依赖

git clone https://github.com/peanut996/chatgpt-engine.git

cd chatgpt-engine/

# 安装依赖
pip install -r requirements.txt

在某些版本的linux发行版上已经不允许直接使用系统的python进行安装依赖,可以使用虚拟环境:

# 创建名为venv虚拟环境
python -m venv venv

# 激活虚拟环境
source venv/bin/activate

编写配置

首先需要准备好配置文件,如下所示:

engine:
  port: 5000 
  debug: false
  host: 127.0.0.1
  chatgpt:
    tokens:
      - "账号:密码:<access token>:<refresh_token>" #这里是以冒号分隔

配置文件详解:

  • port:指定服务要监听的端口号。
  • debug:设置是否启用调试模式。
  • host:指定服务绑定的主机地址。
  • chatgpt:这似乎是一个命名空间,可能包含与ChatGPT集成相关的设置。
    • tokens:这是一个列表,包含用于身份验证的令牌(tokens)。由三部分组成,用冒号分隔:账号、密码、AccessTokenRefreshToken

将上面的配置写入config.yaml 即可

运行

配置文件编写完成后直接使用以下命令即可运行后端:

python main.py

# 也可以使用 '-c' 指定配置文件目录
python main.py -c ./config.yaml

可以如下请求来验证服务是否正确启动:

curl http://localhost:5000/ping

如果响应为pong 则说明服务器启动完毕

nohup可以将服务运行在后台,以便session关闭后仍然能继续访问:

nohup python main.py &

设置代理

因为Open AI对于IP的限制比较严重,所以在无法直接使用的场景下需要设置中转代理

这里推荐使用潘多拉作者的代理:https://ai.fakeopen.com/api/

# 设置环境变量
export CHATGPT_BASE_URL="https://ai.fakeopen.com/api/"
# 启动服务
python main.py

# 或者
CHATGPT_BASE_URL="https://ai.fakeopen.com/api/" python main.py

前端

Vercel托管

首先需要注册Vercel账户并把它链接到自己的Github账户

点击🔗 部署链接 进入vercel的部署界面, 点击Create按钮会自动进行仓库fork

配置环境变量

在仓库fork完毕后,需要填写SERVER_URL 即你自己的后端请求地址

地址格式是 http://$ip:$port

  • ``$ip`是服务器公网地址
  • ``$port`即为服务的端口号默认5000

Eg:一个可能的服务器地址http://47.223.18.9:8000

经验证vercel的edge function 无法直接访问http服务,需要配置上域名启用https , 也可以部署到自己的服务器上

可以使用 https://youdomain/ping 来验证服务器是否能通过公网访问,如果不能正常访问,那么则需要排查服务器的端口是否正确打开,或者云服务商的ACL规则限制,此处不再详细说明

填入服务器地址后点击Deploy按钮后即可自动部署,等待3分钟后,看到如下界面即部署完毕

vercel-domain-option

点击 Continue to Dashboard,能够看到domains下面有一个格式为chatgpt-web-*.vercel.app 的链接,点击后能够访问页面,则说明部署成功! 🎊

配置自定义域名(可选)

vercel自动分配的域名是无法大陆直接使用的,如果想让网页大陆直连,还需要配置自定义的域名

点击Setting - Domains

输入提前准备好的域名, 推荐使用子域名如chat.yourdomain.com 输入完毕后 点击Add

Vercel 需要验证域名的所有权以及配置DNS解析,这里需要前往域名服务商添加TXT/CNAME记录

请自行搜索对应域名服务商的记录添加教程

在验证域名所有权并且CNAME 记录正确添加后,稍等片刻刷新页面看到如下的状态,表示域名绑定完成,此时已经可以使用个人域名访问,且可以关闭所有代理直接访问! success-deploy 🎉 恭喜,一个可直连的ChatGPT镜像站就部署完成了!