Tool Result

工具返回

工具执行的输出,作为一条新消息回灌给模型。

详解

Tool Result 是你执行完工具后,把结果「回灌」给模型的那条消息,是 Function Calling 闭环的关键一步。模型看到 tool result 之前,它只知道「我想调用工具」,但不知道结果;看到之后,才能基于真实数据给出最终回答。不同厂商格式略有差异:Anthropic 格式里,tool result 是 role="user" 消息内的一个 tool_result content block,携带 tool_use_id 与调用 ID 对应;OpenAI 格式里,它是一条独立的 role="tool" 消息,携带 tool_call_id。如果工具执行出错,也应把错误信息作为 tool result 返回,让模型决定是否重试或向用户说明——绝对不能跳过这一步,否则对话消息历史会损坏,后续调用报错。

一个类比
像你去帮老板查了一份合同后,回来把结果告诉他——不汇报,他就只知道派了你去查,但不知道查到什么,没法做下一步决策。
举个例子
import anthropic

client = anthropic.Anthropic()

# 假设第一轮模型返回了 tool_use block
messages = [{"role": "user", "content": "北京今天多少度?"}]
assistant_message = {
    "role": "assistant",
    "content": [{
        "type": "tool_use",
        "id": "toolu_01XYZ",
        "name": "get_weather",
        "input": {"city": "北京"}
    }]
}

# 你的代码执行 get_weather 后,把结果作为 user 消息里的 tool_result 回灌
messages.extend([
    assistant_message,
    {"role": "user", "content": [{
        "type": "tool_result",
        "tool_use_id": "toolu_01XYZ",
        "content": "北京今天 22°C,晴"
    }]}
])

final = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=256,
    tools=tools,
    messages=messages,
)
print(final.content[0].text)
PYTHON 示例
相关概念