案例:Anthropic 的 Tool Use Content Blocks
Anthropic 和 OpenAI 最大的工程差异之一,就是工具调用结果经常出现在 content blocks 里,而不是统一的 message.tool_calls。
你要抓住的核心
对于 Anthropic,常见解析思路是:
- 遍历 content blocks
- 找出所有
tool_use - 逐个执行
- 把
tool_result回填成新的消息块 - 再次请求模型
伪代码结构
python
response = client.messages.create(...)
for block in response.content:
if block.type == "tool_use":
tool_name = block.name
tool_input = block.input
result = run_tool(tool_name, tool_input)
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": json.dumps(result, ensure_ascii=False)
})
followup = client.messages.create(
model=model,
tools=tools,
messages=[
*history,
{"role": "assistant", "content": response.content},
{"role": "user", "content": tool_results}
]
)常见误区
- 把 Anthropic 当成 OpenAI 一样只找
tool_calls - 没保留原始 content blocks
tool_result对应不到正确tool_use_id