Claude Platform Docs
  • 消息
  • 托管智能体
  • 管理

Search...
⌘K
第一步
Claude 简介快速入门
使用 Claude 构建
功能概览使用 Messages API停止原因与回退拒绝与回退回退额度
模型能力
扩展思考自适应思考努力程度任务预算(测试版)快速模式(研究预览)结构化输出引用流式传输消息批量处理搜索结果流式传输拒绝多语言支持嵌入
工具
概览工具使用的工作原理教程:构建使用工具的智能体定义工具处理工具调用并行工具使用工具运行器(SDK)严格工具使用服务器工具网络搜索工具网页抓取工具代码执行工具顾问工具工具搜索工具记忆工具Bash 工具文本编辑器工具计算机使用工具故障排除
工具基础设施
工具参考管理工具上下文工具组合工具使用与提示缓存编程式工具调用细粒度工具流式传输
上下文管理
上下文窗口压缩上下文编辑提示缓存对话中系统消息构建编排模式缓存诊断(测试版)令牌计数
处理文件
Files APIPDF 支持
技能
概览快速入门最佳实践企业技能API 中的技能
MCP
远程 MCP 服务器MCP 连接器
云平台上的 Claude
Amazon BedrockAmazon Bedrock(旧版)AWS 上的 Claude PlatformGoogle CloudMicrosoft Foundry

Log in
工具使用的工作原理
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Claude Platform Docs

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Claude on AWS
  • Claude on Google Cloud

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
消息/工具

工具使用的工作原理

了解工具使用循环、工具在何处执行,以及何时应使用工具而非纯文本。

本页面解释工具使用背后的概念:工具在何处运行、智能体循环如何工作,以及何时工具使用是正确的方法。如需实践指导,请从教程或实现指南开始。

工具使用契约

工具使用是您的应用程序与模型之间的一种契约。您指定哪些操作可用以及它们的输入和输出采用什么形式;Claude 决定何时以及如何调用它们。模型本身从不执行任何操作。它发出一个结构化请求,您的代码(或 Anthropic 的服务器)运行该操作,然后结果流回对话中。

这种契约使模型的行为不再像文本生成器,而更像您调用的函数。具有传统 API 经验的工程师可以像集成任何其他类型化接口一样集成工具使用:定义模式(schema)、处理回调、返回结果。不同之处在于,另一端的调用者是一个语言模型,它根据对话内容选择调用哪个函数。

工具在何处运行

工具之间的主要区分维度是代码在何处执行。每个工具都属于以下三类之一,而所属类别决定了您的应用程序需要负责什么。

用户定义的工具(客户端执行)

您编写模式,您执行代码,您返回结果。这是核心场景:绝大多数工具使用流量都是用户定义的工具调用应用程序特定的逻辑。

当 Claude 决定使用您的某个工具时,API 响应会包含一个 tool_use 块,其中包含工具名称和一个参数的 JSON 对象。您的应用程序提取这些参数,运行操作(数据库查询、HTTP 调用、文件写入,或该工具执行的任何操作),然后在下一个请求中通过 tool_result 块将输出发送回去。Claude 永远看不到您的实现;它只能看到您提供的模式和您返回的结果。

Anthropic 模式工具(客户端执行)

对于少数常见操作(管理暂存内存、运行 shell 命令、编辑文件、控制浏览器),Anthropic 发布工具模式,而您的应用程序负责执行。此类别中的工具包括 memory、bash、text_editor 和 computer。

执行模型与用户定义的工具完全相同:响应包含一个 tool_use 块,您的代码运行操作,然后您发送回一个 tool_result。使用 Anthropic 模式工具而不是自己定义等效工具的原因在于,这些模式是经过训练内化的。Claude 已经在数千个使用这些确切工具签名的成功轨迹上进行了优化,因此与执行相同功能的自定义工具相比,它调用这些工具更可靠,从错误中恢复也更优雅。该模式正是模型已经预期的接口。

服务器执行的工具

对于 web_search、web_fetch、code_execution 和 tool_search,由 Anthropic 运行代码。您在请求中启用该工具,服务器处理其余一切。您永远不需要为这些工具构造 tool_result 块。当某个回合仅调用服务器工具时,服务器端循环会执行操作并在响应到达您之前将输出反馈给模型,除非循环在完成之前停止(最常见的情况是暂停)。

您收到的响应包含 server_tool_use 块,显示运行了什么以及返回了什么。在常见情况下,当您看到它们时执行已经完成,您的应用程序的任务是启用工具并读取最终答案,而不是参与执行循环;主要的例外情况是暂停的循环(pause_turn)以及同时调用了客户端工具的回合。

