Skip to main content

A Nonebot plugin, Multi-Model Chat System | Hybrid Scheduling·Search Augmented·Persona Customization

Project description

NoneBotPluginLogo

NoneBotPluginText

nonebot-plugin-moellmchats

✨ 混合专家模型调度LLM插件 | 混合调度·联网搜索·上下文优化·个性定制·Token节约·更加拟人 ✨

license pypi python

🚀 核心特性

  • MoE架构(混合专家模型调度):动态路由至最优模型,支持所有OpenAI兼容接口;智能难度分级(简单/中等/复杂)自动匹配模型,Token消耗降低35%

  • 智能网络搜索整合:语义分析自动触发Tavily搜索,提供精准摘要,支持任意LLM

  • 立体上下文管理:群组/用户双层级隔离存储,群组滑动窗口,用户滑动窗口+TTL过期机制

  • 个性化对话定制:用户级性格预设,支持动态切换与自定义模板

  • 工业级稳定性设计:对话冷却时间 / 请求队列管理 / 请求失败自动重试

  • 更加拟人的回复风格:分段发送回复,每段根据内容长度增加延迟,支持自定义发送表情包

  • 多模态视觉支持:支持识别用户发送/引用的图片,以及工具调用中插件返回的图片(需配置视觉模型如GPT-4o);双轨路由机制:判定无需看图时自动回退至普通文本模型以节省成本;历史记录自动回退为纯文本,大幅节省Token

  • 极省Token的工具调用架构(Function Calling):预分类-后注入两阶段设计,仅在需要时将对应Tool Schema注入主模型;支持编写原生Python工具(custom_tools/);支持覆写NoneBot插件描述(custom_plugin_info.json

📦 安装

使用 nb-cli 安装 在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装
nb plugin install nonebot-plugin-moellmchats
使用包管理器安装 在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令
pip
pip install nonebot-plugin-moellmchats
uv
uv add nonebot-plugin-moellmchats

⚙️ 配置

.env 配置

在 nonebot2 项目的.env文件中添加下表中的必填配置

配置项 必填 默认值 说明
SUPERUSERS 超级用户,NoneBot自带配置项,本插件要求此项必填
NICKNAME 机器人昵称,NoneBot自带配置项,本插件要求此项必填
LOCALSTORE_USE_CWD 是否使用当前工作目录作为本地存储目录
COMMAND_START / 命令前缀

例:

SUPERUSERS=["your qq"]
NICKNAME=["bot","机器人"]
LOCALSTORE_USE_CWD=True  # 可选
COMMAND_START=["/",""]   # 可选

本插件主要配置

配置文件统一放在 nonebot_plugin_localstore.get_plugin_config_dir() 目录(参照 NoneBot Plugin LocalStore),首次运行时自动生成

文件 维护方式 说明 修改后是否需重启
providers.toml 手动 核心:服务商/API密钥/模型参数,支持四级参数继承 否(刷新模型指令)
config.json 手动 基础行为(历史长度、冷却、表情包等)
model_config.json 指令/手动 MoE调度、视觉/工具开关,支持指令实时切换 指令实时;手动需重启
temperaments.json 手动 性格预设的system prompt
custom_plugin_info.json 手动 覆写NoneBot插件描述以提升LLM调用精准度
custom_tools/ 手动 原生Python函数,供LLM直接调用 否(刷新工具指令)

→ 完整配置参考(含所有字段说明与示例)请见 Wiki

其他Wiki页面:自定义工具开发 · 插件集成 · 性格系统

🎮 使用

指令表

指令 权限 范围 参数 说明
@Bot或以nickname开头 群聊 对话内容 聊天对话
性格切换 群聊 性格名称 发送切换性格、切换人格、人格切换 均可
查看性格 群聊 发送 查看性格、查看人格 均可
ai 群聊 对话内容 若已开启和配置,快速调用纯ai助手。如 ai 你好
查看模型 超级管理员 私聊 / 群聊 搜索关键词(选填) 列出可用模型,支持多关键词模糊搜索(如:查看模型 openai 4o
查看配置 超级管理员 私聊 / 群聊 可视化展示当前大模型各项运行状态与绑定的模型
刷新模型 超级管理员 私聊 / 群聊 重新读取 TOML 并自动拉取各服务商最新模型列表
设置moe 超级管理员 私聊 / 群聊 0、1、开、关 是否开启混合专家调度模式
设置联网 超级管理员 私聊 / 群聊 0、1、开、关 是否开启网络搜索,如:设置联网 开
切换模型 超级管理员 私聊 / 群聊 模型名或编号 不使用moe时指定的默认模型,如:切换模型 1
切换moe 超级管理员 私聊 / 群聊 难度 模型名或编号 难度为0、1、2,如:切换moe 0 dpsk-chat切换moe 0 2
设置视觉模型 超级管理员 私聊 / 群聊 模型名或编号 设置视觉模型,如:设置视觉模型 3
设置分类模型 超级管理员 私聊 / 群聊 模型名或编号 设置分类模型,如:设置分类模型 1
设置工具/函数调用 超级管理员 私聊 / 群聊 0、1、开、关 控制是否开启函数调用机制,如:设置工具调用 开
刷新工具 超级管理员 私聊 / 群聊 热重载工具函数
插件黑名单 超级管理员 私聊 / 群聊 查看当前禁止大模型调用的插件列表
添加插件黑名单 超级管理员 私聊 / 群聊 插件标识 将插件加入黑名单,禁止大模型代为调用
移除插件黑名单 超级管理员 私聊 / 群聊 插件标识 从大模型调用黑名单中释放特定插件
设置私聊 超级管理员 私聊 / 群聊 0、1、开、关 是否开启超级管理员私聊bot
重置我的 / 清空上下文 私聊 / 群聊 清空自己的上下文对话记忆及CD状态(群聊中需要@Bot触发)
重置全部对话 超级管理员 私聊 / 群聊 清空所有用户的个人上下文及所有群聊环境记忆(群聊中需@Bot)
查看常驻插件 / 常驻插件 超级管理员 私聊 / 群聊 查看当前无视分类模型、强制注入给大模型的常驻插件/函数列表
添加常驻插件 / 添加常驻函数 超级管理员 私聊 / 群聊 插件/函数标识 将指定插件或函数设为常驻,强制大模型加载(如:添加常驻插件 web_search
移除常驻插件 / 移除常驻函数 超级管理员 私聊 / 群聊 插件/函数标识 从常驻插件列表中移除指定的插件或函数
查看消耗 / 查询token 超级管理员 私聊 / 群聊 数量或范围(选填) 查看API Token消耗记录。支持数量(如:5)、区间(如:10-15)、倒数(如:-50)

效果图

冷却与队列

冷却与队列

联网搜索

联网搜索

一个ai驯服另一个ai的实录

橙色头像为本插件的bot,使用了qwq-32b模型。(注:为了防止上下文干扰,新版的快速AI助手不再有群聊上下文,只保留用户上下文)

一个ai驯服另一个ai的实录

分段发送与表情包

分段发送与表情包

连续工具调用

连续工具调用

调用其他插件

调用其他插件

🔄 处理流程

flowchart TD
    A[用户提问] --> B{冷却/队列检测}
    B -->|通过| C[分类模型 Categorizer]

    C --> C_Cond(一次性综合判定:<br>筛选所需插件 + 视觉需求 + 难度级别)
    C_Cond --> D[只组装所需工具信息<br>并动态路由至最优模型]

    D --> E((大模型生成回复))

    E --> F{是否触发工具调用?}

    F -->|是| G[执行:原生Python函数<br> / 本地指令 / 联网搜索]
    G --> H[工具结果追加至临时上下文]
    H -->|携带执行结果闭环重试| E

    F -->|否| I[发送最终响应文本]

核心机制说明

  1. 智能冷却系统:每个用户拥有独立冷却计时器(cd_seconds配置);冷却期间的新消息进入队列,冷却结束自动处理

  2. 容错重试机制:网络错误时自动触发阶梯式重试(间隔:2s → 4s → 8s)

  3. 混合调度流程:预检阶段执行冷却状态检测;并行分析「问题复杂度」与「实时信息需求」;简单问题直连轻量模型,复杂问题调用专家模型

  4. Token消耗降低:动态Schema注入,日常聊天不携带工具说明,仅在触发特定任务时按需加载对应插件的Schema

更新日志

📢 完整历史更新日志请移步 CHANGELOG.md 查看。

鸣谢

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nonebot_plugin_moellmchats-0.20.6.tar.gz (61.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nonebot_plugin_moellmchats-0.20.6-py3-none-any.whl (65.0 kB view details)

Uploaded Python 3

File details

Details for the file nonebot_plugin_moellmchats-0.20.6.tar.gz.

File metadata

File hashes

Hashes for nonebot_plugin_moellmchats-0.20.6.tar.gz
Algorithm Hash digest
SHA256 833f54a2eae7e4c1ed113d0f9e81131dd647ea7d75ae364d30c8d91199a9d13b
MD5 13f9a633a7ac6780fa28e24f8f2c064d
BLAKE2b-256 0c0dae8a9c8ee37c6051ea5c6fae549a7ecf4db0e44cc1cdd081fcdffd9ec8d2

See more details on using hashes here.

File details

Details for the file nonebot_plugin_moellmchats-0.20.6-py3-none-any.whl.

File metadata

File hashes

Hashes for nonebot_plugin_moellmchats-0.20.6-py3-none-any.whl
Algorithm Hash digest
SHA256 324d5be62f78fbde167a12ab97d01205212de28d17d02c0f2dae0c278e87adec
MD5 1a98f1951649fe10860afa6d4b62b301
BLAKE2b-256 b9fdb40c99d8f03373d6f22220843a509f07a0ba3940d4d92a5bd608f668c858

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page