AI 智能体的工具调用与代码执行:如何选择正确的动作原语 - MachineLearningMastery.com

📌 One-Sentence Summary
本文对比了工具调用与代码执行作为 AI 智能体动作原语的差异,提供了基于延迟、成本和数据量的决策框架,并附有使用 Anthropic API 的可运行 Python 示例。
📝 Summary
文章分析了 AI 智能体与外部世界交互的两种基本机制:标准工具调用和代码执行(具体指程序化工具调用)。文章指出,工具调用因其可审计、逐步执行的特性,非常适合单次、对时间敏感的查询;但对于需要多次调用或数据聚合的复杂任务,它就会变得低效,因为每个中间结果都会消耗上下文 token。代码执行允许模型在沙箱环境中编写脚本来处理循环、条件判断和并行调用,只将最终输出返回给模型。作者使用 Open-Meteo API 提供了两种方法的实用 Python 实现,并演示了如何通过 `allowed_callers` 字段配置工具以支持程序化访问。文章还提供了一个决策框架,帮助开发者根据调用次数、数据敏感性、延迟要求、基础设施复杂度和可审计性需求在两种原语之间做出选择。
💡 Main Points
工具调用最适合简单、顺序执行的动作,此时透明度和低延迟至关重要。
在标准工具调用中,每个动作都是一个独立的 JSON 请求-响应周期。这使得日志记录和调试变得容易,但所有中间结果都被强制放入模型的上下文窗口中,对于大批量数据处理而言效率低下。
代码执行通过将中间数据排除在模型上下文之外,降低了 token 成本并提高了扇出和聚合任务的准确性。
通过允许模型编写脚本(如 Python)在内部执行多次工具调用,只有最终计算结果会返回给模型。这避免了通过逐个工具调用汇总数千个行项目时出现的「上下文膨胀」问题。
程序化工具调用需要特定的配置更改,例如在工具定义中添加 `allowed_callers` 字段。
要启用代码执行,必须明确将工具标记为可从生成的代码中调用。文章使用 Anthropic 的 beta 功能演示了这一点,展示了同一个底层函数如何同时服务于模型的直接调用和基于脚本的执行。
在两种原语之间做选择,取决于如何在基础设施复杂度与可审计性、速度等运营需求之间取得平衡。
虽然代码执行能带来性能优势,但它引入了安全风险(沙箱)和调试挑战。文章提出了一个框架,权衡调用次数、数据敏感性以及人工介入验证需求等因素。
💬 Key Quotes
一句话概括全部区别:工具调用把每个中间结果都摆在模型面前;代码执行则让模型通过它编写的代码,精确决定哪些结果能返回。
它经过专门训练,能够输出一对特殊 token——一个表示「以下是工具调用」,另一个标记其结束——中间夹着描述工具名称和参数的 JSON 载荷。
对于像这样的一次查询,循环走一遍就结束了,这正是工具调用非常适合此场景的原因:一次调用、一个结果,而且结果足够小且相关,Claude 确实能从直接看到它当中受益,然后再写出自然语言回答。
📊 Article Meta
AI Screening: 86
Source: Machine Learning Mastery
Author: Shittu Olumide
Category: 人工智能
Language: 英文
Read Time: 15 min
Word Count: 3712
Tags:
AI 与智能应用 , AI Agent , MCP协议 , Agent编排 , 模型训练与推理
实测过类似工具,作者说的基本属实。
作者写得真不错,学到了不少。
这个观点很中肯,深有同感。
讲解得很细致,新手也能看懂。
这个观点很中肯,深有同感。
看完了,收获满满,期待更多更新。
楼主辛苦了,内容很有参考价值。
内容翔实,正好需要,先收藏再看。
作者写得真不错,学到了不少。
支持作者,持续关注中。
这个观点很中肯,深有同感。
讲解得很细致,新手也能看懂。