docker云部署自建知识库的ai微信机器人(易上手很详细)

news/2024/12/13 1:17:51/文章来源:https://www.cnblogs.com/yaoyangding/p/18603800

docker云部署自建知识库的ai微信机器人(易上手很详细)

头像
hhyuuu
 
9 月 22 日 北京
阅读 7 分钟
1

1、前言

1.1、介绍

本次演示采用的是2核2g Ubunto系统,无内置镜像的华为云服务器
推荐使用腾讯云轻量云服务器docker镜像,可以省去前面第二节步骤,如果还是境外服务器更方便了

1.2、注意事项

需要有linux基础,有用过docker的经验,当然没用过跟着做就行
本文档每一步都有演示,请认真看完文字描述

2、搭建docker环境

2.1、docker和docker-compose
# 安装 Docker
curl -fsSL https://gitee.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh| bash -s docker --mirror Aliyun
systemctl enable --now docker
# 安装 docker-compose
curl -L https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# 验证安装
docker -v
docker-compose -v

当效果如下图,即配置成功
image.png

2.2、优化配置过程

需要注意的是,由于docker-compose安装命令是从github上,速度会很慢,下面是解决方法

# 下载完docker以后,找到cli-plugins文件
find / -name cli-plugins
# cd到cli-plugins目录
ls -lah
# 你会在里面找到docker-compose
# 复制cli-plugins目录路径
nano ~/.bashrc
# 编辑环境变量,将下面这行添加到最后一行即可,注意需要将/path/to/your/directory换成你复制的cli-plugins目录
export PATH=/path/to/your/directory:$PATH
# 随后Ctrl+X,Ctrl+Y,Enter
# 随后生效环境变量
source ~/.bashrc
# 接下来再检测一下docker-compose
docker-compose -v

3、下载并修改配置文件config.json和docker-compose.yml

3.1、下载配置文件
mkdir fastgpt
cd fastgpt
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json# pgvector 版本(测试推荐,简单快捷)
curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-pgvector.yml

image.png

3.2、修改配置文件docker-compose.yml
vim docker-compose.yml

image.png
启用阿里云的镜像,把上面的镜像注释掉,不然拉取很慢而且可能报错
但是腾讯云docker镜像服务器不用在意,境外服务器更不用在意

# 注意需要键盘i键进入修改状态
# 修改完后键盘ESC,英文输入法的":"+wq+Enter
# 随后执行
docker-compose up -d

image.png

等待一会变成下面这样
image.png

3.3测试容器运行是否正常

oneapi运行在3001端口,默认用户名root密码123456
fastgpt运行在3000端口,默认用户名root密码1234
通过http://<服务器公网ip>:端口号 进行访问
请注意为服务器的安全组或者防火墙放通端口!!!

oneapi

首先是oneapi,点击渠道会让你输入账号密码,输入完后会让你修改密码,不必修改
api-hub进入这个网址注册一个获取api的代理中转站
工作台->余额充值->1元即可测试
点击API令牌->添加令牌->分组选择default->ip段填入0.0.0.0/0,随后创建即可
复制好你的APikey

回到oneapi
点击添加渠道
6d89049e5d75c55c763070818e16403.jpg
注意:模型名称必须按要求,如果你会oneapi的配置可以自己换,如果没用过建议跟我一样

点击提交即可
随后点击测试,如果出现右上角测试成功则llm模型api连接完毕
image.png

同样的添加embedding模型渠道
注意这里不是选择Openai,而是选择自定义渠道
image.png
测试embedding模型,只需要响应403即可,这是因为对话模型和向量模型接口不一样,而oneapi只调chat接口。如果是404响应就是错的
image.png
至此oneapi结束

fastgpt
docker ps

image.png
可以看到fastgpt运行在3000端口
但是不着急访问,先修改一下config.json文件
这里原本就是gpt-4o-mini,所以我们不需要修改
image.png

同样的向量模型也不用更改,但是切记如果你用的模型不一样的话,确保config.json添加了,并且oneapi中也添加了相应渠道,修改完后重启docker-compose,跟我一样的不用执行下面命令

docker-compose down
docker-compose up -d

image.png

修改好后,没变动config.json的执行ESC+英文下的:+q+Enter
变动过的执行ESC+英文下的:+wq+Enter
如果不想保存修改的执行ESC+英文下的:+q!+Enter
接下来通过http://<公网ip>:3000访问fastgpt
点击工作台->新建简易应用,创建好后如下图进行llm测试
image.png
llm测试成功后,测试embedding
image.png
image.png

新建一个手动数据集,这边先测试一下embedding是否正常工作
image.png
image.png
image.png
image.png

4、知识库问答测试

4.1、获取或准备一份文件(最好是markdown)

我这边在法律数据库中下载了一份中国道路交通安全法的docx文件

4.2、构建知识库

image.png
image.png
image.png
这没有什么问答的,直接分段即可
image.png
image.png
这边可以点进去看一下分段情况
image.png
接下来直接点击工作台->简易应用
image.png

4.3、测试知识库问答

image.png
跟文档里面一模一样,注意如果没有知识库检索,他可能会乱说一个日期,这边可以测试一下,首先需要清除上下文->把知识库去掉
image.png
他这里说的也不完全错,但是他是根据自己原有知识进行的问答,如果换成不公开的内容,没有知识库就会一本正经的胡说八道

5、chat-on-wechat项目

5.1、下载docker-compose.yml文件

接下来要配置启动chat-on-wechat项目

# 退出fastgpt目录
cd ..
mkdir onwechat
cd onwechat
wget https://open-1317903499.cos.ap-guangzhou.myqcloud.com/docker-compose.yml
vim docker-compose.yml

