为智能体编写工具:ACI 与 API 同等重要
大多数工程师对待智能体工具的方式与编写 REST 接口或库函数如出一辙:清晰地暴露功能、记录参数、处理错误。这对人类来说是正确的直觉。但对于 AI 智能体(AI Agents)来说,这完全是错误的。
智能体使用的工具是以非确定性的方式被消耗的,它被逐个 Token 解析,并由一个对上周二使用过什么工具没有持久记忆的模型来选择。你编写的工具 Schema 并不是文档——它是运行时提示词(runtime prompt),在推理时被注入到模型的上下文中,塑造着智能体做出的每一个决策。每一个字段名称、每一段描述、每一个返回值的结构都是一个设计决策,具有可衡量的性能影响。这就是智能体-计算机接口(ACI,Agent-Computer Interface),它值得你像对待任何关键的面向用户的界面一样投入工程精力。
最小可行工具集是特性,而非妥协
我看到团队在构建智能体系统时最常见的错误是将每一个可用的 API 接口都封装成工具。这听起来很完整,很强大,但它却在悄无声息地降低性能。
智能体上下文中的每一个额外工具都会消耗注意力预算,并增加一个模糊的选择点。当智能体有 20 个工具,且其中 3 个看起来都能回答当前查询时,模型会将概率分布在这三个工具上。而当它只有 5 个工具且只有一个相关时,正确选择的确定性几乎是百分之百。更多的工具并不意味着更强的能力;它意味着更多的失效面。
设计测试很简单:如果你团队的高级工程师都无法毫不犹豫地明确说明在特定情况下应该使用哪个工具,那么就不能指望 AI 智能体做得更好。工具分类中的模糊性就是智能体行为中的模糊性。
从覆盖最高影响力工作流的 3 到 5 个工具开始。进行彻底测试。仅当评估数据表明存在工作流缺口时才进行扩展。在实践中,最大的收益往往不是来自增加工具,而是来自整合工具。一个能够通过一次调用返回姓名、状态、近期交易和公开备注的 get_customer_context 工具,其表现优于三个独立的 get_customer_by_id、list_transactions 和 list_notes 工具——因为它减少了智能体必须做出的连续决策数量,而连续失败的影响是乘积式的。
这一点比大多数团队意识到的更为重要。如果每个工具调用的准确率为 90%,那么一个三步链条的准确率为 73%。一个七步链条则降至 48%。工具集的架构——即完成一项任务需要多少次连续调用——是一个头等的可靠性变量。
