绪言

最开始认识语言大模型大概是22年年末,当时把chatgpt调教成猫娘已经小范围火起来了(虽然根本没有预料到会发生这么大的变革),也搭了一个自己的机器人。2年后,国产的deepseek-r1模型又让我重新燃起搭一个属于自己的机器人的激情。这篇文章会讲我的qq机器人的搭建历程。

使用项目

阿里云百炼大模型平台(换成其他的api提供商也可以)、NapCatQQLangBot,还需要一台服务器。

参考文档

LangBot官方文档https://docs.langbot.app/insight/guide.html
NapCat官方文档https://napcat.napneko.icu/guide/start-install
各厂商大模型部署文档

部署过程

以后有机会可能写一个脚本。

我这里会以安装了Ubuntu 22.04的linux服务器作为示例。

安装环境

首先,给你的系统部署docker,java,git和python环境,最好不要使用宝塔面板提供的部署(因为他的版本不新,而且安装路径奇怪)。Ubuntu系统一般已经预装了python环境。我们可以使用以下命令来判断我我们的系统是否有这些环境:

git
python3 --version
javac --version
docker --version
docker compose --version
docker-compose --version

请注意,倒数两条命令有区别。如果没有连接符的输出了版本,证明你的docker compose是插件安装的;如果有连接符的输出了版本,则是独立安装。插件安装时,所有的命令都为“docker compose”;独立安装时命令则为“docker-compose”,敬请注意。

使用ssh工具远程连接你的主机。这里我使用的工具是Finalshell,界面是中文,免费功能足够使用。在终端中执行以下命令:

sudo apt install openjdk-21-jdk

这个命令会帮助你的系统安装jdk工具包,也就是java。

sudo apt install docker-ce docker-ce-cli containerd.io
sudo apt-get install bash-completion
sudo curl -L https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker -o /etc/bash_completion.d/docker.sh
source /etc/bash_completion.d/docker.sh

这个命令帮助你下载docker。

sudo apt-get install git

这个命令帮你安装git。

关于sudo

这里的sudo其实就是以管理员身份执行命令。

值得注意的是,由于特殊的网络环境因素,你可能需要提前先把你的下载源替换成国内的镜像源再进行以上步骤。

安装完成之后使用上文提到过的命令进行版本检查。

安装LangBot

LangBot官方给出了三种部署方式,我这里推荐使用docker部署(不要使用宝塔部署,宝塔的那个部署包名和网络都奇奇怪怪的)。

使用git命令把项目复制到本地:

git clone https://github.com/RockChinQ/LangBot
cd LangBot

启动docker容器(独立安装版本记得加连字符,后面的命令均会以插件版本命令为范例)

docker compose up

容器会映射5300端口供 WebUI 使用,可以访问 主机地址:5300 查看 WebUI。还会映射2280-2290端口供使用 OneBot 协议的消息平台适配器反向连接。具体配置可查阅官方文档。

安装NapCat

使用以下命令来进行可视化安装:

curl -o napcat.sh https://nclatest.znin.net/NapNeko/NapCat-Installer/main/script/install.sh && sudo bash napcat.sh --tui

我这里选择了用docker部署,你也可以直接shell部署,不过以后的配置会有改变,请查阅langbot文档。安装完成后,访问容器文件所在文件夹,启动docker compose容器。

安装时他会自动开放6099端口作为webUI的端口。

进行初步配置

在服务器安全组策略中放开5300和6099端口。

首先我们先初步配置napcat。在浏览器访问 主机公网地址:6099/webui/ 默认token为NapCat,按照提示登入你的qq机器人账号。

接着我们配置langbot。访问 主机公网地址:5300 进入webui,按照提示配置账号密码后退出。

配置容器网络

为什么不提前修改?作者试过了,会报错。。。。。。

因为我们把两个应用都配置在了docker中,两个应用不能使用通常的主机内网络进行联络,所以我们先需要创建一个网络:

docker network create langbot-network

这样我们就在docker内建立了一个叫langbot的网络。

接着我们找到langbot的yaml或者yml文件(通常位置是/root/LangBot),建议使用finalshell直接修改。在yml文件中添加以下网络配置:

services:
  langbot:
    ...
    networks:
      - langbot-network
    ...

networks:
  langbot-network:
    external: true

我们需要添加的是两个network部分。注意缩进。

我们找到napcat的yaml文件进行同样的操作。之后重启两个容器:

docker restart langbot
docker restart napcat

我们再登入napcat和langbot的webui。

进入napcat的webui,点击添加网络配置 WebSocket客户端 ,点击启用,然后在Url一栏填入 ws://langbot:2280/ws 并保存即可(名称最好叫langbot)。

接下来我们进入langbot的webui,在设置选项卡中找到system.json选项,编辑管理员会话,添加一个

person_你的管理员qq号

在插件选项卡中安装以下两个插件:

重启langbot容器,加载完成后,使用管理员账号私聊机器人,输入命令 .模型配置 (注意前面有点)。根据提示输入你在大模型平台获取的api和baseurl(这个插件目前只支持openai格式的接入方法,其他接入请自行开发)。

完成!

恭喜你完成了全部配置,其他功能请自行摸索langbot配置。

现在你就拥有一个自己的大模型机器人啦~(~ ̄▽ ̄)~