工具让模型检索信息、处理数据并执行操作。每个工具定义一个接口,描述其输入、输出和行为。
旅行 Agent 可能使用工具搜索航班、查询酒店价格、处理支付并发送确认邮件。工具接口让模型理解何时以及如何使用每项能力。
工具设计涉及三个独立选择:
- 模型接口 — 将工具暴露为直接 tool call,或通过 Code Mode。
- 执行位置 — 在 Worker、浏览器或另一个 Agent 中运行工具实现。
- 工具来源 — 在应用中定义工具,或通过 Model Context Protocol (MCP) 连接外部托管工具。
例如,浏览器工具可直接暴露,也可通过 Code Mode 暴露。MCP 工具同样可通过任一模型接口暴露。
直接 tool call 和 Code Mode 定义模型如何查看和调用工具。它们不决定底层工具实现在何处运行。
| 接口 | 工作方式 | 适用场景 |
|---|---|---|
| 直接 tool call | 模型接收各个工具定义。每次结果返回模型后,模型再选择下一次调用。 | 任务简单且使用少量已知工具集。 |
| Code Mode | 模型接收一个 code tool,并针对类型化工具接口编写代码。 | 任务需要组合、依赖调用、过滤、分支、可重复逻辑或工具发现。 |
大多数工具示例使用直接 tool call,即使未明确命名该模式。你定义每个工具并将其 schema 传给模型。模型选择工具,应用执行它,结果返回模型。
模型在每次选择另一个工具之前都会看到中间结果。这使执行路径易于检查。但依赖操作需要重复的模型轮次,并消耗上下文来存储中间数据。
Code Mode 给模型一个代码执行工具。模型编写 JavaScript 调用类型化工具、在工具间传递结果并应用控制流。
生成的代码可过滤大型响应,仅返回模型需要的最终值。中间结果保留在沙箱内,而不是每次操作后都进入模型上下文。这使 Code Mode 更适合组合 Workflow 和大型工具目录。
Code Mode 还支持渐进式发现。模型可搜索可用 connector,并仅为需要的方法请求详细类型。成功的程序可保存为可复用 snippet。
有关运行时行为、审批、重放和 snippet,请参阅 Code Mode 工作原理。
执行位置描述工具实现在何处运行。它与模型接口无关。各位置的工具均可直接暴露或通过 Code Mode 暴露。
| 位置 | 适用场景 | 从这里开始 |
|---|---|---|
| Worker | 工具调用 API、查询 SQL,或使用服务端 binding 和密钥。 | 服务端工具 |
| Browser | 工具需要 geolocation、剪贴板、local storage 或其他浏览器 API。 | 客户端工具 |
| 另一个 Agent | 支持聊天的 Agent 应作为保留的流式 tool 执行。 | Agent 作为工具 |
使用直接 tool call 时,模型调用工具,框架将执行路由到配置的位置。
使用 Code Mode 时,生成的代码在沙箱中运行。该代码中的调用会跨越沙箱边界到达底层工具实现。服务端工具可在宿主 Worker 中执行,浏览器拥有的工具可在父页面中执行,Agent 工具可将工作委派给另一个 Agent。
Model Context Protocol (MCP) ↗ 标准化 AI 应用如何发现并调用外部托管工具。MCP 描述工具的来源和传输,而非模型必须如何调用它。
Agent 可通过任一模型接口暴露 MCP 工具:
- 使用 Agents MCP 客户端 将 MCP 工具直接传给模型。
- 使用 MCP connector 在 Code Mode 中暴露 MCP 工具,以支持组合和渐进式发现。
MCP 服务器也可暴露 Code Mode 本身。例如,它可呈现一个 code tool,或分别呈现 search 和 execute tool。有关这些服务端模式,请参阅 Code Mode MCP 服务器模式。
审批策略也与执行位置和工具来源无关。任何修改外部状态的工具都可能需要用户审批。
直接 tool 可使用标准 human-in-the-loop 审批模式。
持久化 Code Mode 运行时可在标注的 connector 方法执行前暂停生成的代码。审批会从执行日志重放已完成的调用,应用已批准的操作,并继续同一程序。