The Bitter Lesson of Tool Calling
本文通过实证研究表明,利用类型化 Python 存根(typed Python stubs)进行工具调用的程序化工具调用方式,在面对多种语言模型以及并行执行和上下文退化等挑战性条件时,是原生 JSON 工具调用的一种稳健且通常更优的替代方案。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你有一个超级聪明的机器人助手,它可以与外界交流。为了完成任务,这个机器人需要向其他程序寻求帮助,比如查询天气或计算数学题。长期以来,机器人请求帮助的唯一方式是使用一种非常严格、死板的格式,叫做“JSON”。你可以把它想象成一个机器人只能通过发送极其微小的、预印好的明信片来提出请求。如果它需要做三件事,它必须写三张单独的明信片,写完第一张并等待回复后,才能写第二张,以此类推。这种方式很有序,但既缓慢又笨拙。
然而,由于这个机器人也是一位出色的程序员,科学家们在想:为什么不让它直接编写一个计算机程序来完成工作呢?与其使用明信片,不如让机器人编写一段短小的脚本——一套指令,告诉计算机具体要做什么,从而一次性完成任务。这被称为“程序化工具调用”(programmatic tool calling)。这就像是给了机器人一支笔和一个笔记本,而不仅仅是明信片。核心问题在于:这种全新的、灵活的方式真的更好吗?还是说旧的、死板的明信片方法仍然是“山巅之王”?这篇论文深入探讨了这个问题,旨在研究允许机器人编写代码是否能让它成为一个更快、更聪明、更可靠的助手。
研究人员设计了一个大规模测试,使用了 14 个不同版本的这些 AI 模型,涵盖了从较旧的模型到最新、最强大的世代。他们让这些模型经历了一场由 309 个不同任务组成的“试炼”,从简单的单步工作到复杂的场景(例如机器人需要同时处理多项任务或将步骤串联起来)。他们将旧的“明信片”方法(JSON 工具调用)与新的“脚本”方法(程序化工具调用)进行了对比。
结果有点令人惊讶,也带给我们一些关于技术演进的启示。研究发现,对于大多数较新、更聪明的模型来说,编写脚本与发送明信片一样好,甚至更好。事实上,最新的模型系列(GPT-5.6 系列)获得了巨大的提升,在允许编写代码时,其准确率提高了约 10.6%。这就像是给赛车手换了一条更好的赛道;他们不仅跑得更快,而且跑得更聪明。
但这里有一个转折:论文指出,这种新方法并不是适用于“每一个”机器人的魔杖。较旧的模型在面对脚本方法时表现挣扎。其中三个旧模型在被要求编写代码时感到困惑,产生了损坏的脚本,因为它们无法正确处理格式,导致程序崩溃。这似乎表明,使用这种新颖、灵活方法的能力,很大程度上取决于模型的“大脑”有多“新”以及有多强大。论文认为,区别不在于机器人的制造公司(比如 Anthropic 对比 OpenAI),而在于机器人的“世代”。最新的模型已经准备好迎接脚本了;而旧的模型仍困在明信片阶段。
研究人员还测试了这些方法在压力下的表现。当机器人需要同时处理许多事情时(例如同时发送 100 个请求),旧的明信片方法开始崩溃,出现了丢弃调用和遗漏任务的情况。然而,脚本方法却能稳步推进,在处理大量工作量时依然游刃有余。同样,当机器人被要求从海量混乱的信息中进行筛选(即“上下文腐烂”测试)时,脚本方法保持了稳定性,而旧的方法则表现出性能上的波动。
那么,结论是什么?论文表明,对于最新且最顶尖的 AI 模型,让它们通过编写代码来调用工具是一种可行、稳健且通常更优越的替代方案。它能更快地处理复杂的任务链,并且在工作量变重时不会感到不知所措。然而,这目前还不是一个通用的解决方案。如果你使用的是较旧的模型,你可能仍需要坚持使用旧的明信片风格,否则机器人可能会被自己的脚绊倒。这里的“苦涩教训”是:虽然基于代码的智能体前景光明,但我们必须确保我们的工具确实足够聪明,能够应对这次升级。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。