一、什么是 Nonebot2
NoneBot2
,简称 nonebot、nb
,是一个开源的、跨平台的Python异步机器人框架,主要用于搭建能够运行在QQ、微信、飞书等聊天平台上的聊天机器人。在本文中,主要使用 Nonebot2 对 QQ 信息进行处理并回复。
在使用 Nonebot2 之前需要知道 Nonebot2 究竟是干什么的,很多同学误以为使用 Nonebot2 就可以链接上 QQ,实际上 Nonebot 并不提供连接能力,而只对消息本身做处理。要连接上 QQ 还需要一个连接引擎,或者称为协议实现。以 Onebot 协议为例,一个引擎连接 QQ 后,以 Onebot 协议的规范提供一系列处理接口,在 Nonebot 中同样选择使用 Onebot 协议从连接引擎中获取传递的消息以及一系列 Onebot 协议约定的 API 。使用这些 API,Nonebot 就获得了对 QQ 的消息获取、消息回复等 API,从而拥有了对 QQ 的操作能力。
在 Nonebot 中拥有许许多多的 Plugins(插件),Nonebot 在接收到消息后会将消息分发到相匹配的插件中,由插件对消息做实际的处理。
整个流程简化如下图所示:
二、Nonebot 安装与接收 QQ 消息
第一步:安装 nb 并启动(可直接用官方教程安装,点击跳转)
- 安装项目脚手架 nb-cli
python -m pip install --user pipx python -m pipx ensurepath pipx install nb-cli
- 使用脚手架创建一个框架项目,在命令行中输入
nb create
在这一步中将会提示你选择模板,可以按照下面列出的选项来选择:[?] 选择一个要使用的模板: bootstrap (初学者或用户) [?] 项目名称: awesome-bot [?] 要使用哪些驱动器? FastAPI (FastAPI 驱动器) [?] 要使用哪些适配器? Onebot V11 (选择 Onebot 的适配器) [?] 立即安装依赖? (Y/n) Yes [?] 创建虚拟环境? (Y/n) Yes
- 进入刚刚创建的项目中,输入
nb run
启动。如果使用的是 pip 或者是一般 virtualenv 的虚拟环境安装 nb-cli,则需要激活对应的虚拟环境再进行操作。
第二步:安装协议实现(引擎)并启动
- 选择引擎并安装。(由于各类原因,我不应该在这里指明要使用的协议实现,请移步 github 搜索
NTQQ
自行查找) - 启动引擎。
第三步:引擎与 Nonebot 通信
- 请自行查看你选择引擎文档,根据文档配置 WS 通信地址,通常格式如下图所示
第四步:使用 With AI Agents 插件处理信息。
1 安装插件,输入下面的命令
nb plugin install nonebot-plugin-with-ai-agents
2. 在前面创建的项目主目录中,创建一个 .env
的文件,填入以下信息,其中 AI 的 Key 可以在对应的平台中申请,详情可以查看本文第三节。
# 配置信息
WITH_AI_AGENTS__API_KEY = <你的大模型 api key,如”sk-xxxx“>
WITH_AI_AGENTS__PLATFORM = <你的大模型平台,如”dashscope“>
WITH_AI_AGENTS__MODEL_NAME = <你的大模型名称(非必填),如”qwen-turbo“>
WITH_AI_AGENTS__TAVILY_API_KEY = <Tavily 搜索 api key(非必填),如”tvly-xxxxx“>
三、WIth AI Agents 插件
欢迎各位同学使用,With AI Agents 插件,插件仓库地址:https://github.com/yejue/nonebot-plugin-with-ai-agents
在这个仓库中,我详细介绍了这个插件,并且列出了申请平台 API KEY 的文档链接。