引言
NapCat通过魔法的手段获得了 QQ 的发送消息、接收消息等接口并把他们以OneBot的规范开放,允许其他组件按照规范进行通信。(官网传送门)(Github仓库)
Koishi 是一个跨平台、可扩展、高性能的聊天机器人框架。(官网传送门)(Github仓库)
准备好了吗?这篇教程将会带你一起动手,用这两个超酷的开源组件搭建一个能和AI聊天的QQ机器人。让我们一起开启这段旅程吧!
安装NapCat和Koishi
本教程将使用Docker容器的方法安装和管理各个组件,因此你需要预先安装Docker,Docker-Compose等相关组件,如果你的服务器在国内,你可能还需要使用代理或者镜像源,保证服务器可以正常从DockerHub拉取镜像。
安装NapCat
选择或新建一个空目录,这个目录将用于安装NapCat。
新建一个名为 docker-compose.yml
的文件,在其中写入以下代码,这是Docker容器的配置文件:
# docker-compose.yml
version: "3"
services:
napcat:
environment:
- NAPCAT_UID=${NAPCAT_UID}
- NAPCAT_GID=${NAPCAT_GID}
ports:
- 3000:3000
- 3001:3001
- 6099:6099
container_name: napcat
network_mode: bridge
restart: always
image: mlikiowa/napcat-docker:latest
在该目录下执行 sudo docker-compose up -d
,如果网络条件良好,过一会就能看到容器启动成功的提示。
选择另外一个空目录用于安装,新建一个 docker-compose.yml
文件,输入以下内容:
# docker-compose.yml
services:
koishi:
image: koishijs/koishi:latest
container_name: koishi
ports:
- "15140:5140"
volumes:
- /opt/koishi:/koishi
environment:
- TZ=Asia/Shanghai
restart: always
network_mode: bridge
extra_hosts:
- host.docker.internal:host-gateway
同样在该目录下执行 sudo docker-compose up -d
,如果网络条件良好,过一会就能看到容器启动成功的提示。
配置NapCat
查看容器日志,应该能看到类似于以下的内容:
[info] [NapCat] [WebUi] WebUi Local Panel Url: http://127.0.0.1:6099/webui?token=xxxxxxxx
将其中的 127.0.0.1
修改为服务器的实际IP,然后访问该地址,你应该就能进入NapCat的控制台了。
警告
千万不要泄露后面的token字段,这是登录控制台的唯一凭证! 访问前记得开放对应端口
容器日志中应该还有类似于如下内容:
12-19 13:16:35 [warn] 请扫描下面的二维码,然后在手Q上授权登录:
12-19 13:16:36 [warn]
这里是二维码
二维码解码URL: https://txz.qq.com/p?k=xxxxxxxxxxxxxxxxxxx&f=xxxxxxxxxxxx
如果控制台二维码无法扫码,可以复制解码url到二维码生成网站生成二维码再扫码,也可以打开下方的二维码路径图片进行扫码。
12-19 13:16:36 [warn] 二维码已保存到 /app/napcat/cache/qrcode.png
按照日志中的提示扫码进行登录。
登录成功后回到NapCat控制台,点击左侧的网络配置,再点击右上角的添加配置
应该会有如下弹窗:
其他设置项按图中所示即可,Token项强烈建议自行设置一个后妥善保存。
配置Koishi
访问 <服务器IP>:5140
即可进入Koishi控制台,同意协议后就能使用Koishi这一强大的机器人框架了。
提示
记得开放对应端口
首先先更新所有依赖组件,点击左侧的依赖管理,然后通过右上角的刷新和更新全部按钮更新依赖。
注意
最好不要删除Koishi自带的软件包和依赖,很可能会影响Koishi的正常工作!
将Koishi连接到NapCat
从之前的介绍中就可以看出,NapCat采用了OneBot的兼容协议,因此对接时我们使用OneBot适配器。
在插件市场中搜索并安装 adapter-onebot
,安装后会自动跳转到插件配置页面,但此时应该找不到OneBot适配器的配置页面,因此我们回到插件市场,在已安装插件列表里找到 adapter-onebot
,点击修改,在弹窗中点击配置:
在配置页面着重修改标记的部分:
这些字段按如下要求填写:
- sefid(机器人账号):填写登陆在NapCat上的QQ号
- token:输入配置NapCat中添加网络配置时填写的token(不是登录NapCat控制台用的那个token)
- protocol(协议):选择ws协议(WebSocket)
- endpoint(服务器地址):输入从面板等处取得的NapCat容器地址和3000端口号
重要
注意一定要填写NapCat的容器IP地址,不能填写127.0.0.1(这会指向Koishi容器自己),此处容易踩坑!
填写完成后依次点击右上角的保存配置和启用插件。如果一切顺利,你应该能在右下角的状态指示那里看到你QQ的昵称和头像等信息。
接下来尝试给那个QQ号发送 status
, help
等内置命令,没问题的话Koishi已经能向你返回内容了。
配置ChatLuna和大模型
ChatLuna是一个多平台模型接入,可扩展,多种输出格式,提供大语言模型聊天服务的机器人插件。(官网传送门)(Github仓库)
在插件市场里搜索安装ChatLuna,然后进入ChatLuna的配置页面。
官网文档上有详细的解释,此处不一一解释,按照自己的需求修改配置然后启用插件。
以阿里的通义千问为例,在插件市场中安装 chatluna-qwen-adapter
,进入其配置页面,根据这篇教程你可以获取到通义千问的APIKey,将APIKey写入插件配置的相关选项,然后点击右上角的保存配置,接着启用插件。
然后回到ChatLuna的配置页面,这次应该就可以在 模板房间选项 - defaultModel
列表里看到刚配置的模型了,根据需要选取合适的模型,然后点击右上角的重载配置即可。
结语
好啦,朋友们,到这里我们的教程就告一段落了。跟着这些步骤,你的QQ机器人应该已经打扮得漂漂亮亮,还可以与大模型对接了。如果你已经成功把它们俩牵上线,那就太棒了!现在,你的机器人不仅能够聊天,还能展现出大模型的聪明才智。希望这篇文章能成为你技术探险中的小助手,带你一起飞。如果还有什么问题,或者想要分享你的机器人趣事,记得来找我们哦!继续享受编程的乐趣吧!
除非注明,否则均为天远日记原创文章,转载必须以链接形式标明本文链接
Comments NOTHING