工具使用 / 函数调用
工具使用 让 Claude 调用 你 定义的函数——搜索、计算器、你的数据库、任意 API——并使用其结果。它是每一个 智能体 的基础。
- 四步智能体循环是如何工作的,从工具定义到最终答案
- 如何用 Python 定义一个工具,包含名称、描述和 JSON-Schema 输入
- 为什么工具描述充当提示词,塑造 Claude 何时以及如何调用它们
- 如何校验输入、将错误作为结果返回,并安全地使用服务端工具
循环
工具使用是一场对话,而非单次调用。你向 Claude 递上一份工具菜单;Claude 挑选其中一个并暂停;你执行它并回报结果;Claude 将结果融入它的答案中——按需重复。
Guided walkthrough1 of 4
- 你包含一个工具定义列表——每个都带有名称、描述和 JSON-Schema 输入。
- 如果 Claude 决定使用某个工具,它会返回一个带参数的 tool_use 块并停止。
- 你自己运行该工具,并把输出作为 tool_result 发回去。
- Claude 继续进行,可能调用更多工具,直到给出答案。
定义一个工具(Python)
一个工具定义就是一个名称、一段通俗语言的描述,以及一份用于输入的 JSON-Schema。把它传入 tools,然后检查 stop_reason 来得知 Claude 何时想要行动。
get_weather 工具 + 首次调用
tools = [{
"name": "get_weather",
"description": "Get current weather for a city.",
"input_schema": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
}]
msg = client.messages.create(
model="claude-sonnet-5", max_tokens=1024,
tools=tools,
messages=[{"role": "user", "content": "What's the weather in Rome?"}],
)
# If msg.stop_reason == "tool_use": run the tool, then send a tool_result back.提示
在你如何定义和处理工具上的细微选择,会在可靠性上产生巨大的差别。
- 描述就是提示词。 清晰的工具
description和参数文档会极大地改善 Claude 何时/如何调用它。 - 在执行之前 校验你收到的输入——切勿盲目信任。
- 将错误作为结果返回。 如果某个工具失败,发回一个描述该错误的
tool_result,让 Claude 能够恢复。 - 服务端工具。 Anthropic 还提供内置工具(例如网页搜索、代码执行、计算机使用)——查阅文档了解当前可用清单。
:::warning 工具 = 行动 = 风险 能采取真实行动的工具继承了一套安全模型。请套用最小权限,并对高风险调用保持人在回路——参见 保护智能体与工具安全。 :::
工具使用词汇
按 Enter 或空格键翻转卡片。使用左右方向键在卡片之间切换。已显示术语。1 / 4
自我检验
0/3- 工具使用是一个循环:发送工具定义,Claude 返回一个 tool_use 块并停止,你执行并返回一个 tool_result,Claude 继续直到给出答案。
- 一个工具定义就是一个名称、一段描述和一份 JSON-Schema 输入——把它传入 tools 并检查 stop_reason == tool_use。
- 描述就是提示词;在执行之前校验输入;将失败作为 tool_result 错误返回,让 Claude 能够恢复。
- Anthropic 还提供服务端工具,而任何采取真实行动的工具都需要最小权限外加人在回路。