智能体循环(客户端工具)

客户端执行的工具(包括用户定义的和 Anthropic 模式的)需要您的应用程序驱动一个循环。模型无法运行您的代码,因此每次工具调用都是一次往返:模型发出请求,您执行,您报告结果,模型继续。

标准形式是一个以 stop_reason 为键的 while 循环:

  1. 发送包含您的 tools 数组和用户消息的请求。
  2. Claude 以 stop_reason: "tool_use" 和一个或多个 tool_use 块作为响应。
  3. 执行每个工具。将输出格式化为 tool_result 块。
  4. 发送一个新请求,其中包含原始消息、助手的响应,以及一条包含 tool_result 块的用户消息。
  5. 当 stop_reason 为 "tool_use" 时,从第 2 步开始重复。

实际上,这可以理解为:当 stop_reason == "tool_use" 时,执行工具并继续对话。循环在遇到任何其他停止原因("end_turn"、"max_tokens"、"stop_sequence" 或 "refusal")时退出,这意味着 Claude 要么已生成最终答案,要么因其他原因停止,您的应用程序应对此进行处理。

有关构建请求、处理并行工具调用和格式化结果的具体机制,请参阅处理工具调用。

服务器端循环

服务器执行的工具在 Anthropic 的基础设施内部运行自己的循环。来自您应用程序的单个请求可能会在响应返回之前触发多次网络搜索或代码执行。模型搜索、读取结果、决定再次搜索,并不断迭代直到获得所需内容,整个过程无需您的应用程序参与。

这个内部循环有迭代次数限制。如果模型在达到上限时仍在迭代,响应将以 stop_reason: "pause_turn" 而非 "end_turn" 返回。暂停的回合意味着工作尚未完成;重新发送对话(包括暂停的响应)以让模型从中断处继续。有关继续模式,请参阅服务器工具。

如果 Claude 在同一组并行工具调用中同时调用了服务器工具和客户端工具,循环也会在服务器工具运行之前将控制权交还给您。此时响应会以 stop_reason: "tool_use" 返回,并包含一个尚无结果块的 server_tool_use 块;API 会在您返回客户端工具结果后运行它。有关确切的契约,请参阅停止原因和回退。

何时使用工具(以及何时不使用)

当任务需要模型仅凭文本无法完成的事情时,工具使用是合适的:

  • 具有副作用的操作。 发送电子邮件、写入文件、更新记录。模型可以描述这些操作,但只有工具才能执行它们。
  • 新鲜或外部数据。 当前价格、今天的天气、数据库的内容。任何训练数据之外或特定于您系统的内容都需要工具来获取。
  • 结构化、保证形状的输出。 当您需要具有特定字段的 JSON 对象,而不是恰好包含该信息的散文时,工具模式可以强制执行该形状。
  • 调用现有系统。 数据库、内部 API、文件系统。工具使用是自然语言请求与实现这些请求的系统之间的桥梁。

判断您应该使用工具的信号:如果您正在编写正则表达式从模型输出中提取决策,那么该决策本应是一次工具调用。解析自由格式文本以恢复结构化意图,表明该结构应该放在模式中。

以下情况不适合使用工具:

  • 模型仅凭训练即可回答。摘要、翻译和常识性问题不需要工具往返。
  • 交互是没有副作用的一次性问答。如果没有什么需要执行的,工具就无事可做。
  • 工具调用的延迟会主导一个简单的响应。每次工具调用至少是一次额外的往返;对于轻量级任务,开销可能超过工作本身。

在不同方法之间选择

方法何时使用预期情况了解更多
用户定义的客户端工具自定义业务逻辑、内部 API、专有数据您处理执行和智能体循环定义工具
Anthropic 模式客户端工具标准开发操作(bash、文件编辑、浏览器控制)您处理执行;由于模式已训练内化,Claude 能可靠地调用该工具工具参考
服务器执行的工具网络搜索、代码沙箱、网页获取Anthropic 处理执行;您读取结果而不是生成结果服务器工具

后续步骤

教程:构建使用工具的智能体

从单个工具调用到生产环境,逐步构建智能体。

定义工具

模式规范、描述和 tool_choice。

工具参考

Anthropic 提供的工具目录。

Was this page helpful?

  • 工具使用契约
  • 工具在何处运行
  • 用户定义的工具(客户端执行)
  • Anthropic 模式工具(客户端执行)
  • 服务器执行的工具
  • 智能体循环(客户端工具)
  • 服务器端循环
  • 何时使用工具(以及何时不使用)
  • 在不同方法之间选择
  • 后续步骤