A Nonebot plugin, Multi-Model Chat System | Hybrid Scheduling·Search Augmented·Persona Customization
Project description
🚀 核心特性
-
MoE架构(混合专家模型调度):
- 动态路由至最优模型,支持所有OpenAI兼容接口
- 智能难度分级(简单/中等/复杂)自动匹配模型,Token消耗降低35%
-
智能网络搜索整合:
- 语义分析自动触发Tavily搜索,提供精准摘要
-
立体上下文管理:
- 群组/用户双层级隔离存储,群组滑动窗口,用户滑动窗口+TTL过期机制
- 支持上下文长度定制(默认群组10条/用户8条)
-
个性化对话定制:
- 用户级性格预设,支持动态切换与自定义模板
-
工业级稳定性设计:
- 对话冷却时间
- 请求队列管理
- 请求失败自动重试
📦 安装
使用 nb-cli 安装
在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装nb plugin install nonebot-plugin-moellmchats
使用包管理器安装
在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令pip
pip install nonebot-plugin-moellmchats
pdm
pdm add nonebot-plugin-moellmchats
poetry
poetry add nonebot-plugin-moellmchats
conda
conda install nonebot-plugin-moellmchats
打开 nonebot2 项目根目录下的 pyproject.toml 文件, 在 [tool.nonebot] 部分追加写入
plugins = ["nonebot_plugin_llmchat"]
⚙️ 配置
由于文件较多,所以统一放在 data/moe_llm_chats/ 目录。注意json不能有注释,所以复制后记得删除。
基础配置 config.json(手动维护)
📌自动生成,修改后需要重启。Tavily搜索: 获取API Key。
{
max_group_history: 10, // 群组上下文最大长度
max_user_history: 8, // 每个用户上下文最大长度
user_history_expire_seconds: 600, // 用户上下文过期时间
cd_seconds: 0, // 每个用户冷却时间(秒)
search_api: "Bearer your_tavily_key", //联网搜索tavily api key。开启搜索必填
fastai_enabled: false, // 快速AI助手开关
max_retry_times: 3, // 最大重试次数
}
模型管理 models.json(手动维护)
⚠️必填。其中url、model、key必填,其他可省略。只能手动修改,重启生效。
{
"dpsk-chat": {
"url": "https://api.deepseek.com/chat/completions",
"key": "Bearer xxx",
"model": "deepseek-chat",
"temperature": 1.5,
"max_tokens": 1024,
"proxy": "http://127.0.0.1:7890"
},
"dpsk-r1": {
"url": "https://api.deepseek.com/chat/completions",
"key": "Bearer xxxx",
"model": "deepseek-reasoner",
"top_k": 5,
"top_p": 1.0
}
}
智能调度配置 model_config.json(指令维护)
📌 自动生成(默认不开启moe和网络搜索),支持QQ指令实时切换;若手动修改,重启生效。
模型名字必须为 medels.json 中的键值。
{
use_moe: false, // 启用混合专家模式
moe_models: {
// 问题难度分级模型映射
"0": "dpsk-chat", // 简单问题
"1": "dpsk-chat", // 中等问题
"2": "dpsk-r1", // 复杂问题
},
selected_model: "dpsk-r1", // 单一模式默认模型
category_model: "glm-4-flash", // 问题分类模型(建议用免费或较小的模型)
use_web_search: false, // 启用网络搜索
}
性格设定 temperaments.json (手动维护)
📌 不用写“你在群组”等设定,系统自动补全 | 修改后需重启生效
{
"默认": "你是xx角色。回答像真人且尽量简短,回复格式为@id content",
"ai助手": "你是ai助手。回答像真人且尽量简短,回复格式为@id content"
"雌小鬼": "你是一个雌小鬼"
}
用户性格设定 user_temperaments.json (指令维护)
📌 自动生成 | QQ指令实时切换个性 | 若手动修改,需重启生效
{
"用户1的qq号": "ai助手",
"用户2的qq号": "默认"
}
🎮 使用
指令表
| 指令 | 权限 | 范围 | 参数 | 说明 |
|---|---|---|---|---|
| @Bot或以nickname开头 | 无 | 群聊 | 对话内容 | 聊天对话 |
| 性格切换 | 无 | 群聊 | 性格名称 | 发送切换性格、切换人格、人格切换 均可 |
| 查看性格 | 无 | 群聊 | 无 | 发送 查看性格、查看人格 均可 |
| 查看模型 | 无 | 群聊 | 无 | 查看当前 model_config 配置 |
| ai | 无 | 群聊 | 对话内容 | 若已开启和配置,快速调用纯ai助手。如 ai 你好 |
| 切换模型 | 超级管理员 | 群聊 | 模型名字 | 不使用moe时指定的模型 |
| 设置moe | 超级管理员 | 群聊 | 0、1、开、关 | 是否开启混合专家调度模式 |
| 切换moe | 超级管理员 | 群聊 | 难度 模型名字 | 难度为0、1、2,如:切换moe 0 dpsk-r1 |
| 设置联网 | 超级管理员 | 群聊 | 0、1、开、关 | 是否开启网络搜索,如:设置联网 0 |
效果图
冷却与队列
联网搜索
🔄 处理流程
graph TD
A[用户提问] --> B{冷却检测}
B -->|冷却中| C[进入等待队列]
B -->|可响应| D{难度与联网评估}
C -->|冷却结束| D
D -->|需搜索| E[Tavily搜索]
E --> F[搜索结果摘要]
D -->|无需搜索| G[原始问题]
F & G --> H{难度分级}
H -->|简单| I[基础模型]
H -->|中等| J[进阶模型]
H -->|复杂| K[专家模型]
I & J & K --> L[生成响应]
L --> M[上下文存储]
L --> N{API状态}
N -->|成功| O[发送响应]
N -->|失败| P{重试次数}
P -->|未达上限| Q[延迟重试]
P -->|已达上限| R[错误提示与上下文回滚]
核心机制说明
-
智能冷却系统
-
独立计时:每个用户拥有独立冷却计时器(通过cd_seconds配置)
-
队列管理:冷却期间的新消息进入队列,冷却结束自动处理
-
-
容错重试机制
- 多级重试:网络错误时自动触发阶梯式重试(间隔:2s → 4s → 8s)
-
混合调度流程
-
预检阶段:优先执行冷却状态检测和队列管理
-
双评估层:并行分析「问题复杂度」与「实时信息需求」
-
分级路由:简单问题直连轻量模型(响应速度提升40%),复杂问题调用专家模型(准确度提升60%)
-
-
Token消耗降低
- 大致可降低API调用失败率78%,Token浪费减少63%,同时保障高并发场景下的系统稳定性。
鸣谢
- Nonebot 项目所发布的高品质机器人框架
- nonebot-plugin-template 所发布的插件模板
- nonebot-plugin-llmchat 部分参考
- deepseek-r1 我和共同创作README
- 以及所有LLM开发者
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nonebot_plugin_moellmchats-0.2.1.tar.gz.
File metadata
- Download URL: nonebot_plugin_moellmchats-0.2.1.tar.gz
- Upload date:
- Size: 30.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57051709dde6fe15d0d4321c37cc9416f8b9b7d30ce493a7f1cefd6fc7acca4f
|
|
| MD5 |
25493491c8158c9f3dcefa71d562b4c1
|
|
| BLAKE2b-256 |
961d7ea368f7f2290e7b764de1a5d9975d3c60695131ee0b88a9a92e918f523e
|
File details
Details for the file nonebot_plugin_moellmchats-0.2.1-py3-none-any.whl.
File metadata
- Download URL: nonebot_plugin_moellmchats-0.2.1-py3-none-any.whl
- Upload date:
- Size: 31.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cbdfa61682df7de94345bd010205b39354b14ce4e0269abca6059047599a6461
|
|
| MD5 |
3be69d5268911d015119282f49b45d83
|
|
| BLAKE2b-256 |
f190f8f17afab8fc9bd36756f8d3b63b9ccdafcce4bca016572416b2039f5942
|