工具调用清洗器 (astrbot_plugin_tool_use_cleaner)
这是一个AstrBot的插件,用于在LLM请求前,将先前轮请求中LLM发出的工具调用请求以及调用返回结果从请求体中移除,减少token浪费,提高对话效率。
这是一个过渡插件,作者已向上游提交了将此功能作为 enhancement 整合进 AstrBot 框架的 issue。若在未来的版本中被整合,将不再使用本插件。
功能特点
- 自动过滤对话历史中的工具调用请求和响应
- 可配置的功能开关,灵活控制清洗行为
- 减少LLM请求中的无用token,提高效率并节省成本
- 保持对话上下文的连贯性和相关性
工作原理
插件通过AstrBot的事件系统,在每次向LLM发送请求前(on_llm_request事件)拦截请求,然后:
- 过滤掉
tool角色的消息(工具调用返回结果) - 过滤掉
assistant角色中仅包含tool_calls而没有实际内容的消息(LLM发出的工具调用请求) - 保留其他所有相关的对话内容
配置选项
插件提供以下配置选项,可在AstrBot的插件配置界面中修改:
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| enable_function_call_cleaner | 布尔值 | true | 控制是否清除LLM发出的工具调用请求(调用响应默认一定清除) |
安装方法
- 在 AstrBot 的插件市场中
搜索本插件直接安装 - 通过 Astrbot WebUI 的插件安装按钮从
链接或文件安装
使用方法
- 启用插件后,它会自动工作,无需额外操作
- 根据需要,可以在插件配置中调整
enable_function_call_cleaner选项
调试信息
插件会在日志中记录以下信息:
- 插件初始化和卸载的状态
- 上下文清洗前后的消息数量变化
- 清洗过程中移除的工具调用及其响应消息数量
版本历史
v1.1.0
- 当存在llm响应存在tool_calls字段且content不为空时,依然保留该assistent字段,但剔除tool_calls内容。
v1.0.0
- 初始版本发布
- 支持过滤工具调用请求和响应
- 提供可配置的功能开关
作者
许可证
GNU Affero General Public License v3.0