大家好!沉寂了3年多,香菇肥牛博客终于要更新啦!
如今,ChatGPT等AI平台在我们的日常生活中得到了越来越广泛的应用。今天我就来介绍一下如何搭建自己的一站式多模型AI平台。本文作者为香菇肥牛,原文链接为https://qing.su/article/linux-ai-platform-with-coai.html,转载需注明原文链接。谢谢大家的支持!
和官方网站相比,自己搭建的多模型平台有着如下显著优势:
- 可以调用最新版本的模型,且价格更低。以ChatGPT为例,每月的订阅会员是$20刀或者$200刀。而自己搭建的平台是按次付费,除非是用量特别高,否则肯定是比每个月的订阅会员便宜的。
- 可以整合多模型,比如GPT, Claude, MidJourney, 月之暗面,等等,按需选择即可,无需在每个平台上分别开会员。
- 更方便地在家人和朋友间共享。
- 更好地自定义预设会话等等。
国内外的一站式多模型AI平台程序有很多种,今天我们介绍ChatNIO/COAI这款国产程序。COAI免费开源(当然它也有付费版,不在讨论范围内),支持国内外各类大语言模型厂商和自行添加新模型,支持上游中转API,有完善的用户管理机制,拥有(我认为)不错的用户使用界面。而且它的会话分享功能做得很不错。
COAI可以使用docker-compose一键搭建(https://github.com/coaidev/coai)。但是,出于一些后续源码修改及功能自定义的需求,我这里选择编译安装部署。如果没有这类需求,也可以直接用Docker (参考链接),这里我就不再介绍了。
本次部署环境为Ubuntu 24.04 LTS. 安装运行时内存占用仅约为700 MB左右,但是编译过程中需要3 GB左右的内存;如果内存不足,请自行添加足够的SWAP,防止编译失败。
1. 安装配置MySQL和Redis
COAI需要用到MySQL和Redis. 首先,安装Redis.
1 2 3 4 5 6 7 8 | apt-get install lsb-release curl gpg git curl -fsSL https://packages.redis.io/gpg | gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg chmod 644 /usr/share/keyrings/redis-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/redis.list apt-get update apt-get install redis service redis-server start systemctl enable redis-server |
安装完毕后,检测一下是否正常运行。
接下来,安装MySQL. 需要注意,Ubuntu 24.04默认的MySQL版本是8.x,部分SQL指令和MySQL 5.x有所差异(比如不能用GRANT指令新建用户、需要先新建用户再GRANT)。
1 | apt-get install npm golang-go mysql-server |
安装完毕后执行下面的命令,进行一些安全设定;全部选择Yes即可。
1 | mysql_secure_installation |
执行完毕后,先进入数据库:
1 | mysql -u root -p |
然后,设置root用户的密码,并且新建数据库coaidb和用户coaiuser给COAI使用。请将password和password2替换为你自己要设定的密码。
1 2 3 4 5 6 | ALTER USERER 'root'@'localhost' IDENTIFIED BY 'password'; CREATE DATABASE coaidb; CREATE USER 'coaiuser'@'localhost' IDENTIFIED BY 'password2'; GRANT ALL ON coaidb.* TO 'coaiuser'@'localhost'; FLUSH PRIVILEGES; QUIT; |
这样,Redis和MySQL就安装设定完毕了。
2. 编译安装COAI
下面,我们开始从Github下载源码并编译安装COAI. 首先下载源码。
1 2 3 4 | cd /opt git clone https://github.com/coaidev/coai.git cd coai cp config.example.yaml config.yaml |
编辑config.yaml文件,填入刚才设置的MySQL数据库信息。SECRET那里随便填写一串字符作为密钥。编辑完成后,开始编译安装。
1 2 3 4 5 6 | cd app npm install -g pnpm pnpm install pnpm build cd .. go build -o coai |
如果没有报错,会在当前目录中(/opt/coai/)生成一个名为coai的可执行文件。我们用SystemD来运行这个程序。编辑文件/etc/systemd/system/coai.service, 输入下面的内容:
1 2 3 4 5 6 7 8 9 10 11 12 | [Unit] Description=COAI Service [Service] Type=simple User=root WorkingDirectory=/opt/coai ExecStart=/opt/coai/coai Restart=always [Install] WantedBy=multi-user.target |
保存退出,然后运行并设置开机启动。
1 2 3 | systemctl daemon-reload systemctl start coai.service systemctl enable coai.service |
这样,COAI程序就安装好了。此时,我们访问http://Server_IP:8094,就能打开COAI的界面了;如果打不开,说明安装有问题,可以查看chatnio.log排查。
3. 设置Nginx反代
COAI安装在服务器的8094端口;因此,我们可以安装配置Nginx来反代这个COAI实例,并且使用Let’s Encrypt来设置安全证书。将你的域名example.com解析到服务器的IP上,然后安装Nginx.
1 2 | apt-get install nginx certbot python3-certbot-nginx -y cp /opt/coai/nginx.conf /etc/nginx/conf.d/coai.conf |
然后编辑/etc/nginx/conf.d/coai.conf,在listen 80;下面添加一行
1 | server_name example.com |
保存退出,重新加载Nginx使配置生效。
1 2 | nginx -t service nginx reload |
最后,配置Let’s Encrypt安全证书。
1 | certbot --nginx --redirect --hsts --staple-ocsp -d example.com |
这样,就配置好了Nginx反代与SSL. 此时,用浏览器访问https://example.com,就能直接打开COAI的界面了。
4. 安装文件解析服务(可选)
搭建的COAI平台依赖额外的文件解析服务来分解用户上传的文件(图片, PDF, Excel等等)。我们可以选择用默认的第三方文件解析平台,缺点是服务器距离较远会导致解析速度慢,且上传的文件在第三方中转,可能会有安全性考虑。因此,我们也可以在同一台服务器上部署这个轻量的文件解析服务。
文件解析服务的部署也可以用Docker (https://github.com/zmh-program/blob-service),或者编译安装。这里简单介绍下编译安装。
在新版本的Debian/Ubuntu中,Python一般在虚拟微环境(VENV)中部署,而不是在系统全局中部署。
1 2 3 4 | apt-get install python3-pip python3 python3-dev python3.12-venv cd /opt git clone --branch=main https://github.com/Deeptrain-Community/chatnio-blob-service cd chatnio-blob-service |
在文件夹中生成Python3微环境,并在微环境中安装依赖:
1 2 | python3 -m venv python-venv ./python-venv/bin/pip3 install -r requirements.txt |
编辑文件/opt/chatnio-blob-service/install.sh,将其中第9行的uvicorn执行路径替换为微环境中的uvicorn执行路径。在第9行开头添加/opt/chatnio-blob-service/python-venv/bin/.
1 | /opt/chatnio-blob-service/python-venv/bin/uvicorn main:app --host 0.0.0.0 --port 8100" > start.sh |
然后开始安装:
1 2 | chmod +x install.sh ./install.sh |
此时,访问http://Server_IP:8100,如果能打开如下的界面,说明安装成功了。
5. 安装联网搜索服务(可选)
据官方说明,使用联网搜索服务可以提升AI回答的质量。然而,实际使用过程中,我并没有体会到有什么变化。因此,这一部分也是可选的。下面是简易的SearXNG元搜索引擎的安装步骤;也可以直接通过Docker安装(https://github.com/zmh-program/searxng)。
1 2 3 4 | cd /opt git clone https://github.com/searxng/searxng.git searxng cd searxng ./utils/searxng.sh install all |
安装完毕后,打开http://Server_IP/searxng,如果能打开如下的界面,说明安装成功了。
6. 配置和使用COAI
至此,全部安装完毕。下面我来简要介绍一下COAI的配置和使用。
首先,我们用使用用户名root, 密码chatnio123456登录,并进入管理后台。
点击左侧“系统设置”,然后“修改Root密码”。
在“后端域名”中,填写自己的服务器域名https://example.com/api
如果之前安装了文件解析服务,那么找到“文件解析服务”这一行,填写地址http://127.0.0.1:8100.
如果之前安装了联网搜索服务,那么找到“搜索接入点”这一行,填写地址http://127.0.0.1/searxng.
然后,我们来添加各种AI平台渠道。这里以ChatGPT为例,首先在官网上申请获得API,或者去第三方API中转平台拿到API. 一般来说,第三方中转平台的价格比官方更低,我用的是OAIBEST这个平台,可以点击下面的链接注册https://api.oaibest.com/register?aff=JrwM;注册后可以免费获得$1的金额用来体验($1可以用很久了)。
拿到API之后,在COAI后台,点击左侧“渠道设置”,选择“创建渠道”。然后,填写想要使用的模型,比如gpt-4o-latest, gpt-4o-mini, 等等。需要注意的是,o1和o1-mini模型的请求参数不一样,不能和其他模型一起添加,需要分开添加;我将在下一节单独介绍。在“密钥”中,填写从官方或者中转平台取得的API Key. 然后,在“接入点”中,填写API接入点。如果是官网API,就写https://api.openai.com; 如果是OAIBEST,就填写https://api.oaibest.com. 然后点击“确认”保存。可以根据自己的需求来设定需要接入的所有模型,比如Claude-3.5, MidJourney, 月之暗面,文心一言,等等。
接着,点击左侧“模型市场”,之前添加的模型会出现在“部分模型未使用”的列表中。依次点击后,模型会出现在下方使用区;可以自行更改顺序、说明、图标等。保存并退出。
再点击左侧“价格设定”,选择模型并且设定点数消耗,保存并退出。
最后,点击用户管理,选择自己用户右边的“操作” – “点数操作”,给自己设定点数余额。
至此,我们的多模型一站式AI平台就搭建完毕,可以自由使用了。下面是一些简单示例。
7. 配置o1-preview和o1-mini模型
前面提到,OpenAI/ChatGPT的o1-preview和o1-mini模型的API将max_tokens参数替换成了max_completion_tokens参数,这会导致API请求失败。在COAI程序更新彻底解决这一问题之前,我们需要使用额外的方式来解决修改COAI向接入点提交的请求。这里,我们使用第三方小工具o1convert来解决这个问题。
1 2 3 4 | docker run -d --name o1convert \ -p 8000:8000 \ -e SERVER_URL=https://api.openai.com \ htnanako/o1convert:latest |
装好这个docker之后,再回到COAI后台,在渠道设置中添加一个新的渠道,接入点填写http://127.0.0.1:8000,即可使用o1-preview和o1-mini模型了。
这样,我们完整地搭建部署了多模型一站式AI平台,并配置了API. 如果有任何疑问,欢迎在这里留言讨论。本文作者为香菇肥牛,原文链接为https://qing.su/article/linux-ai-platform-with-coai.html,转载需注明原文链接。谢谢大家的支持!