部署架构图
来个思路图,其实这个搭建全程很简单。不要看图上面显示的很复杂,其实只要完成3点就行。
- 搭建OneAPI,这东西是为了汇聚整合多种大模型接口,方便你后面更换使用各种大模型。下面会告诉你怎么去白嫖大模型接口。
- 搭建FastGpt,这东西就是个知识库问答系统,你把知识文件放进去,再把上面的大模型接进来,作为分析知识库的大脑,最后回答你问题,这么个系统。如果你不想接到微信去,自己用用,其实到这里搭建完就OK了,他也有问答界面。
- 接入微信,这里会用到个工具智能微秘书,就是为了方便配置FastGpt,把知识库问答系统接入到微信,这里建议先用个小号,接入个人微信。因为接企业微信好像要花钱。
完成上面3步就算OK了,那我们正式开始。
准备工作
-
领免费云服务器
-
- 阿里、腾讯对【新用户】提供免费试用服务器的。可以去官网获取,阿里云的服务器ECS、腾讯云的轻量应用服务器(官网提供的试用规格服务器已够用了),到期后想续费也行,他们官网定期会有优惠,这个看大伙需求了。
- 规格配置参考见下图,但要选择【宝塔】系统。后面我都会以这个操作系统来搭建上面说到的工具。
-
领免费大模型接口(阿里大模型3.18日起开始收费)
注意:阿里大模型3.18日起开始收费
- 阿里的通义千问大模型接口,他也有文档说明、其实就是注册登录阿里云账号(记得实名哦),然后打开链接,创建个APIkey。下面是我创建的和我已经使用的模型情况。
- 智谱AI(ChatGLM)、科大讯飞(SparkDesk),也有免费接口,但是限制了一定的Token额度,超了要花钱。有需要也可以先去官网领取免费的额度。
- 谷歌的Gemini大模型(gemini 1.0 pro),好处是免费而且还能图片识别分析,坏处是要能链接外网的服务器(我还不会),当然你买了梯子的话就直接注册个谷歌邮箱去登录,去网页上体验下。等我去研究下外网服务器的问题后,再让它来充当我们知识库的大脑吧,哈哈。
搭建FastGpt
我自己之前申请了一台免费的腾讯云,下面我就在腾讯云的服务器上操作,阿里云的菜单位置可能不太一样,对应的找下就行,操作步骤完成一样哦。
- 给云服务器安装宝塔系统,刚刚领取服务器的时候,应该一并安装好了。
- 然后在“应用管理”菜单中,点击登录,然后复制命令
sudo /etc/init.d/bt default
,获取宝塔系统的账号和密码。
- 这里看见地址里有8888的端口号,我们先去把云服务器的防火墙开下,不然可能打不开网页链接、顺便把后面几个需要用到的端口都打开了。如图操作(防火墙>添加规则)
- 复制“外网面板地址”登录,然后首次进入会有个快速安装的界面,只选择Nginx、mysql安装就行,然后去【软件商城】搜索Docker并安装。这些软件都要安装成功哦,这些是部署上面工具的重要基石。
- 打开左侧【终端】,首先验证下Docker是否安装成功。看见版本号,就是安装成功了。
- 然后还在【终端】,复制粘贴下面的4条命令,依次执行。执行完后在【文件】菜单的root目录下出现个fastgpt的文件夹,文件夹里下载下来了2个配置文件
docker-compose.yml
和config.json
。有时候网络的问题,可手动创建一个fastgpt目录,并下载2个链接的文件,手动上传上去也行的(看截图中有“新建”“上传”按钮,可手动完成)
mkdir fastgpt
cd fastgpt
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/files/deploy/fastgpt/docker-compose.yml
注意:感觉官网这2链接的文件配置经常变动,我把我配置好的文件供大家下载,不然会导致执行下面mongo初始化命令时,账号密码报错。docker-compose.yml和config.json下载链接:https://pan.baidu.com/s/1XaZ5azaCr_3ynLmnD7AncQ?pwd=6666 或者也可安照官网最新方式部署,官网文档第四步开始
- 回到【终端】菜单,依次执行下面命令。
# 进入项目目录
cd fastgpt
# 创建 mongo 密钥
openssl rand -base64 756 > ./mongodb.key
# 600不行可以用chmod 999
chmod 600 ./mongodb.key
chown 999:root ./mongodb.key
# 启动容器
docker-compose pull
docker-compose up -d
执行成功会显示如下图。首次执行docker-compose pull
可能会需要点时间,他会下载“mongo”“pg”“fastgpt”这几个项目。
- 初始化 Mongo,不然打开FastGPT页面,登录时就会报错。执行如下命令初始化。
# 查看 mongo 容器是否正常运行
docker ps
# 进入容器
docker exec -it mongo bash
# 连接数据库
mongo -u myname -p mypassword --authenticationDatabase admin
# 初始化副本集。如果需要外网访问,mongo:27017 可以改成 ip:27017。但是需要同时修改 FastGPT 连接的参数(MONGODB_URI=mongodb://myname:mypassword@mongo:27017/fastgpt?authSource=admin => MONGODB_URI=mongodb://myname:mypassword@ip:27017/fastgpt?authSource=admin)
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "mongo:27017" }
]
})
# 检查状态。如果提示 rs0 状态,则代表运行成功
rs.status()
这里执行docker ps
时注意下,要查看 mongo 容器是否正常运行。如果有报错就去【Docker】菜单的“容器”按钮,查看下mongo的状态,没有运行的话,在它那栏点击右键,会有启动按钮,启动下就OK,然后去执行上面没完成的命令,最后提示 rs0 就是OK了。如图
- 访问 FastGPT,目前可以通过
公网ip:3000
直接访问(注意防火墙)。登录用户名为root
,密码1234其实这里的账号密码是之前下载的docker-compose.yml
环境变量里设置的DEFAULT_ROOT_PSW
,所以后面想修改密码,打开FastGPT页面后也能操作 这里的ip就是云服务的公网IP,在腾讯云的页面上能看到(如图),最后拼成这样的地址去打开登录000.000.000.000:3000
- OK,FastGPT的搭建就完成了。如果有什么搭建上的问题,也可以参考fastgpt的官方文档。现在只是把知识库平台搭建好了,接下来要给知识库去接通大脑,能用AI来回答我们。请看下面。
搭建OneAPI
- 到【终端】菜单,执行以下命令,建议直接用使用 SQLite 的部署命令就可以了。
# 使用 SQLite 的部署命令:
docker run --name one-api -d --restart always -p 3001:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api
# 使用 MySQL 的部署命令,在上面的基础上添加 `-e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi"`,请自行修改数据库连接参数,不清楚如何修改请参见下面环境变量一节。
# 例如:
docker run --name one-api -d --restart always -p 3001:3000 -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi" -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api
其中,-p 3001:3000
中的第一个 3001
是宿主机的端口,可以根据需要进行修改(记得防火墙那也要修改哦),但不要改为3000,因为刚刚FastGpt已经用了,会有冲突的。
如果网络问题导致上面的镜像无法拉取下来,可以尝试使用 GitHub 的 镜像,将命令后面的的 justsong/one-api
替换为 ghcr.io/songquanpeng/one-api
即可。部署如有问题可以看下OneAPI文档
-
- 这时就部署完成,可以
公网ip:3001
打开oneAPI的页面了。初始账号用户名为root
,密码为123456
。
- 这时就部署完成,可以
-
- 还记得刚刚让你们白嫖的大模型API吗?阿里的通义千问大模型接口,这时要派上用场了,去阿里模型的链接里创建ApiKey,并复制下来。然后在OneAPI的页面,点击【渠道】添加新渠道。
添加时,类型选择阿里通义千问,名称自己取个,类型选择好后模型是会默认加进去,你不用删减,还有就把刚刚阿里那复制的ApiKey粘贴到秘钥里去。这样就OK了。后续有其他的大模型也是一样的添加方式。
-
- 然后,要创建OneApi的令牌,点击【令牌】添加新令牌
这里名称可以自己取个,时间设为永不过期、额度设为无限额度。提交OK。
这时【令牌】中就有你添加的了,点击复制,得到令牌。
5.OneApi设置的额度有点少,我们手动改下,怕后面因为额度的问题导致不能使用,点击编辑,给自己多加几个0,然后提交OK。见图
6.OneApi这的部署就完成,现在我们要去给FastGpt去装上大脑
配置FastGpt
-
- 回到宝塔系统【文件】菜单,我们要修改2个文件
docker-compose.yml
和config.json
(文件路径root>fastgpt)2.首先修改docker-compose.yml
中的OPENAI_BASE_URL
(API 地址:改为云服务的http://内网IP:3001
,需要加/v1,最后格式见图中)和CHAT_API_KEY
(API 凭证,改为刚刚让你在OneApi复制的令牌,也是sk开头的)。其他都不用改,然后保存关闭。内网IP在云服务上能查询到,如图。3.然后就是修改config.json
中的"llmModels"
(添加阿里大模型qwen-max) 和"vectorModels"
(阿里向量模型text-embedding-v2,使用知识库功能时要用到的),然后保存关闭。如下代码。
- 回到宝塔系统【文件】菜单,我们要修改2个文件
"llmModels": [
{
"model": "qwen-max",
"name": "qwen",
"maxContext": 16000,
"maxResponse": 4000,
"quoteMaxToken": 13000,
"maxTemperature": 1.2,
"charsPointsPrice": 0,
"censor": false,
"vision": false,
"datasetProcess": false,
"toolChoice": false,
"functionCall": false,
"customCQPrompt": "",
"customExtractPrompt": "",
"defaultSystemChatPrompt": "",
"defaultConfig": {}
}
],
"vectorModels": [
{
"model": "text-embedding-ada-002",
"name": "Embedding-2",
"charsPointsPrice": 0,
"defaultToken": 700,
"maxToken": 3000,
"weight": 100
},
{
"model": "text-embedding-v1",
"name": "qwen-Embedding-1",
"charsPointsPrice": 0,
"defaultToken": 700,
"maxToken": 3000,
"weight": 100
}
],
4.修改好了内容,就要重新启动下,让他生效。直接在【文件】菜单下的fastgpt目录,打开终端,执行启动命令docker-compose up -d
,如图
5.到这里,我们的知识库就装上AI的大脑了,剩下的就是去接入微信了。但这之前我们体验下知识库的功能,跟AI对对话,看看是否Ok。打开公网ip:3000
进入fastgpt。新建个应用,这里不多说了根据界面来就行。看图示例,OK成功了,用的就是阿里的通义千问AI模型(qwen-max不花钱的接口哦)。
那我想根据我自己的知识库内容来回答问题,要怎么操作?
在知识库这个菜单新建知识库,看到新建时有2个模型选项了吧,在刚刚配置config.json
时,我提到向量模型,就是这里的索引模型的选项,没有他知识库功能用不了哦。如图
然后我们上传文件或者写入信息都是可以的,我示范下,最后文本状态是“已就绪”就是OK了,我们去验证下
6.回到刚刚创建的应用,关联上创建的知识库。看下没有知识库和有知识库,回答的区别。
7.能感受到了吧,大家应该有很多自己想用的场景,可以自己丰富知识库的内容,成为专业的AI助手。好,下面我们把这个拥有知识库能力的AI助手接入到微信。可以帮助我在微信来解答问题。
接入微信
-
- 注册个域名(不需要的可跳过),接入微信前弄一个网站域名,如图(可以先不用域名,直接用
公网ip:3000
接入,直接跳过第1、2步。需要再回来用域名方式接入)
- 注册个域名(不需要的可跳过),接入微信前弄一个网站域名,如图(可以先不用域名,直接用
这里我们可以在腾讯云上花1元买一年的域名(这里也是唯一要花钱的地方),自己挑个域名后缀,选1元1年那种,然后前面随意填写个英文名称,如图。然后购买。
购买好后,点击下添加域名解析,都勾选上,如图。就OK了
2.然后在宝塔系统进入【Docker】点击容器,找到fastgpt后面有个“反向代理”按钮,打开。把刚刚购买并解析好的域名写进去,并设置端口为3000。这样你就可以直接用域名地址打开FastGpt网页了。
3.然后用域名地址(跳过1、2步的用公网ip:3000
)打开FastGpt在新建的应用中,获取个对外的API接口(操作:应用>发布应用>Api访问)。点击“新建”API秘钥,复制API KEY
和新建按钮旁边的API根地址
2个内容。用于配置接入微信。
4.然后打开智能微信秘书页面,注册登录,打开【基础设置】,如图(天行api可以随意填、apikey就是在fastgpt应用里新建的API KEY
,服务器地址就是API根地址
)
5.然后在【个人中心】复制微信秘书的APIKEY
和APISECRET
,后面要用到,如图。
6.回到宝塔系统进入【Docker】,见下图操作路径:Docker>容器>创建容器>命令创建>复制命令>执行命令
(复制命令时,把刚刚微信秘书复制的APIKEY
和APISECRET
粘贴进去后再执行)。注:窗口自动关闭就是执行完毕了。
docker run -d -e TZ="Asia/Shanghai" -e AIBOTK_KEY="微秘书apikey" -e AIBOTK_SECRET="微秘书apiSecret" --name=wechatbot aibotk/wechat-assistant
7.好了,所有的部署、配置操作都完成,看下【Docker】容器中,项目状态是否都在“运行中”。然后去智能微信秘书控制台,首页扫码登录即可。如图。
8.最后,我们来看下微信对话效果,是根据我们在fastgpt录入的文档内容来回答的哦。群里要记得@人才能得到回复,如图。