0、前言
ChatGPT 发布已经好几个月了,热度依然不减,然而由于网络原因一开始我并没有找到合适的服务器访问,后面又卡在了短信验证码,SMS Activate
提供的印度、马来西亚、印尼等手机号完全接不到码,于是我只好求助万能的群友,用他们搭建的镜像站玩玩。
后来由于他们额度用尽,镜像站都关了或者不对外开放了。这时 @IURT 和我说他想搞台服务器专门用来上 GPT,正好我会,于是我们一拍即合,搞了ChatGPT-Web
和ChatGPT-Next-Web
两个镜像站用于访问GPT。
1、介绍
有两个最火的 Docker 镜像:ChatGPT-Web和ChatGPT-Next-Web。
介绍可以自行去 GitHub 看。
2、安装
默认使用 API Key 调用,如需使用 Access Token 翻到本文 3.2 配置部分。
2.1、Web
执行:
1 | docker run -d \ --name chatgpt-web \ -p 3002:3002 \ --env OPENAI_API_KEY=sk-xxxxxx \ --env OPENAI_API_BASE_URL=https://api.openai.com \ --env AUTH_SECRET_KEY=ChatGPTWebPassword \ chenzhaoyu94/chatgpt-web |
OPENAI_API_KEY
:必选,替换为自己的密钥,GPT 3.5 调用收费但是有 5 美元限额。OPENAI_API_BASE_URL
:可选,替换为自建或社区的反代官方 API 接口,适合无法访问官方 API 的服务器使用。AUTH_SECRET_KEY
:可选,如果不想自己的镜像站被发现然后滥用,最好设置一下,改成自己想要设的密码,可以多个:密码1,密码2,密码3
。
启动后反向代理127.0.0.1:3002
。
2.2、NextWeb
执行:
1 | docker run -d \ --name chatgpt-next-web \ -p 3000:3000 \ -e OPENAI_API_KEY="sk-xxxxxx" \ -e CODE="ChatGPTWebPassword" \ yidadaa/chatgpt-next-web |
OPENAI_API_KEY
替换为自己的密钥,CODE
改成自己想要设的密码。
启动后反向代理127.0.0.1:3000
。
3、配置
3.1、屏蔽爬虫
按理来说安装完之后就可以 Enjoy it!
,但是为了防止被发现然后刷量还是配置一下规则吧。
在 Nginx 配置文件中加入:
此处内容需要评论回复(自动审核)或加入 QQ 技术交流群(立即获得内容)后方可阅读。赞助(二维码在文章下方)后联系作者可一次性解锁所有(包括之后的新文章)。
如果用域名访问,并且使用 DNSPod 等支持分地域解析的,可以添加默认主机为
0.0.0.0
,境内主机为实际 IP,直接杜绝境外访问。使用了宝塔防火墙等可以设置禁止境外、禁止爬虫等。
3.2、使用非官方 API
ChatGPT-Web 支持使用非官方反代 API + Access Token 访问,会比官方 API 更加聪明,理论上和直接使用浏览器登录聊天无区别。
对比:
比较项目 | 官方 API | Access Token(非 Plus) |
---|---|---|
基本要求 | OpenAI帐号 绑定国外的虚拟信用卡 | 仅OpenAI帐号 |
收费情况 | 使用收费 | 免费 |
基础Prompt | 支持 | 不支持 |
超参数支持 | Temprature Top_p | 不支持 |
单位时间请求数 | 较高,适合多人使用 | 较低,适合个人使用 |
响应速度 | 较快(gpt-3.5-turbo) | 较慢(gpt-3.5) |
Token 长度 | 较长 | 较短 |
绕过Cloudflare的反向代理 | 不需要 | 需要 |
稳定性 | 较高 | 较低(社区代理) 较高(自建代理) |
3.2.1、使用社区代理
1 | docker run -d \ --name chatgpt-web \ -p 3002:3002 \ --env OPENAI_ACCESS_TOKEN=eyJxxxx \ --env API_REVERSE_PROXY=https://ai.fakeopen.com/api/conversation \ --env AUTH_SECRET_KEY=ChatGPTWebPassword \ chenzhaoyu94/chatgpt-web |
OPENAI_ACCESS_TOKEN
:必选,浏览器登录chat.openai.com
后访问
https://chat.openai.com/api/auth/session
即可获得,但是隔一段时间会过期,推荐搭配此项目使用:
https://github.com/acheong08/OpenAIAuth
API_REVERSE_PROXY
:可选,如果不知道可以删去此项或保持默认。
3.2.2、使用自建代理
首先使用服务器执行
1 | curl -v https://chat.openai.com |
看看是否被屏蔽,如果被屏蔽可以使用如下方法,连接至 Warp+ 解锁。
如果访问正常,新建docker-compose.yml
:
此处内容需要评论回复(自动审核)或加入 QQ 技术交流群(立即获得内容)后方可阅读。赞助(二维码在文章下方)后联系作者可一次性解锁所有(包括之后的新文章)。
如果被屏蔽,改为如下配置文件:
此处内容需要评论回复(自动审核)或加入 QQ 技术交流群(立即获得内容)后方可阅读。赞助(二维码在文章下方)后联系作者可一次性解锁所有(包括之后的新文章)。
network_mode: host
:如果启用该参数,之后的 ChatGPT-Web 设置反代地址时,可以使用127.0.0.1:8080
,否则要使用Docker 网络宿主机 IP:映射端口
,例如默认情况下是172.17.0.1:8080
。但是启用后使用的端口就是 8080 且无法自定义。填写完配置文件后,在该目录下执行:
1 | docker-compose up -d |
即可启动容器。
之后,启动 ChatGPT-Web:
1 | docker run -d \ --name chatgpt-web \ -p 3002:3002 \ --env OPENAI_ACCESS_TOKEN=eyJxxxx \ --env API_REVERSE_PROXY=http://127.0.0.1:8080/api/conversation \ --env AUTH_SECRET_KEY=ChatGPTWebPassword \ #--network=host \ chenzhaoyu94/chatgpt-web |
network=host
:如果在反代 API 的配置文件中未启用network_mode: host
,在此处使用network=host
同样可以将反代地址设置为127.0.0.1
,否则为 Docker 宿主机 IP。但是这样映射出来的端口就是 3002 且无法自定义,注意更改 Nginx 反向代理配置文件。
到这里就完成了自建 API 的搭建和对接。
Docker建站(十八)ChatGPT-Web:搭建专属 OpenAI 镜像站
评论