Releases: LiteSuggarDEV/nonebot_plugin_suggarchat
Releases · LiteSuggarDEV/nonebot_plugin_suggarchat
V3.7.0
合并了来自Amrita的更新
What's Changed
- Merge from Amrita by @JohnRichard4096 in #182
Full Changelog: 3.6.0...3.7.0
V3.6.0
What's Changed
- 更新 README.md by @JohnRichard4096 in #178
- Add Agent workflow, MCP, and content moderation by @JohnRichard4096 in #181
Full Changelog: 3.5.0...3.6.0
V3.5.0
🚀 核心功能增强
1. 智能体模式 (Agent Mode)
- 新增实验性智能体模式,支持多轮工具调用
- 添加工具调用次数限制配置 (
agent_tool_call_limit) - 工具执行结果会作为观察结果反馈给模型
2. 多模态支持增强
- 新增多模态预设列表配置 (
multi_modal_preset_list) - 自动根据消息内容选择多模态或文本预设
- 改进图片消息处理逻辑
3. 工具系统重构
- 重构工具调用机制,支持递归调用
- 新增
STOP_TOOL工具用于结束任务处理 - 工具上下文增加
bot参数传递 - 添加
on_tools装饰器简化工具注册
⚙️ 配置优化
1. 配置结构重组
- 将
block_msg从CookieModel移至LLM_Config - 新增关键词匹配模式 (
keywords_mode):starts_with或contains - 工具配置增加智能体相关参数
2. 预设管理增强
- 新增预设测试功能 (
test_preset命令) - 支持批量测试所有预设的可用性
- 提供详细测试报告
🔧 架构改进
1. 事件系统重构
- 使用
EventTypeEnum替代原有的EventType类 - 统一事件模型响应类型为字符串
- 定义
SEND_MESSAGES类型别名提高代码可读性
2. API 模块标准化
- 增加模块文档字符串
- 改进函数注释和类型提示
- 统一工具选择参数导入路径
3. 聊天处理器优化
- 重构消息处理流程,提高可维护性
- 改进 token 计数和上下文限制逻辑
- 优化图片回复消息处理
🐛 问题修复与改进
1. 使用额度检查
- 将额度检查移至规则层 (
should_respond_with_usage_check) - 修复群聊和私聊的额度检查逻辑
2. 工具调用稳定性
- 增加工具调用异常处理
- 改进递归调用终止条件
- 优化工具执行结果展示
3. 消息处理改进
- 修复消息分段逻辑的正则表达式
- 改进转发消息的解析
- 优化多模态消息的构建
📊 监控与调试
1. 新增测试工具
- 预设测试命令提供性能数据:
- Token 消耗统计
- 响应时间测量
- 预设成功统计
2. 调试信息增强
- 增加详细的工具调用日志
- 改进错误处理和异常信息
🔄 向后兼容性
- 保持主要 API 接口的兼容性
- 配置项默认值保持向后兼容
- 事件系统接口基本保持不变
这个版本更新显著提升了插件的智能交互能力,特别是通过智能体模式实现了更复杂的任务处理流程,同时改善了系统的稳定性和可维护性。
What's Changed
- Merge amrita by @JohnRichard4096 in #176
Full Changelog: 3.4.6.2...3.5.0
V3.4.6.2
V3.4.6.1
V3.4.6
V3.4.5.3
V3.4.5.2
V3.4.5.1
What's Changed
- 修复Sessions和Memory存储问题,修复类型错误 by @JohnRichard4096 in #165
核心功能改进
- 数据库存储优化:将记忆数据 (
memory_json) 和会话数据 (sessions_json) 的存储格式从TEXT改为原生JSON类型(MySQL/MariaDB 为JSON,SQLite 为JSONB),提升查询效率并简化数据处理逻辑。 - 消息处理增强:
- 重构消息内容构建逻辑,使用强类型的
TextContent和ImageContent模型替代原始字典,提升类型安全性。 - 增加对图片消息 URL 的检查(确保
seg.data.get("url")存在),避免处理无效数据。
- 重构消息内容构建逻辑,使用强类型的
- 类型注解与代码质量:
- 完善变量类型注解(如明确
memory_l类型)。 - 使用
Message模型直接实例化替代model_validate方法,简化代码。 - 在 token 计算循环中增加异步等待 (
await asyncio.sleep(0)),避免阻塞事件循环。
- 完善变量类型注解(如明确
数据库迁移
- 新增迁移脚本
5740c5aae763_json.py,用于将现有文本格式数据转换为 JSON 格式(支持升级和回滚操作)。 - 初始化迁移脚本调整字段默认值(
server_default设置为'{}'和'[]')。
其他调整
- 版本号从
3.4.5升级至3.4.5.1。 - 移除冗余的
json.loads调用,直接操作 JSON 数据。 - 工具调用函数 (
tools_caller) 后增加空行以符合代码规范。
总结:本次更新主要优化了数据存储结构(文本→JSON),增强了消息处理的健壮性和类型安全,并进行了代码质量改进,均为向后兼容的优化。
Full Changelog: 3.4.5...3.4.5.1
V3.4.5
核心摘要
本次更新主要涉及底层协议适配器重构、Token 处理逻辑优化、功能增强和问题修复,提升了框架的稳定性、扩展性和对大模型响应的处理能力。
详细变更总结
1. 项目元信息更新 (README.md)
- 仓库地址变更: 项目主链接从
JohnRichard4096的仓库更改为LiteSuggarDEV。 - 项目描述简化: 副标题从 "高扩展性的大模型聊天框架" 简化为 "大模型聊天框架"。
- 依赖版本更新: 升级了 NoneBot2 的版本要求至
2.4.0+。 - 许可证信息更新: 更新了 License 徽章中的用户名以匹配新的仓库地址。
2. 协议适配器重构 (重大变更)
- 引入统一响应协议 (
utils/protocol.py):- 新增
UniResponse,UniResponseUsage,ToolCall等 Pydantic 模型,用于标准化不同大模型 API 返回的数据结构。 - 定义了通用的
ToolChoice类型,以更好地处理模型对工具调用的选择。
- 新增
- 适配器接口抽象化:
- 抽象基类
ModelAdapter的call_api方法现在返回统一的UniResponse对象,而非简单的字符串。 - 新增
call_tools抽象方法,要求所有协议适配器都必须实现工具调用的逻辑。
- 抽象基类
- OpenAI 适配器增强 (
utils/libchat.py):- 重写了
OpenAIAdapter.call_api方法,现在能处理流式响应并从中提取 Token 使用量 (usage) 信息。 - 新增了
OpenAIAdapter.call_tools方法,实现了符合新抽象的标准工具调用功能。
- 重写了
3. Token 处理与上下文管理优化
- Token 计算与限制逻辑重构 (
handlers/chat.py):- 将原有的
enforce_token_limit函数拆分为get_tokens(计算 Token) 和enforce_token_limit(执行清理) 两个函数,逻辑更清晰。 - Token 限制检查不再在准备消息时进行,而是在收到模型响应后,根据实际消耗的 Token 量进行清理,更加精确。
- 修复了可能因提示词过长而导致无限循环的问题。
- 将原有的
- 提示词模板增强: 系统提示词模板新增了
{user_id}和{user_name}变量,支持更个性化的对话。
4. 功能新增与改进
- 工具调用 (
ToolCall) 支持: 整个工具调用流程(从模型返回的原始数据到结构化ToolCall对象)现已整合到新的协议体系中。 - 思考链 (
Thought Chain) 处理优化: 思考链内容的清理(remove_think_tag)被移入get_chat函数中,处理时机更加合理。 - 调试信息增强: 在调试模式下,现在会打印出完整的统一响应对象 (
UniResponse),而不仅是回复内容。
5. 问题修复
- 导入错误修复: 在
API.py中,从openai.types的导入改为从本地utils.protocol导入ToolChoice,解决了可能的依赖或导入问题。 - 异常处理增强: 在
get_chat函数中,增加了更明确的错误日志和异常抛出,避免了静默失败。 - 类型注解修正: 多处修正了类型注解,使其与新的数据结构(如
UniResponse)保持一致。
6. 依赖更新
- 项目版本升级:
pyproject.toml中的项目版本从3.4.4.3升级至3.4.5。 - 依赖锁文件更新:
uv.lock文件随之更新。
总结
本次发布是一个重要的技术迭代版本。它没有直接增加面向用户的新功能,而是通过重构底层架构,引入了更强大、更统一的协议适配系统,并优化了核心的 Token 管理和上下文维护逻辑。这些改动为未来支持更多种类的大模型、实现更复杂的工具调用功能打下了坚实的基础,同时提高了当前版本的稳定性和可维护性。
What's Changed
- Unify API responses and add token usage tracking by @JohnRichard4096 in #163
Full Changelog: 3.4.4.3...3.4.5