AI智能体的工具调用与代码执行:选择正确的动作原语

AI智能体的工具调用与代码执行:选择正确的动作原语

💡 原文英文,约3600词,阅读约需13分钟。
📝

内容提要

文章比较了AI智能体的两种动作机制:工具调用与代码执行。工具调用由模型逐次发起单个请求,结果返回上下文,适合单次、低延迟查询,便于审计;代码执行让模型编写脚本在沙箱中批量调用工具,仅返回最终结果,适合扇出与聚合任务,可减少token消耗并提升准确率。选择取决于调用次数、数据敏感性、延迟、基础设施与审计需求,多数生产智能体会按任务混合使用两者。

🔎

延伸解读

机制差异:上下文污染与结果过滤

工具调用将每个中间结果都推入模型上下文,模型需直接阅读并推理;代码执行则让模型编写脚本在沙箱中批量调用工具,仅最终输出返回模型。这意味着代码执行能避免大量无关数据污染上下文,尤其适合扇出与聚合任务。但代价是模型无法直接观察中间结果,若任务需要模型对中间数据做自然语言推理,则工具调用更合适。

性能数据:代码执行在复杂任务上的优势

Anthropic的基准测试显示,程序化工具调用在复杂研究任务上平均token使用量从43,588降至27,297,减少37%,同时GAIA基准准确率从46.5%提升至51.2%。更早的CodeAct论文也发现,通过可执行代码行动的智能体在复杂多步任务上成功率高出20%。这些数据表明代码执行不仅是成本优化,还能通过将编排逻辑交给代码来减少模型在自然语言中跟踪中间值的错误。

决策框架:何时选择哪种原语

选择取决于多个因素:调用次数少、结果需模型直接推理、数据敏感性低、延迟要求紧、无沙箱基础设施、需逐动作审计时,工具调用更优;调用次数多、结果只需过滤或聚合、数据敏感或体积大、工作流本身多轮往返、已有沙箱环境、更关注聚合结果时,代码执行更佳。实际生产中,多数智能体会按任务混合使用两者,而非固定一种。

风险与限制:代码执行的隐性成本

代码执行并非无条件升级。单次查询任务使用代码执行会因沙箱启动增加延迟而无收益;若任务需要模型对中间结果进行自然语言推理,过滤数据会破坏目的;没有现成安全沙箱的团队需承担搭建与维护成本;审计方面,工具调用是清晰可记录的事件,而生成脚本的内部行为在事后调试时更难追踪。此外,程序化工具调用目前仍为测试版功能,生产使用前需核对最新文档。

❓

Q&A

AI智能体的工具调用和代码执行有什么区别?

工具调用是模型逐次发起单个请求,每个结果都返回模型上下文,适合单次、低延迟查询,便于审计;代码执行是模型编写脚本在沙箱中批量调用工具,仅最终结果返回模型,适合扇出与聚合任务,可减少token消耗并提升准确率。

代码执行在什么场景下比工具调用更有优势?

当任务需要多次调用工具、扇出或聚合时,代码执行更有优势。例如查询15个城市天气并计算最冷城市和平均高温,代码执行让模型写脚本并行调用工具并汇总,只有最终结果返回模型,避免大量中间数据进入上下文,节省token并提高准确率。

工具调用在哪些情况下仍然是更好的选择?

单次调用任务、需要模型直接对中间结果进行自然语言推理、团队没有现成的安全沙箱基础设施、以及需要每个动作单独审计时,工具调用更合适。

代码执行能节省多少token?有具体数据吗?

有。Anthropic的代码执行模式将Google Drive到Salesforce的工作流从150,000 token降至2,000,减少98.7%;Programmatic Tool Calling在复杂研究任务中平均token从43,588降至27,297,减少37%,同时GAIA基准准确率从46.5%提升至51.2%。

如何根据任务选择工具调用还是代码执行?

考虑五个因素:调用次数(单次或少次选工具调用,多次或扇出选代码执行)、结果处理方式(需模型直接推理选工具调用,只需过滤汇总选代码执行)、数据敏感性(低敏感选工具调用,高敏感选代码执行)、延迟容忍度(紧选工具调用,松选代码执行)、审计需求(需逐动作日志选工具调用,关注聚合结果选代码执行)。

生产环境中的AI智能体通常只用一种动作原语吗?

不是。多数生产智能体会按任务混合使用两者:简单单次查询用工具调用,遇到扇出、聚合或处理大量敏感数据时切换到代码执行。Anthropic也建议根据当前瓶颈逐步添加功能,而非一开始就使用所有能力。

🏷️

标签

➡️

继续阅读