"Tool use"(工具使用)让 Claude 能够调用您定义的函数或 Anthropic 提供的函数。Claude 会根据用户的请求和工具的描述来决定何时调用工具,然后返回一个结构化的调用,由您的应用程序执行(客户端工具)或由 Anthropic 执行(服务器工具)。
以下是使用服务器工具的最简单示例,其中由 Anthropic 处理执行:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
tools=[{"type": "web_search_20260209", "name": "web_search"}],
messages=[{"role": "user", "content": "What's the latest on the Mars rover?"}],
)
print(response.content)工具的主要区别在于代码的执行位置。客户端工具(包括用户定义的工具以及 Anthropic 提供 schema 的工具,如 bash 和 text_editor)在您的应用程序中运行:Claude 会返回 stop_reason: "tool_use" 以及一个或多个 tool_use 块,您的代码执行相应操作,然后您发回一个 tool_result。服务器工具(web_search、code_execution、web_fetch、tool_search)在 Anthropic 的基础设施上运行:您可以直接看到结果,无需处理执行过程。
有关完整的概念模型,包括智能体循环以及何时选择每种方法,请参阅工具使用的工作原理。
有关连接到 MCP 服务器的信息,请参阅 MCP 连接器。有关构建您自己的 MCP 客户端的信息,请参阅 modelcontextprotocol.io。
通过严格工具使用保证 schema 一致性
在您的工具定义中添加 strict: true,以确保 Claude 的工具调用始终与您的 schema 完全匹配。请参阅严格工具使用。
工具访问是您可以赋予智能体的最有效能力之一。在 LAB-Bench FigQA(科学图表解读)和 SWE-bench(真实世界软件工程)等基准测试中,即使添加基本工具也能带来显著提升,通常超过人类专家基线。
当 tool_choice 使用默认值 {"type": "auto"} 时,Claude 会在每一轮决定是调用工具还是直接回复。当请求与某个工具所描述的能力相匹配,且答案尚不在上下文中时,它会调用工具。对于稳定的知识、创意任务和对话性的轮次,它会直接回复。
这一边界可以通过您的系统提示进行引导。如果 Claude 没有在您预期的情况下调用工具,像 "Use the tools to investigate before responding." 这样的轻量指令可以显著增加工具使用。更强的形式如 "Always call a tool first before responding." 会进一步推动这一行为。相反,"Use your judgment about whether to call a tool or respond directly." 会使触发行为保持保守。
如果您需要硬性保证而非引导,请使用 tool_choice。
每个服务器工具的页面都更详细地描述了其自身的触发边界。例如,请参阅网络搜索工具或代码执行工具。
有关完整的实践演练,请参阅教程。有关各个概念的参考示例,请参阅定义工具和处理工具调用。
工具使用请求的定价基于以下因素:
tools 参数中的令牌)客户端工具的定价与任何其他 Claude API 请求相同,而服务器端工具可能会根据其具体使用情况产生额外费用。
工具使用产生的额外令牌来自:
tools 参数(工具名称、描述和模式)tool_use 内容块tool_result 内容块当您使用 tools 时,API 还会自动为模型包含一个特殊的系统提示以启用工具使用。每个模型所需的工具使用令牌数量如下所列(不包括上述额外令牌)。请注意,该表格假设至少提供了 1 个工具。如果未提供任何 tools,则工具选择为 none 时使用 0 个额外的系统提示令牌。
| 模型 | 工具选择 | 工具使用系统提示令牌数 |
|---|---|---|
| Claude Opus 4.8 | auto、noneany、tool | 290 个令牌 410 个令牌 |
| Claude Opus 4.7 | auto、noneany、tool | 675 个令牌 804 个令牌 |
| Claude Opus 4.6 | auto、noneany、tool |
这些令牌数量会加到您的正常输入和输出令牌中,以计算请求的总费用。
有关当前各模型的价格,请参阅模型概览表。
当您发送工具使用提示时,与任何其他 API 请求一样,响应会在报告的 usage 指标中包含输入和输出令牌计数。
了解工具使用循环、工具在何处执行,以及何时使用工具而非文本回复。
从单个工具调用到生产就绪的智能体循环的引导式演练。
Anthropic 提供的工具目录以及可选工具定义属性的参考。
Was this page helpful?
| 497 个令牌 589 个令牌 |
| Claude Opus 4.5 | auto、noneany、tool | 496 个令牌 588 个令牌 |
| Claude Opus 4.1(已弃用) | auto、noneany、tool | 313 个令牌 315 个令牌 |
| Claude Opus 4(已停用,Vertex AI 除外) | auto、noneany、tool | 313 个令牌 315 个令牌 |
| Claude Sonnet 4.6 | auto、noneany、tool | 497 个令牌 589 个令牌 |
| Claude Sonnet 4.5 | auto、noneany、tool | 496 个令牌 588 个令牌 |
| Claude Sonnet 4(已停用,Bedrock 和 Vertex AI 除外) | auto、noneany、tool | 313 个令牌 315 个令牌 |
| Claude Haiku 4.5 | auto、noneany、tool | 496 个令牌 588 个令牌 |
| Claude Haiku 3.5(已停用,Bedrock 和 Vertex AI 除外) | auto、noneany、tool | 264 个令牌 355 个令牌 |