因为运用 ChatGPT 有着极为严苛的环境要求,不仅要求有魔法,还要有特定地区的魔法,并且还得开大局魔法,导致挺长时间以来,我都靠着镜像站来占廉价。
但随着越来越的多的镜像站 404 后,尽管我还能够拜访,但团队里的挺多人并没有魔法,为了方便团队成员的运用,我寻思自己搭建一套,这样咱们不必魔法也能够自在运用 ChatGPT,而且相当安稳。
1. 全体思路
预备一台国度之外的服务器,这台服务器要满意两个要求
- 能流畅调用 Open API的接口,不会因为地区问题被禁用
- 服务器的 IP 不在国度的黑名单上(咱在国度之内才干拜访)
然后在这台服务器上,布置咱们的 web 运用,并装备上咱们的 API Key。
2. 环境预备
服务器我运用的狗云的,线路优质,关键价格廉价,假如你没有其他更好的挑选,能够考虑下。
过程很简单:
1、登陆/注册狗云:www.dogyun.com/?ref=230330
2、实名认证:有必要过程,认证后才购买
3、充值:和一般的网购逻辑不同,狗云是先充值再消费
4、购买:这个最重要,下面详细说一下
狗云上的服务器有两种:经典云和弹性云
它们有以下几个差异:
- 布置方法:经典云服务器是基于传统的物理服务器架构实现的,你需求需求通过操控台或 API 创建并分配固定数量的 CPU、内存和存储资源。而弹性云则是基于虚拟化技术构建的云服务器,它能够依据你的实践需求动态调整核算和存储资源。
- 灵敏性:因为经典云服务器的资源分配是静态的,因而无法依据事务需求进行快速扩展或缩小,使得它的灵敏性相对较为有限。而弹性云则能够在几分钟内调整核算和存储资源,以满意不同事务场景下的需求改变。
- 费用:经典云服务器一般比弹性云更廉价,因为它们的资源是固定的,办理本钱也较低。但是,在实践的运用中,假如你需求频频地调整资源,则可能需求购买更多的经典云服务器,这将增加你的运用本钱。而弹性云则能够依据实践的资源需求付费,能够更好地操控运用本钱。
- 安全性:经典云服务器因为缺少弹性云的冗余和高可用性功能,因而可能会存在数据丢失和服务中断等危险。弹性云则具有多种安全和备份机制,能够提供更加牢靠和安稳的云核算服务。
总的来说呢,弹性云具有更加灵敏、高可用和安全的优势,但相对来说也更加昂贵。假如你需求安稳和牢靠的核算资源,主张挑选弹性云;假如你需求相对较低的本钱和办理复杂度,能够挑选经典云服务器。
我这边挑选的是弹性云,节点挑选丑国的,满意以上两个条件
装备挑选最低装备的,横竖不够用的话还能够扩展。
体系我挑选 Ubuntu20 的,没有挑选 CentOS,主要 CentOS 体系相对较老,怕遇见一些包的问题,增加布置难度。
总的算下来只需求一个月只需求 45 块钱的根底费用,流量有超越,要再额外扣费。ChatGPT 运用主要是文字,一般是够用的。
机器创建好后,需求等待一段时间才干发动,能够在操控台上看到公网 ip 和暗码,没有写明 ssh 端口,那就是 22
3. 下载代码
ChatGPT 的镜像源码,我挑选 yuezk/chatgpt-mirror
,github 上也有其他的模板,没有仔细去比照差异,只需能用即可。
运用 git 直接下载 gpt 镜像网站的代码
git clone https://github.com/yuezk/chatgpt-mirror.git
进入 chatgpt-mirror 目录
cd chatgpt-mirror
并新建一个 .env
文件,输入 OPENAI_API_KEY:能够前往 API-Keys(platform.openai.com/account/api… 生成
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
4. 装置依赖
chatgpt-mirror 的运转需求有 nodejs 环境,因而咱们要先装置一下nodejs 相关工具
1、装置 Node.js:首要,你需求装置 Node.js。这是因为 pnpm 是一个 Node.js 包办理器。你能够运用以下指令装置 Node.js:
sudo apt update
sudo apt install nodejs
2、装置 npm:pnpm 的装置需求运用 npm 指令,因而需求装置 npm 和 npx。
sudo apt install npm
sudo npm install -g npx
3、装置 pnpm:现在就能够运用 npm 来装置 pnpm。只需求运用以下指令即可:
sudo npm install -g pnpm
为了防止呈现一些问题,咱们把上面装置的 npm 和 pnpm 都更新至最新版别
首要晋级 npm
- 装置 n 模块:n 是一个 Node.js 版别办理器,能够协助你方便地装置和办理不同版别的 Node.js。
- 装置最新版别的 Node.js:装置完 n 模块后,就能够在终端中运转以下指令来装置最新版别的 Node.js:
# 装置 n 模块:n 是一个 Node.js 版别办理器,能够协助你方便地装置和办理不同版别的 Node.js
sudo npm install -g n
# 装置完 n 模块后,就能够在终端中运转以下指令来装置最新版别的 Node.js
sudo n stable
再晋级 pnpm
sudo npm update -g pnpm
5. 发动服务
全部预备就绪后,就能够运用如下指令来发动 web 服务
# 装置依赖
$ pnpm install
# 编译
$ pnpm run build
# 发动
$ pnpm run start:prod
在你没有魔法的环境下直接拜访 http://ip:3000 就能够看到了解的页面了,大功告成。
因为上面的目录是在当时终端运转的,当终端断开后,进程也会退出,因而最好运用 nohup 将其放在后台运转
nohup pnpm run start:prod > server.log 2>&1 &
6. 优化事项
经过以上的过程,咱们现已拥有了一个私家的 ChatGPT 网站,只需你不对外推行,大概率就不会被 Q
拉起网站后,引荐再做一些优化:
- 域名拜访:购买一个域名,运用 nginx 进行反向署理
- 进程看护:能够运用 systemd 或 supervisord来看护进程
不过因为我是内部小规模运用,并没有对外推行的打算,因而直接运用 ip+端口的方法进行拜访,也省下了买域名的费用。
其他地址
- Token 查询:platform.openai.com/tokenizer
- /post/720624…