当给 agent 增加工具越来越多时,它开始调用错误的工具。让模型自己写代码来调用它们,是解决办法。

Reddit r/AI_Agents 工具

摘要

文章认为,随着 agent 的工具集不断膨胀,直接调用工具的方式会逐渐失效。更稳健的解决方案是让模型在沙箱中编写代码,把工具当作函数来调用——这能减少上下文中的 schema 噪音、降低错误调用率,代价则是需要关注沙箱安全问题。

当 agent 只有少量工具时,直接调用它们毫无问题。但随着工具列表变长,问题就来了。每个工具的 schema 都会在 agent 开始真正工作之前全部塞进上下文,模型开始伸手去拿错误的工具,或者以混乱的顺序调用它们。常规的补救办法只能争取一点空间,之后就不管用了:缩短工具描述、将相关工具分组、在系统提示词中更严格地规定什么场景用什么工具——每种都有一点效果,但一旦任务需要连续使用多个工具,这些办法全都撑不住了。 真正站得住脚的做法,是不再把每个工具直接暴露给模型。给它一个小沙箱,让它写几行代码、把工具当作函数来调用,然后由它在代码中循环、过滤、链式组合这些调用,而不是每一步只做一次工具调用。 这带来两个变化。第一,上下文不再堆满一墙的 schema,每次运行的 token 消耗随之下降。第二,模型的错误调用变少了,因为编写一段短脚本本来就是它擅长的事情。 代价也是实实在在的:你现在运行的是模型写出的代码,所以这个沙箱能 import 什么、能访问什么,就成了必须严加管控的关键。如果你正在运行一个重度依赖工具的 agent,那么保留直接工具调用和让模型写代码调用工具之间,那条界线应该划在哪里?
查看原文

相似文章

为什么这么多智能体工具只是1:1的API封装?

Reddit r/AI_Agents

这篇文章认为,许多AI智能体工具只是1:1的API封装,将分支逻辑推给大语言模型,导致失败。作者推荐任务形态的工具,比如upsert_contact,将搜索/创建/更新逻辑封装在代码中,传递已知上下文,校验输入,并返回结构化错误。