前述文章手把手教你打造基于AI的专属知识库(Quivr篇)介绍了基于Quivr的本地知识库构建方案,这里介绍一个国产框架ChuanhuChatGPT,两个框架各有千秋,虽然在知识库构建可能并没有Quivr做的完善,不过集成了联网搜索等、多API Key负载均衡、会话保存等功能,同时也提供多种LLM模型可供选择(在线服务,如GPT3.5/4、MinMax等;本地模型,如ChatGLM、MOSS等),还有类似AutoGPT的川虎助理等功能。
考虑到本地模型对硬件的要求(如GPU),因此本文不包含对本地模型部署的介绍。
省流版
- 方案1:直接复制作者的HuggingFace Space一键部署,前提是注册了HuggingFace,不过在使用过程中发现代码版本过老,因此如需体验最新功能建议自行部署。
- 方案2:基于官方镜像运行
docker run -d tuchuanhuhuhu/chuanhuchatgpt:latest
- 方案3:选择云服务器,从0开始搭建。
- 方案4:选择Docker托管平台部署,本文选择的是方案1提到的HuggingFace Space,只不过需要小改一下,可以理解成方案4是方案1的定制版。
本文主要介绍方案3和方案4。
在本文撰写的过程中,大致调研了下目前市面上流行的Docker托管平台,Heroku已经开始收费模式,Railways也将于2023年8月起取消免费每月5美元额度,其他平台的价格看了下基本也都是每月4美元起。这么一比感觉还是自己买台海外服务器划算,可以同时跑多个服务。这里选择DigtalOcean,当然也可以选择Vultr、腾讯云、阿里云的海外服务器等厂商。
选择海外服务器的原因:虽然ChuanhuChatGPT提供了API代理可以访问GPT服务,但联网搜索使用的duckduckgo等引擎在国内还是无法直接访问的。
独立部署方案-云服务器篇
安装Python3
这里推荐使用conda统一管理Python环境依赖。
1 | wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3.sh |
创建环境并安装依赖
这一步的目的是区分机器内其他环境,推荐通过conda进行环境切换管理。
1 | 取个虚拟环境名 |
修改配置
配置文件为config.json,位于ChuanhuChatGPT目录下。
这里提一下主要修改项
- openai_api_key: 填入申请的OpenAI Key
- multi_api_key和api_key_list:如果有多个api key,可以在api_key_list填入多个key,并且multi_api_key置为true
- server_name: 如需对外暴露服务,填写0.0.0.0
- server_port: 如需对话暴露服务,填写指定端口,默认为7860,设置后记得检查防火墙是否打开7860服务
启动服务
1 | python ChuanhuChatbot.py |
通过 http://服务器IP:端口 访问,默认端口为7860(以config.json定义为准)
独立部署方案-HuggingFace Space篇
前文提到目前免费的Docker托管平台已经变得越来越少,偶然间发现一个可以薅羊毛的平台,那就是HuggingFace。
对于玩大模型的人来说,HuggingFace绝不陌生,托管了很多开源大模型和数据集。
本章节的主角是Hugging Space,以下是选择HuggingFace Space最重要的2个原因
- 提供Docker部署,免费提供计算资源(2核/16GB)
- 服务器位于国外,可以流畅访问OpenAI等服务
创建Space
参考下图提示创建空间,如果想让别人也能自由访问,需选择Public,如果仅自己使用,选择Private即可。
如果是Public权限记得删除任何包含秘钥等设置,如OpenAI Key,否则相当于直接把秘钥公开给别人。
之后会跳到Space初始化页面
对于熟悉git操作的人来说,具体来说有几步
- git clone
- 创建Dockerfile
- git add & git commit & git push
如果你不熟悉git也没关系,点击create按钮可以直接在页面上编辑Dockerfile然后完成部署
编写镜像文件Docker
虽然HuggingFace使用起来很方便,但是它对使用权限对了一定限制,因此不能直接复用Dockehub的镜像,需要小改一下。
废话不多说,直接上代码,以下两个Dockerfile文件随便选其一即可(推荐使用镜像1,因为如果之后启动脚本换了,镜像2大概率可能也要随之修改)。
镜像1:基于官方镜像
1 | FROM tuchuanhuhuhu/chuanhuchatgpt |
镜像2:从0开始构建
参考官方Dockerfile编写Dockerfile,基于huggingface的运行要求,小改了一下
1 | FROM python:3.9-slim-buster |
部署
- 使用git操作的朋友就参考上面的提示完成git push即可
- 在页面编辑的朋友可直接参考如下提示在网页上完成类似git的操作
部署完成后在Space页面点击Logs按钮即可看到整个构建过程
如果状态转成running代表部署成功,点击页面右上角的App按钮即可体验专属的ChuanhuChatGPT啦~
效果展示
知识库问答
和之前文章一样,这里上传了上海机场2022年年报的部分章节
联网搜索
写在最后
一路下来会发现其实自己部署也挺简单的。简单上手体验了一下,除了常规的闲聊外,会发现ChuanhuChatGPT的联网搜索功能挺好用的,提供了类似New Bing(目前集成的默认搜索引擎为duckduckgo)的功能,不过可能由于搜索引擎的原因,感觉出来的结果有时候不是那么准确。
至此,针对私有化部署GPT方案,BotFlow已整理出3篇系列文章,大家可以根据自己的需求自行选择,后续也将推出一些应用案例,敬请期待。
如需咨询私有化部署事宜,可在公众号botflow1下方留言,提供一站式部署服务。