Loading...
  • 构建
  • 管理
  • 模型与定价
  • 客户端 SDK
  • API 参考
Search...
⌘K
Log in
工具使用原理
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Solutions

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

Partners

  • Amazon Bedrock
  • Google Cloud's Vertex AI

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 经验的工程师可以以与任何其他类型化接口相同的方式集成工具使用:定义模式、处理回调、返回结果。区别在于另一端的调用者是一个语言模型,它根据对话选择要调用的函数。

工具运行的位置

工具不同的主要轴是代码执行的位置。每个工具都属于三个类别之一,该类别决定了您的应用程序负责什么。

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

您编写模式,您执行代码,您返回结果。这是主要事件:绝大多数工具使用流量是用户定义的工具调用到应用程序特定的逻辑中。

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

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

对于一些常见操作(运行 shell 命令、编辑文件、控制浏览器、管理便签簿内存),Anthropic 发布工具模式,您的应用程序处理执行。此类别中的工具是 bash、text_editor、computer 和 memory。

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

服务器执行的工具

对于 web_search、web_fetch、code_execution 和 tool_search,Anthropic 运行代码。您在请求中启用工具,服务器处理其他一切。您永远不会为这些工具构造 tool_result 块,因为服务器端循环执行操作并在响应到达您之前将输出反馈给模型。

您收到的响应包含 server_tool_use 块,显示运行了什么以及返回了什么,但到您看到它们时,执行已经完成。您的应用程序的工作是启用工具并读取最终答案,而不是参与执行循环。

代理循环(客户端工具)

客户端执行的工具(用户定义和 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"。暂停的回合意味着工作未完成;重新发送对话(包括暂停的响应)以让模型从中断处继续。有关继续模式,请参阅服务器工具。

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

工具使用适合需要模型仅从文本无法完成的任务:

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

您应该使用工具的标志:如果您正在编写正则表达式来从模型输出中提取决策,该决策应该已经是工具调用。解析自由形式的文本以恢复结构化意图是一个信号,表明结构应该在模式中。

工具使用不适合:

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

在方法之间选择

方法何时使用预期结果了解更多
用户定义的客户端工具自定义业务逻辑、内部 API、专有数据您处理执行和代理循环定义工具
Anthropic 模式客户端工具标准开发操作(bash、文件编辑、浏览器控制)您处理执行;Claude 可靠地调用工具,因为模式是训练内置的工具参考
服务器执行的工具网络搜索、代码沙箱、网络获取Anthropic 处理执行;您直接获得结果服务器工具

后续步骤

教程:构建使用工具的代理

从单个工具调用到生产逐步构建代理。

定义工具

模式规范、描述和 tool_choice。

工具参考

Anthropic 提供的工具目录。

Was this page helpful?

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