POST
Messages(函数调用)
POST /v1/messages — Claude 工具调用(Anthropic 格式)
Messages (函数调用)
使用 Anthropic 官方格式让 Claude 调用自定义工具/函数,实现 AI Agent 能力。
POST
https://api000.com/v1/messages
请求示例
import anthropic
import json
client = anthropic.Anthropic(
api_key="sk-xxxxxxxxxxxxxxxx",
base_url="https://api000.com"
)
tools = [
{
"name": "get_weather",
"description": "获取指定城市的实时天气",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "城市名称,如 '北京'"
}
},
"required": ["location"]
}
}
]
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
tools=tools,
messages=[
{"role": "user", "content": "北京今天天气怎么样?"}
]
)
# 处理工具调用
for block in response.content:
if block.type == "tool_use":
print(f"调用工具: {block.name}")
print(f"参数: {json.dumps(block.input, ensure_ascii=False)}")
工具调用完整流程(多轮)
messages = [{"role": "user", "content": "上海天气如何?"}]
# 第一轮:模型决定调用工具
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
tools=tools,
messages=messages
)
if response.stop_reason == "tool_use":
tool_use_block = next(b for b in response.content if b.type == "tool_use")
# 执行工具(此处模拟返回结果)
tool_result = "上海今天晴天,气温 28°C,湿度 65%"
# 第二轮:将工具结果传回
messages.append({"role": "assistant", "content": response.content})
messages.append({
"role": "user",
"content": [{
"type": "tool_result",
"tool_use_id": tool_use_block.id,
"content": tool_result
}]
})
final_response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
tools=tools,
messages=messages
)
print(final_response.content[0].text)
tool_choice 参数
| 值 | 说明 |
|---|---|
{"type": "auto"} |
模型自动决定(默认) |
{"type": "any"} |
强制调用至少一个工具 |
{"type": "tool", "name": "xxx"} |
强制调用指定工具 |
{"type": "none"} |
禁止调用工具 |