BotFlow

Entrance to AI

0%

手把手教你打造基于AI的专属知识库(ChuanhuChatGPT篇)

前述文章手把手教你打造基于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
2
3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3.sh
bash ~/miniconda3.sh -b -p ~/miniconda3 -u
~/miniconda3/bin/conda init && source ~/.bashrc

创建环境并安装依赖

这一步的目的是区分机器内其他环境,推荐通过conda进行环境切换管理。

1
2
3
4
5
6
# 取个虚拟环境名
conda create -n chuanhu python=3.10
# 安装依赖
git clone https://github.com/GaiZhenbiao/ChuanhuChatGPT.git
cd ChuanhuChatGPT
pip install -r requirements.txt

修改配置

配置文件为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
2
3
4
5
6
7
8
9
10
FROM tuchuanhuhuhu/chuanhuchatgpt
# huggingface用户权限配置参考https://huggingface.co/docs/hub/spaces-sdks-docker
RUN useradd -m -u 1000 user
USER user
ENV HOME=/home/user
WORKDIR $HOME/app

# 原docker镜像workdir位于/app,需重新安装依赖
RUN cp -r /app $HOME/
RUN pip install -r requirements.txt

镜像2:从0开始构建

参考官方Dockerfile编写Dockerfile,基于huggingface的运行要求,小改了一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
FROM python:3.9-slim-buster
RUN apt-get update \
&& apt-get install -y build-essential git \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# huggingface用户权限配置参考https://huggingface.co/docs/hub/spaces-sdks-docker
RUN useradd -m -u 1000 user
USER user
ENV HOME=/home/user
WORKDIR $HOME/app

RUN git clone https://github.com/GaiZhenbiao/ChuanhuChatGPT.git $HOME/app
RUN pip install -r requirements.txt

# 启用0.0.0.0,默认host=127.0.0.1,无法对外提供服务,会一直处于building阶段
ENV dockerrun=yes
CMD ["python3", "-u", "ChuanhuChatbot.py","2>&1", "|", "tee", "/var/log/application.log"]

部署

  • 使用git操作的朋友就参考上面的提示完成git push即可
  • 在页面编辑的朋友可直接参考如下提示在网页上完成类似git的操作

部署完成后在Space页面点击Logs按钮即可看到整个构建过程

如果状态转成running代表部署成功,点击页面右上角的App按钮即可体验专属的ChuanhuChatGPT啦~

效果展示

知识库问答

和之前文章一样,这里上传了上海机场2022年年报的部分章节

联网搜索

写在最后

一路下来会发现其实自己部署也挺简单的。简单上手体验了一下,除了常规的闲聊外,会发现ChuanhuChatGPT的联网搜索功能挺好用的,提供了类似New Bing(目前集成的默认搜索引擎为duckduckgo)的功能,不过可能由于搜索引擎的原因,感觉出来的结果有时候不是那么准确。
至此,针对私有化部署GPT方案,BotFlow已整理出3篇系列文章,大家可以根据自己的需求自行选择,后续也将推出一些应用案例,敬请期待。
如需咨询私有化部署事宜,可在公众号botflow1下方留言,提供一站式部署服务。