本页面解释了工具使用背后的概念:工具在哪里运行、代理循环如何工作,以及何时使用工具是正确的方法。如需实践指导,请从教程或实现指南开始。
工具使用是您的应用程序和模型之间的契约。您指定哪些操作可用以及它们的输入和输出的形状;Claude 决定何时以及如何调用它们。模型永远不会自己执行任何操作。它发出结构化请求,您的代码(或 Anthropic 的服务器)运行该操作,结果流回对话中。
这个契约使模型的行为更像是您调用的函数,而不是文本生成器。具有经典 API 经验的工程师可以以与任何其他类型化接口相同的方式集成工具使用:定义模式、处理回调、返回结果。区别在于另一端的调用者是一个语言模型,它根据对话选择要调用的函数。
工具不同的主要轴是代码执行的位置。每个工具都属于三个类别之一,该类别决定了您的应用程序负责什么。
您编写模式,您执行代码,您返回结果。这是主要事件:绝大多数工具使用流量是用户定义的工具调用到应用程序特定的逻辑中。
当 Claude 决定使用您的一个工具时,API 响应包含一个 tool_use 块,其中包含工具名称和参数的 JSON 对象。您的应用程序提取这些参数,运行操作(数据库查询、HTTP 调用、文件写入,无论工具做什么),并在下一个请求的 tool_result 块中发送输出。Claude 永远看不到您的实现;它只看到您提供的模式和您返回的结果。
对于一些常见操作(运行 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 循环:
tools 数组和用户消息的请求。stop_reason: "tool_use" 和一个或多个 tool_use 块。tool_result 块。tool_result 块的用户消息的新请求。stop_reason 为 "tool_use" 时从步骤 2 重复。实际上这读作:当 stop_reason == "tool_use" 时,执行工具并继续对话。循环在任何其他停止原因("end_turn"、"max_tokens"、"stop_sequence" 或 "refusal")上退出,这意味着 Claude 已经产生了最终答案或因您的应用程序应该处理的其他原因而停止。
有关构建请求、处理并行工具调用和格式化结果的机制,请参阅处理工具调用。
服务器执行的工具在 Anthropic 的基础设施内运行自己的循环。来自您的应用程序的单个请求可能会触发多个网络搜索或代码执行,然后才会返回响应。模型搜索、读取结果、决定再次搜索,并迭代直到获得所需内容,所有这些都不需要您的应用程序参与。
这个内部循环有一个迭代限制。如果模型在达到上限时仍在迭代,响应会返回 stop_reason: "pause_turn" 而不是 "end_turn"。暂停的回合意味着工作未完成;重新发送对话(包括暂停的响应)以让模型从中断处继续。有关继续模式,请参阅服务器工具。
工具使用适合需要模型仅从文本无法完成的任务:
您应该使用工具的标志:如果您正在编写正则表达式来从模型输出中提取决策,该决策应该已经是工具调用。解析自由形式的文本以恢复结构化意图是一个信号,表明结构应该在模式中。
工具使用不适合:
| 方法 | 何时使用 | 预期结果 | 了解更多 |
|---|---|---|---|
| 用户定义的客户端工具 | 自定义业务逻辑、内部 API、专有数据 | 您处理执行和代理循环 | 定义工具 |
| Anthropic 模式客户端工具 | 标准开发操作(bash、文件编辑、浏览器控制) | 您处理执行;Claude 可靠地调用工具,因为模式是训练内置的 | 工具参考 |
| 服务器执行的工具 | 网络搜索、代码沙箱、网络获取 | Anthropic 处理执行;您直接获得结果 | 服务器工具 |
Was this page helpful?