[OLLAMA+LangBot]云服务器+本地大模型接入 QQ 官方机器人

写在前面

最近 deepseek 开源了 r1,部署 14b 到本地使用感觉效果不错,相比 qwen 会更聪明一些。为了方便在外使用,手机端用网页感觉有点不得劲儿,干脆直接接入到 QQ 官方机器人,直接私聊或者群聊@就能使用。
沟槽的南极减除,试了很多次始终会报错“平台适配器运行出错: 接口访问源IP不在白名单”,搜了一下才发现必须要公网IP,淦!还好有一台服务器有公网IP。

服务器

搜了一下 go-cqhttp 之类的协议,要么仓库不再维护要么就是账号容易风控,不想在这上面多折腾,所以直接用官方机器人再加 LangBot

部署 LangBot

  1. 克隆最新代码
    1
    2
    git clone https://github.com/RockChinQ/LangBot
    cd LangBot
  2. 安装依赖
    1
    pip install -r requirements.txt
  3. 运行一次主程序,生成配置文件,然后再ctrl+c停止程序。
    1
    python main.py

链接消息平台

先去QQ机器人官方注册账号,在开发管理中找到AppIDAppSecret
转到config目录

1
2
cd LangBot/data/config/
vim platform.json

platform-adapters中找到qq-botpy,将enable设置为true,填好自己的appidsecret,我没有设置频道,所以intents只设置了public_messagesdirect_message

设置对话模型

打开provider.json,我这里是本地模型,修改 model

1
"model": "deepseek-r1:14b",

然后退出编辑,回到上一级目录修改llm-models.json添加本地模型

1
2
cd ../metadata/
vim llm-models.json

直接在list的第一位添加

1
2
3
4
5
{
"name": "deepseek-r1:14b",
"requester": "ollama-chat",
"token_mgr": "deepseek"
},

设置管理员

1
2
cd ../config/
vim vim system.json

修改下面的admin-sessions,把QQ会话设置为管理员(仅 person 会话私聊有效)。

1
2
3
"admin-sessions": [
"person_qq号"
],

完成

最后回到LangBot根目录运行就可以了

1
python3 main.py

其它的json根据自己的需求更改就行了。

服务器断联bug

大概每隔20分钟左右就会断联,不知道什么原因,懒得排查了,直接写了个重启脚本,每隔20分钟自动重启一次,不用管那个python,直接运行这个脚本就行了。

1
2
3
4
5
6
while true; do
python3 main.py & PID=$!
sleep 20m
kill $PID
wait $PID 2>/dev/null
done

对了,记得修改云服务器安全组规则,放行ollama11434端口。

ollama 开放局域网

Ollama 是一个流行的本地 AI 服务工具,但默认情况下它只能在本地访问。直接设置 Ollama 的环境变量 OLLAMA_HOST,使其监听局域网的 IP 地址。
新建系统环境变量:

  1. 系统变量 部分,点击 新建
  2. 变量名 输入框中,输入 OLLAMA_HOST
  3. 变量值 输入框中,输入 0.0.0.0,然后点击确定

完成后,Ollama 服务将在所有网络接口上监听,包括局域网。
然后再CMD进行端口转发,就可以在QQ上使用大模型了。

1
ssh -N -R 11434:192.168.5.4:11434 root@服务器公网IP

参考

1. Ollama 开放局域网访问
2. LangBot官网
3. QQ开放平台