The Bitter Lesson of Tool Calling

TL;DR

本研究比较程序化工具调用(PTC)与原生JSON调用,在14个模型中,PTC在BFCL v4上提升了10.6%的准确率,表现稳定。

cs.CL 🔴 高级 2026-08-07 101 次浏览
Ishan Patel Sahil Sen Elias Lumer Vamse Kumar Subbiah
大语言模型 工具调用 程序化脚本 模型评估 基准测试

核心发现

方法论

本研究采用系统性实证评估方法,将14个不同版本的语言模型在BFCL v4基准上,比较两种工具调用范式:JSON调用与程序化调用(PTC)。程序化调用通过导出类型化Python存根,模型生成脚本,执行后直接获得结果,减少交互轮次。研究设计包括三项消融实验:链式调用、并行调用和上下文干扰,旨在验证PTC在复杂任务中的表现。评估指标为准确率,结合绝对差异和置信区间,确保结果的统计显著性。所有模型在温度设为0的条件下运行,确保输出的确定性。

关键结果

  • 在BFCL v4的14个模型中,11个模型的程序化调用准确率优于或等于JSON调用,特别是GPT-5.6系列模型实现了10.6%的绝对提升,达到84.1%的准确率。五个Anthropic模型全部达到或超过基线,显示出模型世代的能力提升与范式适应性。三款较旧的GPT模型(GPT-4o、GPT-4.1、gpt-4o)在程序化调用中表现不佳,主要由于代码中的换行符编码问题,导致语法错误。多任务链式调用中,程序化范式在链长≥12时,准确率比JSON范式高出18.8%。在高并发fan-out(N=70-72)场景下,程序化调用保持100%的枚举准确率,而JSON调用在超过70时开始掉落,显示出结构性限制。上下文干扰实验中,程序化调用的准确率稳定,仅下降2.3%,而JSON调用下降32%,表现出更强的鲁棒性。
  • 结果显示,程序化工具调用在模型能力的演进中表现出更好的适应性,尤其在复杂、多任务、多并发场景中优于传统JSON调用。其通过脚本化的方式,避免了JSON格式的硬性限制,充分利用模型的代码生成能力,显著提升了多步骤、多API调用的效率和准确性。

研究意义

本研究揭示了程序化工具调用作为一种新范式,具有广泛的应用潜力。它不仅解决了JSON调用在多任务链、多API并发中的瓶颈,还为未来大规模、多模态、多任务的智能系统提供了技术基础。通过系统性评估,验证了其在不同模型世代中的稳健性,为模型能力的持续追踪提供了新工具。这一发现对于推动大语言模型在实际场景中的部署具有重要意义,尤其是在需要复杂逻辑、多步骤推理和多API集成的应用中。研究强调了模型能力演进与范式选择的关系,提示未来模型设计应更重视脚本化和程序化能力的培养。

技术贡献

本论文提出了基于类型化Python脚本的程序化工具调用(PTC)框架,突破了传统JSON调用的结构限制。核心技术包括:• 利用类型化Python存根定义API接口,模型生成脚本;• 通过子进程执行脚本,直接获取工具调用结果;• 设计三项消融实验验证链式、并行和上下文鲁棒性。该方法显著减少交互轮次,提高多API、多步骤任务的成功率。与现有的JSON调用相比,PTC在模型能力逐代提升的同时,保持了更高的鲁棒性和扩展性,为大模型的工具调用提供了新的工程实现路径。

新颖性

本研究首次系统性比较了程序化脚本调用与传统JSON调用在多个模型世代中的性能表现,特别是在复杂任务和高并发场景下的差异。创新点在于:• 提出类型化Python存根作为API表达方式,增强模型脚本生成能力;• 设计多场景消融实验,验证范式在链式、并行和上下文干扰中的优势;• 通过大规模模型评估,揭示模型世代对范式适应性的影响。此工作突破了以往仅在编码任务中验证的局限,首次在标准化基准上展示了程序化调用的优越性。

