工具爆炸问题:为什么你的智能体在 30 个工具时就会崩溃
每个智能体的演示都从三个工具开始。一个网页搜索,一个计算器,也许再加一个代码执行器。智能体每次都表现完美。于是你上线了,团队开始添加各种集成——Slack、Jira、GitHub、邮件、数据库查询、内部 API。六个月后,你的智能体拥有了 150 个工具,却有 40% 的概率选错。
这就是工具爆炸问题,也是生产环境智能体系统中最少被讨论的失败模式之一。退化并非线性的——而是断崖式的。一个在 5 个工具时准确率达 95% 的智能体,在你给它 100 个工具时可能会跌破 30%,即使模型和提示词完全没有改变。
非线性退化曲线
Berkeley Function Calling 排行榜讲述了一个清晰的故事:单个工具调用的准确率在隔离测试中可以达到 96%,但在大规模工具集、多轮对话的场景下会骤降至不到 15%。退化的发生源于三个叠加因素。
第一 ,上下文污染。每个工具定义都会消耗 token。一个简单的单参数工具在提示词中大约占用 96 个 token。一个包含 28 个参数的复杂工具则需要 1,633 个 token。将其扩展到 37 个工具,你仅在工具定义上就消耗了超过 6,000 个 token,而用户的实际查询还没有进入画面。对于 4K-8K 上下文窗口的模型来说,这几乎不留任何推理空间。
第二,语义混淆。现实组织中的工具并不具备清晰、互不重叠的描述。你最终会拥有 send_slack_message、post_notification、send_alert 和 create_channel_message——这些工具都可以合理地处理"通知团队这次部署的情况"。模型必须根据微妙的描述差异进行消歧,而随着候选集的增长,它猜错的概率越来越高。
第三,多步骤任务中的组合爆炸。当智能体需要从 100 个工具中串联三个工具时,它需要在大约一百万种组合的可能性空间中导航。规划开销的增长速度超过工具数量的增长,模型将推理预算花在了工具选择上,而非任务完成上。
阈值究竟在哪里
从业者们通过痛苦的经验总结出了大致的性能分级:
- 1-5 个工具:可靠。任何主流模型都能在最少的提示工程下很好地处理。
- 5-10 个工具:通过优化描述和仔细的工具命名可以正常运作。
- 10-30 个工具:可测量的退化开始出现。你需要架构层面的干预——检索、路由,或两者兼具。
- 30+ 个工具
