工具描述与发现
本节定位
很多人做 Agent 时,会先把工具函数接好,然后让模型自己选。
结果很快就会发现:
- 工具很多时容易选错
- 名字相近的工具容易混淆
- 参数不知道该怎么填
问题往往不在模型“不会调用”,而在于:
工具本身没有被描述清楚。
所以工具层真正的第一步,不是执行,而是:
- 描述
- 注册
- 发现
一个更适合新人的总类比
你可以把工具描述理解成:
- 给一个很大的工具箱贴清楚标签
如果工具箱里有很多把长得差不多的螺丝刀,
但每把都只写了模糊名字,
那人和模型都会很容易拿错。
所以工具描述的意义不是“多写点字段”,而是:
- 让系统更容易在正确场景里拿到正确工具
学习目标
- 理解为什么工具元数据会直接影响调用质量
- 学会设计更清楚的工具描述结构
- 理解工具发现是如何把“用户需求”映射到“候选工具”的
- 通过可运行示例看懂一个最小工具注册与发现系统
一、为什么工具不能只靠函数名存在?
1.1 对程序员来说够清楚,对模型不一定
比如下面两个函数名:
search_docssearch_policy
人类工程师也许很快能看出差别,
但模型并不知道:
- 哪个更适合查退款规则
- 哪个更适合查知识库文章
- 两者参数是否一样
如果缺少描述,模型看到的只是两个看起来相近的名字。
1.2 工具描述本质上是在降低歧义
一个好工具描述,至少应该回答:
- 这个工具是干什么的
- 它适合什么场景
- 需要哪些参数
- 返回什么结构
- 权限和风险等级如何
这些信息越清楚,
模型就越容易做出稳定选择。
1.3 一个类比:商场导购比货架编号更重要
工具注册表很像商场导购手册。
- 函数名像货架编号
- 描述像导购说明
只有编号,没有说明,
用户和模型都很容易找错东西。