image.png
添加环境变量OPEN_AI_API_BASE
并且将这三个环境变量暂时置为和我一样

5.2、配置docker-compose.yml环境变量

然后回到fastgpt
image.png
你会获得一个api-key,请复制好,因为一旦离开就找不到了只能新建一个
将复制的api-key填入环境变量:OPEN_AI_API_KEY
image.png
复制api根地址
image.png
填入OPEN_AI_API_BASE参数,注意末尾加个/v1
image.png
然后ESC+英文:+wq+Enter保存并退出即可

5.3、启动并拉取镜像
# 第一次别用docker-compose up,因为hub.docker.com仓库是国内禁掉的,需要配置加速器
docker pull docker.1panel.live/zhayujie/chatgpt-on-wechat
# 使用腾讯云轻量docker服务器的可以执行,然后就是境外服务器也无障碍可以拉取到
docker-compose up
# 腾讯云的docker镜像服务器里面配置了私有源(限制了IP只能腾讯云服务器可以用),可以拉取到该镜像

不保证这个源长期有效,如果失效了请参照下面方法(国内普通服务器需要考虑)
有三种解决方式
方式1:寻找新的加速源(最简单)
方式2:服务器内部配置代理
方式3:注册cloudflare配合github上的CF-Workers-docker.io项目进行反代,可以去搜一下教程(相当于自己做一个加速源的代理)

pull结束之后,需要相应修改一下docker-compose.yml文件(仅国内普通服务器需要)
image.png

# cd到onwechat目录,执行下面
docker-compose up

image.png
随后会出现一个二维码,用实名认证过的微信号扫码登录即可,默认通过bot和@bot开头进行问答,注意未实名过的微信不会成功

6、补充

6.1、项目涉及

fastgpt和chat-on-wechat
chat-on-wechat项目采用的itchat协议
注意里面的参数灵活多变,可以去研究一下chatgpt-on-wechat文档

6.2、本文档补充

1.小白最好还是用腾讯云轻量内置docker容器的服务器最方便,可以省去很多步骤
2.本文档演示每一步都有,请不要跳过文字描述
3.如果对你有帮助的话可以点赞关注一下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/851702.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JMeter如何对文件下载功能进行测试

1、首先要明白的是,所谓的文件下载,在jmeter中是以数据流的形式存在,最终的响应数据也是数据流,而jmeter本身不具备将数据流转换成文件并保存到本地的功能,所以需要使用beanshell脚本来实现文件下载并本地本地。 2、右键线程组-添加-取样器-beanshell取样器(注意,beansh…

42. JavaScript变量、数据类型、运算符

1. JavaScript简介 JavaScript是由 ECMAScript 标准 + DOM + BOM 组成DOM --- document 指的是页面源码文档对象BOM --- browser 指的是浏览器对象 2. JavaScript基础 2.1 注释语法//这是单行注释/* 这是多行注释 这是多行注释 */2.2 书写方式 [1]在head或body标签内写script标…

ESP32-WIFI配网优化

前言 之前文章中有介绍过两种 WIFI 配网的方式,如果需要详细了解相关内容可以参考之前的文章: [[ESP32-两种有趣的wifi连接方式]],这里主要对于强制门户认证过程再进行优化和升级。 在强制门户认证中,在生成的网页中,WiFi 名称总是要自己输入,这里总感觉有一点麻烦,前段时…

Excel中使用VBA实现word邮件合并功能

Excel中使用VBA实现word邮件合并功能 代码为窗体程序样式如下:代码: Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpPa…

系统设计精髓

系统设计精髓-稳快灵🛡️ 『稳~高可用性』 ▫️通过冗余和故障转移技术,确保系统几乎无间断运行 ▪️适用于需要7x24小时不间断服务的业务,如云服务、在线交易平台,确保用户随时都能访问服务🚀『快~高吞吐量』 ▫️通过异步处理和负载均衡,提高系统处理请求…

11.20-12-12移动开发记录

数据库和AI调用NETMAUI 1、MySQL搭建 在我的服务器上完成MySQL搭建: [root ~]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is ??? Server version: 8.0.40 MySQL Community Server - GPLCop…

PCIe扫盲——PCI总线的地址空间分配

PCI总线具有32位数据/地址复用总线,所以其存储地址空间为2的32次方=4GB。也就是PCI上的所有设备共同映射到这4GB上,每个PCI设备占用唯一的一段PCI地址,以便于PCI总线统一寻址。每个PCI设备通过PCI寄存器中的基地址寄存器来指定映射的首地址。如下图所示:注:需要注意的是PC…

低空飞行管理服务监管系统建设方案

在低空经济蓬勃发展的今天,低空飞行活动日益频繁,对低空飞行的管理、服务和监管提出了更高的要求。一个高效、智能的低空飞行管理系统对于确保飞行安全、提升空域利用效率、推动低空经济发展具有重要意义。 1. 建设背景与目标随着无人机技术的进步和应用领域的拓展,低空飞行…

打开浏览器访问网页时,显示无法连接到代理服务器,解决方案

打开浏览器,访问任何网页都提示说检查代理服务器解决方案: 1、win+r打开运行窗口 2、输入inetcpl.cpl进入Internet属性界面3、选择连接-->局域网(LAN)设置4、点击局域网设置,将代理服务器的选框取消勾选5、再次访问网页,就可以正常访问了

SpringCloud Nacos (docker 搭建 项目运行) 基于 Cloud 2022 版本

一、使用docker 安装 nacos 基础镜像 1、安装docker(省略) 2、创建 docker-compose.yml version: 3.7services:nacos:image: nacos/nacos-server:latestcontainer_name: nacosenvironment:- MODE=standalone # 单机模式- PREFER_HOST_MODE=hostname # 使用主机名- NACOS_SE…