Tool Selection
Tool Selection 是 LLM 根据用户意图和工具描述选择合适工具的过程。工具数量、描述质量和上下文都会影响选择准确率。
#concept
#evergreen
#ai
[!info] related notes
- 所属 MOC: Tool Calling Engineering MOC
- 相关: Tool Description, Function Schema
Tool Selection
一句话定义
Tool Selection 是 LLM 根据用户意图和工具描述选择合适工具的过程。它不是”模型随便选”,而是受工具数量、描述质量和上下文影响的决策过程。
核心原理
影响选择的因素
| 因素 | 影响 | 优化方式 |
|---|---|---|
| 工具数量 | 候选增加可能增加混淆与上下文成本 | 按实际评测选择候选,不设通用 20 个上限 |
| 描述质量 | 越清晰准确率越高 | 写好 description |
| 职责边界 | 越清晰越不容易选错 | 避免工具功能重叠 |
| 上下文 | 越相关选择越准 | 提供足够上下文 |
动态工具加载
读取服务端可信身份与角色
→ 从注册表获得当前授权范围内的候选工具
→ 根据任务相关性筛选或检索候选
→ 去重并按模型接口导出 schema
→ 模型选择后,在执行入口重新做权限与参数检查
任务上下文可用于排序,不能把模型传来的 user_role=admin 当授权。动态加载是发现与上下文预算机制,不是安全边界;检索漏掉必要工具也会降低完成率。
工具分组
tool_groups = {
"search": ["search_knowledge", "search_web", "search_database"],
"data": ["query_database", "create_chart", "export_data"],
"communication": ["send_email", "create_ticket", "notify_user"],
"admin": ["delete_record", "update_config", "manage_user"],
}
常见坑
- 候选无关或重叠: 按工具选择、参数正确率和任务完成率评测,而不是只数工具个数
- 职责重叠: 两个工具功能类似,LLM 不知道选哪个
- 不做动态加载: 所有场景都加载所有工具
- 不测试选择准确率: 不知道 LLM 选对了没有