局限性

  • 部分模型(如GPT-4o、GPT-4.1)在多行脚本编码中出现换行符编码问题,导致语法错误,影响程序化调用效果。这反映出模型在代码生成中的能力差异,限制了其在复杂脚本中的应用。
  • 当前方法依赖于子进程执行,存在一定的计算开销,尤其在大规模、多API调用场景中,可能影响实时性和效率。
  • 在极端上下文负载(如128个函数Schema)下,模型表现仍有波动,未来需优化模型对复杂上下文的理解和处理能力。

未来方向

未来工作将集中在:• 改进模型代码生成能力,解决多行脚本中的编码问题;• 探索动态类型推断和自适应脚本优化技术,提升鲁棒性;• 将程序化调用扩展到多模态、多任务、多API场景,推动其在实际应用中的部署;• 结合强化学习和自我监督,优化模型在复杂环境中的工具调用策略。整体目标是实现更高效、更稳健、更智能的工具调用体系,推动大模型向自主、多功能、多场景的方向发展。

AI 总览摘要

在当今人工智能快速发展的背景下,大型语言模型(LLMs)逐渐成为智能系统的核心驱动力。它们不仅能理解和生成自然语言,还能调用外部工具和API,完成复杂任务。然而,现有的工具调用方式主要依赖于结构化的JSON格式,存在表达能力有限、扩展性不足的问题。本文提出了一种基于程序脚本的范式——程序化工具调用(PTC),通过导出类型化Python存根,模型生成脚本,直接执行工具调用,极大地提升了多步骤、多API、多并发场景下的性能表现。

研究团队在BFCL v4基准上,系统性评估了14个不同版本的模型,比较了传统JSON调用与PTC的性能差异。结果显示,绝大多数模型在PTC下的准确率优于或持平于JSON调用,尤其是最新的GPT-5.6系列,提升幅度达到10.6%。在链式调用、并行调用和上下文干扰等复杂场景中,PTC表现出更强的鲁棒性和扩展性。其在高并发fan-out(N≥70)场景中,保持了100%的调用枚举准确率,而JSON调用则出现明显的掉落。

这些发现表明,程序化工具调用不仅是一种技术创新,更是一种面向未来的范式转变。它充分利用模型的代码生成能力,突破了JSON格式的限制,为实现更复杂、更智能的自动化系统提供了基础。未来,随着模型能力的不断提升,PTC有望在多模态、多任务、多场景的应用中发挥更大作用,推动人工智能向更高层次的自主性迈进。

然而,研究也指出了当前方法的局限性,包括模型在多行脚本编码中的编码差异、执行效率问题以及在极端上下文负载下的表现不稳定。未来的工作将集中在优化模型的代码生成能力、提升脚本执行效率,以及扩展到多模态、多任务环境中,推动这一范式的广泛应用。总体来看,本文为大模型工具调用提供了新的思路和实践路径,为智能系统的未来发展奠定了坚实基础。

深度分析

研究背景

近年来,随着大规模预训练模型(如GPT系列、Claude系列)的崛起,语言模型在自然语言理解和生成方面取得了突破性进展。工具调用作为增强模型能力的重要手段,已成为研究热点。早期工作如API-Bank、T-Eval等基准测试了模型调用API的准确性,但多依赖结构化JSON格式,存在表达能力受限、难以扩展的问题。Wang等(2024)提出的CodeAct显示,代码行动在多工具、多任务场景中优于纯文本调用,开启了程序化调用的探索。近年来,诸如Hugging Face、Anthropic等公司开始尝试将代码执行引入工具调用,强调其可执行性和可调试性。尽管如此,缺乏系统性评估不同范式在多模型、多场景中的性能表现,也未充分验证程序化调用在复杂任务中的优势。

核心问题

当前工具调用主要依赖JSON格式,存在多方面瓶颈:• 在多步骤链式调用中,模型需多轮交互,效率低下;• 高并发fan-out场景下,JSON调用难以扩展,容易掉落调用;• 结构化表达受限,难以应对复杂参数和多API集成。这些问题限制了大模型在实际复杂任务中的应用潜力。尤其是在需要多步骤推理、多API并发调用的场景中,传统方法表现出明显不足。如何突破JSON格式的限制,提升工具调用的效率、鲁棒性和扩展性,成为亟待解决的核心问题。

