ChatGPT3.5 API私有化部署教程

释放双眼,带上耳机,听听看~!
本教程介绍了如何在Linux环境下部署ChatGPT3.5 API的私有化版本,为想要深入了解AI技术的小伙伴提供了详细的部署步骤和配置说明。

参考文档

GitHub – 869413421/chatgpt-web: 基于ChatGPT3.5 API实现的私有化web程序
systemd 自动重启挂掉的 golang 进程 – 运维 – 大象笔记

背景

随着AI技术的不断成熟,加上ChatGPT如火如荼的发布新版本迭代更新,人工智能的热度也升温到史无前例的高度。
我们有理由相信,现在身边还不愿主动去接触这项技术,深入了解的小伙伴,在不久的将来,一定会被时代淘汰,至少幸存下来的成本会比我们低很多。
言归正传,前段时间注册了ChatGPT的账号后,也尝试部署了Telegram版本的ChatGPT聊天功能,颇为成功,当时用的还是OpenAI的API。
最近想着既然ChatGPT发布了自己的API,民间会不会有些新的动作?
果不其然,网上已经有大神完成了私有的版本,这使得部署在本地,训练属于自己的AI成为可能!

部署

本地化部署起来并不难,有些网络和Linux基础的童鞋会更加容易些。

准备一个满足要求的Linux系统环境

我这里用的是以下环境:CentOS Linux release 7.9.2009 (Core)
这里假定读者都是没有安装OS的门槛的,同时也有自己可用的代理套件,就不再赘述。

进行部署

  1. 使用git将工程文件clone下来,进入到目录后,复制一份配置文件出来
git clone https://github.com/869413421/chatgpt-web.git
cd chatgpt-web/
cp config.dev.json config.json
  1. 编辑配置文件config.json
    粘贴入以下信息,这里的api_key需要替换成你自己的。
    port和proxy都是可以自行定义的。显然在国内不定义proxy基本上是没法用的。
{
  "api_key": "sk-tnsMqcfmpyz6kExx5EuR88TbkFJ8OUzsCPyH2oIci",
  "port": 9999,
  "listen": "",
  "bot_desc": "Kiss me more.",
  "proxy": "http://10.11.100.44:1080",
  "model": "gpt-3.5-turbo-0301",
  "max_tokens": 512,
  "temperature": 0.9,
  "top_p": 1,
  "frequency_penalty": 0.0,
  "presence_penalty": 0.6,
  "auth_user": "",
  "auth_password": ""
}
  1. 安装go编译语言工具
    由于该项目使用go语言编写,所以需要有相应的语言工具来执行程序。
yum install go
go mod download github.com/alecthomas/kong
go get github.com/869413421/chatgpt-web/bootstarp
go get github.com/869413421/chatgpt-web/app/http/controllers
  1. 执行以下命令即可启动服务
    go run main.go
    首次执行后,命令会卡10秒左右,然后看到这样的输出画面

ChatGPT3.5 API私有化部署教程
启动后,就可以在本地浏览器里通过URL进行访问。
我这里Server的IP为10.21.100.94,那么网址就是http://10.11.100.19:9999

ChatGPT3.5 API私有化部署教程
成功访问后,在后台是可以看到反馈的

ChatGPT3.5 API私有化部署教程

设置为系统服务

每次都用那个命令启动服务,会比较繁琐。
我们一般都习惯于使用systemctl start/stop service_name来开启和停止服务。

这里可以将执行语句定义为一个Service。
新建服务。
touch /lib/systemd/system/chat.service
然后编辑:
vi /lib/systemd/system/chat.service

[Unit]
Description=ChatGPT Test

[Service]
User=root
Group=root
Type=simple
Restart=always
RestartSec=20
StartLimitInterval=0
Nice=10
WorkingDirectory=/root/downloads/chatgpt-web/
ExecStart=/usr/lib/golang/bin/go "run" "https://b2.7b2.com/root/downloads/chatgpt-web/main.go"
StandardOutput=null
TimeoutStartSec=30

[Install]
RequiredBy=multi-user.target

注意:这里的WorkingDirectory和ExecStart是我自己的目录,你需要修改为你存放项目文件的目录。

这里的几个参数可以解释下:

Restart=always 进程挂了就重启
RestartSec=20 20秒检查一次
StartLimitInterval=0 无限次重启,忽略失败次数

最后重启守护进程,并且重启服务,并设置为自启动。
systemctl daemon-reload

systemctl restart chat

systemctl enable chat
查看状态可以看到已经Active,成功启动。当然也可以用netstat来验证下端口。
systemctl status chat

ChatGPT3.5 API私有化部署教程

Troubleshooting

当然在配置过程中,因为种种环境因素等原因,大家配置未必都会一样顺利。
这里列举一些常见的问题,希望对大家有所帮助。

  • 执行命令go run main.go后,网页依然打不开

这时可以先在Server上执行该命令查看服务对应的端口是否正常监听着:netstat -tnlp | grep 9999
如果没有结果,那就是服务压根没启动成功。如果有,则往下阅读

在访问网页的系统里用以下命令测试:telnet 10.21.100.94 9999
如果有反馈结果,则说明没问题,如果显示任何错误提示,例如connection refused或timeout之类等等,说明访问不到服务器。

一般可能的原因是防火墙挡住了。你可以粗暴地直接关闭防火墙来验证
systemctl stop iptables

systemctl stop firewalld
上面的两条必有一条生效。
验证后,可以通过以下命令添加防火墙策略并保存。

iptables -I INPUT 6 -p tcp --dport 9999 -j ACCEPT

iptables-save > /etc/sysconfig/iptables
注意,不同的OS版本,保存配置的命令会有所不同。

  • 在前端网页访问时,输入对话提示超时错误
    错误语句为:请求出错,Post “ api.openai.com/v1/chat/com… “: dial tcp 185.45.6.57:443: connect: connection refused

这里的IP显然是ChatGPT的Server IP

ChatGPT3.5 API私有化部署教程

原因是我们没有设置Proxy。这里需要设置为你自己的代理的IP。
设置格式语法如下:
"proxy": "http://10.21.100.46:1080",
"proxy": "socks5://127.0.0.1:10808"

视频教程

【本地化部署Chat GPT自己的AI小机器人 小白也能看懂的教程-哔哩哔哩】 b23.tv/lGnlb9J

Ok,就介绍到这儿,希望对大家能有帮助。

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

使用DALL-E 3进行角色创建和图像编辑教程

2023-12-20 12:38:14

AI教程

ChatGLM2-6B:清华大学开源的中英双语对话语言模型

2023-12-20 12:45:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索