Tool Selection 与 Tool Filtering
用描述帮助模型选对工具,用过滤和策略确保只暴露当前任务允许的工具。
学习目标
- 能说明Tool Selection 与 Tool Filtering解决什么问题,以及何时适用。
- 能解释为什么“向模型暴露全部写工具”是误区。
学习前需要掌握
背景与问题
工具很多时,模型可能在相似名称间误选,也可能看到当前任务根本不需要的写入能力。减少候选集合既能降低选择干扰,也能缩小潜在副作用范围。
Selection 是模型在当前可见工具中选择动作;Filtering 是应用在暴露工具之前决定可见范围。两者解决不同问题,不能让模型自己决定自己拥有什么权限。
概念定义
Selection 是模型在可见工具中选择;Filtering 是应用在模型看到之前按身份、任务和风险缩小集合。
直观理解
菜单说明帮助点菜,门禁决定哪些房间根本不会出现在可进入列表。
核心原理
过滤依据可以包括用户身份、任务阶段、资源范围和风险级别。初始阶段只读查询,得到具体授权后再开放对应写入动作,是一种常见分阶段策略;执行端仍应再次验证权限。
选择依赖工具描述、参数可获得性与预期结果。工具名称相近时,需要说明业务差别,例如“查询账单”与“下载账单附件”,而不是让模型只靠名称猜测副作用。
工具发现与实际可调用集合也不同。外部服务可以声明很多能力,宿主应只导入允许的一部分;工具目录更新后要重新审核,不能假定新增工具与旧工具具有相同风险。
过滤不是唯一安全边界。即使只暴露一个读取函数,如果它接受任意账户或路径,仍可能越权。Remote MCP 的工具允许列表与审批设置控制可用能力,资源级访问还需要服务端与调用端共同落实。
案例:客服查询阶段不开放退款工具
用户先问某笔订单为什么收费。应用只向当前 Agent 提供账单查询与政策读取工具,模型在这两个能力中选择;没有必要让它同时看到所有退款、取消和账户删除工具。
当用户明确提出退款,系统先核对身份、订单与退款条件,再决定是否开放对应动作并要求必要确认。如果模型在查询阶段“建议退款”,那只是候选建议,不会让隐藏工具自动出现,也不会给当前账户新增权限。
理解与实践步骤
- 按身份和任务生成允许集合
- 提供清晰描述
- 模型选择工具
- 执行层再次授权
- 记录选择与拒绝
实际应用
- 大型工具库
- MCP 集成
常见错误
- 把过滤规则写成模型提示,却仍向模型和执行器开放全部能力。
- 多个工具描述几乎一样,忽略输入前提、输出范围和副作用差异。
- 只限制工具名称,不限制工具可以访问的账户、目录和业务对象。
输入、输出与执行边界
输入
- 全部工具目录
- 用户权限
- 当前任务
输出
- 最小可见工具集
能力
- 大型工具库
- MCP 集成
安全风险与信任边界
工具可见不等于本次应当使用,过滤应结合任务、资源范围和参数前提。工具描述本身可能不准确或带有诱导信息,不能让描述中的自我推荐替代适用性检查,也不能因筛选通过就跳过执行前的语义校验。
性能与失败模式
列表太大会占用上下文并增加误选,过度过滤又可能移除完成任务必需的工具。评价应同时检查必需工具召回、无用候选、选错率与任务成功;只提高筛选精度,可能把困难任务全部拒之门外。
推荐学习资料
参考库不会生成虚假资源或无效外部链接。