核心创新

本论文的核心创新包括:1)提出基于类型化Python存根的程序化调用框架,模型通过生成脚本实现工具调用,突破JSON格式的表达限制;2)设计多场景消融实验,验证在链式、并行和上下文干扰场景中的优越性,揭示范式在不同复杂度任务中的表现差异;3)在大规模模型评估中,系统性分析模型世代对范式适应性,验证其在实际应用中的鲁棒性。该方法充分利用模型的代码生成能力,减少交互轮次,提高多API、多步骤任务的成功率,显著优于传统JSON调用。

方法详解

  • �� 定义任务:每个任务包含用户自然语言请求、函数接口(带类型签名)和真实调用(ground-truth)集。模型需输出正确的调用方式。• 两种范式:JSON调用通过结构化JSON定义API,模型输出调用对象;程序化调用导出类型化Python存根,模型生成脚本,直接在子进程中执行。• 脚本设计:模型写入Python脚本,导入存根,调用API函数,输出结果。• 执行机制:脚本在子进程中运行,输出结果被解析,无需额外轮次。• 消融实验:链式(多步骤调用)、并行(fan-out)、上下文干扰(大量Schema)场景下,评估两范式性能差异。• 评估指标:准确率(正确调用且参数匹配),结合置信区间,确保统计显著性。• 模型设置:所有模型在温度0下运行,确保输出的确定性。

实验设计

采用BFCL v4基准,包含309个任务样本,覆盖多类别场景。每个样本定义用户请求、函数接口和正确调用。模型在不同范式下生成调用,评估准确率。三项消融实验分别验证链式、多任务并行和上下文干扰的影响。模型包括14个版本,从2024年11月至2026年7月发布。所有模型在温度设为0的条件下运行,确保输出的确定性。评估指标为:• 调用正确率:所有调用参数正确且完整;• 置信区间:95%的Wilson区间;• 失败处理:语法错误或运行错误判为0。实验结果通过对比不同模型、不同范式、不同场景的性能,验证PTC的优越性。

结果分析

  • �� 在BFCL v4中,11个模型的程序化调用准确率优于或等于JSON调用,尤其是GPT-5.6系列模型,提升幅度达10.6%;• 在链式任务中,程序化调用在链长≥12时,准确率比JSON高出18.8%;• 在高fan-out场景(N≥70)中,程序化调用保持100%的枚举准确率,而JSON调用在超过70时开始掉落,显示出结构性限制;• 在上下文干扰实验中,程序化调用的准确率仅下降2.3%,而JSON调用下降32%,表现出更强鲁棒性。整体来看,程序化调用在复杂、多任务、多并发环境中表现出更优的性能和稳定性,验证了其作为工具调用新范式的潜力。

应用场景

  • �� 立即应用:在企业级AI助手、自动化问答系统中,采用程序化调用提升多步骤、多API集成的效率;• 长远愿景:推动大模型在自主推理、多模态交互、复杂任务规划中的应用,构建具备更强逻辑推理和多任务处理能力的智能系统。未来,结合强化学习和自我监督技术,优化脚本生成策略,将程序化调用扩展到多模态、多任务、多场景的实际部署中,推动AI系统的自主性和智能化水平不断提升。

局限与展望

  • �� 当前方法在多行脚本编码中受到模型编码能力限制,部分模型(如GPT-4.1)在多行脚本中出现换行符编码问题,导致语法错误,影响效果;• 执行效率方面,子进程调用存在一定开销,可能影响实时性;• 在极端上下文负载(如128个Schema)下,模型表现仍有波动,需进一步优化模型对复杂上下文的理解能力。未来应加强模型代码生成能力,提升脚本执行效率,并探索更高效的上下文管理策略。

通俗解读 非专业人士也能看懂

