返回模型调用 API 参考Claude:工具调用、结果回传与流式参数
声明客户端工具,执行受控函数并回传 tool_result,了解流式参数拼接。
功能与适用场景
模型返回 tool_use,由应用执行对应业务函数,再以 tool_result 继续对话。示例工具只返回标明为示例的固定天气,不访问真实服务。
支持模型与组合
claude-sonnet-5。默认由模型决定是否调用工具;若直接返回文字,按普通回答处理。
第一步:设置鉴权
使用青云TOP API 的 API Key:Authorization: Bearer YOUR_API_KEY。替换占位符,保留 Bearer 后的空格。无需厂商 API Key。 同时发送 anthropic-version: 2023-06-01。
第二步:调用模型
POST https://top.qingyuntop.ai/v1/messages
请求为 application/json。
Body
必填路径、查询与 Header 参数
| 参数 | 位置 | 类型 | 必填 | 说明 | 示例 |
|---|
Content-Type | Header | string | 是 | - | application/json |
Accept | Header | string | 是 | - | application/json |
Authorization | Header | string | 是 | 必填。使用青云TOP API 的 API Key,保留 Bearer 后的空格。 | Bearer YOUR_API_KEY |
执行示例函数并回传
以下代码读取上一段的真实 tool_use.id,校验北京这一允许参数,保留完整 assistant 内容块、签名和工具声明后回传。若下一轮继续返回 tool_use,仍需按同一流程校验并处理,不能把它当作最终文字。
set -euo pipefail
python3 - <<'PY'
import base64
import json
from pathlib import Path
payload = json.loads(r'''{
"model": "claude-sonnet-5",
"max_tokens": 4096,
"messages": []
}''')
previous = json.loads(Path("request.json").read_text(encoding="utf-8"))
result = json.loads(Path("response.json").read_text(encoding="utf-8"))
blocks = result["content"]
replies = []
for block in blocks:
if block.get("type") != "tool_use":
continue
if block["name"] != "get_weather" or block["input"].get("city") != "北京":
raise ValueError("工具名称或参数不在示例白名单中")
replies.append({"type": "tool_result", "tool_use_id": block["id"], "content": "北京22摄氏度(示例数据)"})
if not replies:
raise RuntimeError("本轮没有工具调用")
payload["messages"] = previous["messages"] + [{"role": "assistant", "content": blocks}, {"role": "user", "content": replies}]
payload["tools"] = previous["tools"]
if "system" in previous:
payload["system"] = previous["system"]
encoded = json.dumps(payload, ensure_ascii=False).encode("utf-8")
Path("next-request.json").write_bytes(encoded)
PY
curl --fail-with-body --connect-timeout 30 --max-time 600 "https://top.qingyuntop.ai/v1/messages" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
--data-binary @next-request.json \
--output next-response.json
常见错误与参考
tool_result 放在 user 内容数组,不能写成 OpenAI role=tool。不能只回传最后一个工具结果,或从模型输入动态执行任意函数名。
401:检查本站 API Key 和 Bearer 格式;403:确认此 Key 可用该模型;429:遵循 Retry-After 退避。超时或 5xx 时保留请求标识和脱敏错误,避免盲目重发;其他通用排查见聊天接入总览。
Claude 工具调用。