本页面介绍工具使用背后的概念:工具在哪里运行、智能体循环如何工作,以及何时使用工具是正确的方法。如需实践指导,请从教程或实现指南开始。
工具使用是您的应用程序与模型之间的契约。您指定哪些操作可用以及其输入和输出的形态;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?