乐于分享
好东西不私藏

AI Agent每次调用工具要多等3秒——问题不在模型,在工具描述的设计

AI Agent每次调用工具要多等3秒——问题不在模型,在工具描述的设计

一个AI Agent每次调用工具都要额外等2到3秒。

不是模型推理慢。同样的模型,同样的prompt,不用工具时响应流畅得像聊天。一旦进了工具调用流程——选工具、填参数、等模型确认——整个节奏就卡住了。之前写过一个🔗用AI Agent搭工具链的完整实践[1],那次是搭起来能用,这次是搭起来好用。

我一开始以为是工具太多了。Agent注册了20多个工具,每次都要从列表里挑,模型得多花时间理解每个工具是干嘛的。这是我第一个直觉。

于是我做了第一件事:砍工具。从20砍到12,再把剩下的按使用频率排序,高频的放前面。测试了一下——没变化。

第二件事:简化工具描述。原来每个工具的description写得很详细,一两百字,把参数、边界条件、返回格式全写进去了。我把它们砍到30字以内,只保留核心用途。还是没变化。

说到这你可能猜到了——问题不在工具数量,也不在描述长度。

后来我跟进了一下每次工具调用的完整时间线,发现卡点不在模型理解工具,而在模型确认工具选择那一步。大部分LLM的工具调用流程是两阶段:先选工具→再填参数。但有些模型实现里,选完工具后还要回头check一遍——"我选的这个对吗?"——这一步消耗掉了大部分额外时间。

怎么发现的?我给每个工具调用加了计时日志,精确到毫秒级。发现选工具这一步耗时不到200ms,但从选完到进入参数填充,中间有个接近2秒的空窗期。这不是模型推理时间,是框架层在等模型的"二次确认"。

改法其实很简单:关掉二次确认机制。我们用的Agent框架有一个recheck_tool_selection的配置项,默认是true。设成false之后,模型选完工具直接进入参数填充阶段,跳过了那个确认环节。

改了之后,单次工具调用耗时从平均3.2秒降到了800毫秒。

事后想想这件事,问题不在于框架有这个配置,而在于我默认它开着是对的。在很多场景下,二次确认确实能减少错误调用。但我们的场景是:工具定义清晰、参数规范严格、每次调用都带完整的上下文——模型选错的概率本来就低。为那1%的错误率,让99%的调用多等2秒,不合理。

这个取舍不是技术问题,是场景理解问题。

后来我在另外两个项目里也发现了类似的配置项:

  • 一个叫 tool_choice_confidence_threshold,默认0.7,调低到0.3之后延迟降了60%
  • 一个叫 parallel_tool_calls,默认false(串行调用),改成true后快了40%

每个框架都有自己的默认值,但默认值是为通用场景设计的。如果你的场景不一样,不改就是白交学费。

上周跟一个朋友聊,他说他的Agent每次调用工具要等4秒,一直以为是模型太慢,准备换模型。我让他查了一下框架配置,关了二次确认之后,直接好了。

所以如果你也在用AI Agent做工具调用,感觉响应不够快——第一步不是换模型,是先查配置。

引用链接

[1]🔗用AI Agent搭工具链的完整实践: https://mp.weixin.qq.com/s/TSBOgzD20DuS7G0DtYkK5g