想象你在厨房做饭,传统的方法就像用一个固定的食谱,每次都得按照步骤一一操作,不能灵活调整。而程序化工具调用就像你用一台智能厨师,它可以根据你的需求,自己写出一段“食谱”,然后一气呵成地完成所有步骤。这个“厨师”可以同时准备多道菜,也能根据不同的食材灵活调整做法。这样一来,不仅效率更高,还能做出更复杂的菜肴。研究中,科学家让模型像这个智能厨师一样,写脚本调用外部工具,避免了传统JSON格式的限制,提升了处理复杂任务的能力。就像厨房里的厨师变得更聪明、更灵活一样,模型也变得更强大、更智能。

简单解释 像给14岁少年讲一样

你知道吗?大模型就像一个超级聪明的机器人助手,它可以帮你写作、回答问题,还能调用各种工具,比如查天气、计算数学题。以前,它调用工具的方法就像用一个死板的信封,把所有信息装进去,然后寄出去,等待回复。这种方法虽然简单,但有时候太慢,还容易出错。现在,科学家们发明了一种新办法,就像让机器人自己写一段小程序,把所有的步骤都写在一块,然后自己跑起来,直接得到答案。这就像你让机器人自己写一份食谱,然后自己做菜,不用你一遍遍指挥。这个新方法叫程序化调用,它让模型变得更聪明、更快,也更能应对复杂的任务。未来,这样的机器人助手会变得更厉害,能帮我们做更多事情!

原文摘要

Tool use transforms LLMs into agents that act beyond their training data, and for code-capable models, programmatic tool calling extends this further by replacing rigid JSON calls with scripts that chain and parallelize naturally. However, a systematic evaluation of tools as code on an established benchmark across current and prior model generations under real-world task conditions has not been conducted. In this work, we empirically compare programmatic tool calling (PTC) to native JSON tool calling across 14 language models on BFCL v4. In the programmatic tool calling paradigm, tools are exposed as typed Python stubs that the model invokes through code, with execution and results handled in a single agent turn. Programmatic tool calling matches or exceeds native JSON tool calling in 11 of 14 models on BFCL v4, with the GPT-5.6 family achieving a 10.6% improvement over the JSON tool calling baseline. Further, it matches or outperforms baseline in 13 of 14 models under parallel fan-out, and holds stable under context rot conditions where baseline degrades 2.3% on average. Our results demonstrate that programmatic tool calling is a viable and robust alternative to JSON tool calling, with performance tracking model capability across release generations.

cs.CL

参考文献 (8)

HyperTool: Beyond Step-Wise Tool Calls for Tool-Augmented Agents

Yaxin Du, Yifan Zhou, Yujie Ge 等

2026 1 引用 查看解读 →

API-BLEND: A Comprehensive Corpora for Training and Benchmarking API LLMs

Kinjal Basu, Ibrahim Abdelaziz, Subhajit Chaudhury 等

2024 47 引用 查看解读 →

Planning, Creation, Usage: Benchmarking LLMs for Comprehensive Tool Utilization in Real-World Complex Scenarios

Shijue Huang, Wanjun Zhong, Jianqiao Lu 等

2024 98 引用 查看解读 →

Executable Code Actions Elicit Better LLM Agents

Xingyao Wang, Yangyi Chen, Lifan Yuan 等

2024 584 引用 查看解读 →

The Deterministic Horizon: When Extended Reasoning Fails and Tool Delegation Becomes Necessary

Dongxing Guo, Jikun Wu, S. Yiu

2026 1 引用 查看解读 →

T-Eval: Evaluating the Tool Utilization Capability of Large Language Models Step by Step

Zehui Chen, Weihua Du, Wenwei Zhang 等

2023 100 引用 查看解读 →

On Effectiveness and Efficiency of Agentic Tool-calling and RL Training

Tongliang Liu, Cheng Qian, Matej Cief 等

2026 1 引用 查看解读 →

CONFETTI: Conversational Function-Calling Evaluation Through Turn-Level Interactions

Tamer Alkhouli, Katerina Margatina, James Gung 等

2025 15 引用 查看解读 →