控制台 ↗
模型详情Anthropic

claude-sonnet-5

新一代均衡代码模型

能力概览

输入

文本

输出

文本

均衡代码能力

用于日常开发、审阅与技术说明。

通用推理

兼顾任务质量与响应效率。

接口

POSThttps://www.yunqiai.chat/v1/messages

所有请求使用 HTTPS,并通过请求头携带访问密钥。

请求参数

参数类型说明
model必填string从 GET /v1/models 返回结果中填写完整模型 ID
messages必填arrayuser / assistant 消息数组;图片作为 image 内容块
max_tokens必填integer最大输出 Token,填写正整数;上限随模型变化
systemstring | array顶层系统提示;Messages API 没有 system 角色
streamboolean是否以 SSE 流式返回,默认 false
temperaturenumber0–1;Claude 4.7 及以后模型建议省略采样参数
top_pnumber0–1;与 temperature 通常只设置一个
stop_sequencesstring[]自定义停止序列
toolsarrayAnthropic 工具定义

请求示例

cURL
curl --request POST \
  --url https://www.yunqiai.chat/v1/messages \
  --header "x-api-key: YOUR_API_KEY" \
  --header "anthropic-version: 2023-06-01" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "claude-sonnet-5",
    "max_tokens": 1024,
    "messages": [
      {
        "role": "user",
        "content": "你好"
      }
    ]
  }'

流式输出

客户端以 SSE 逐行读取 data: 事件。不要按网络数据块直接解码 JSON;同一事件可能被拆成多个传输片段。

阶段事件读取内容
开始message_start消息元数据
内容content_block_start → content_block_delta → content_block_stopdelta.text
工具调用content_block_start / input_json_delta.partial_json保存 tool_use.id 与 name,按内容块 index 拼接参数
完成message_delta → message_stop停止原因与最终用量
错误errorerror.type / error.message / request_id
Python · Messages SSE
import json
import os

import requests

payload = {
    "model": "claude-sonnet-5",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "用三句话解释量子计算"}],
    "stream": True,
}

with requests.post(
    "https://www.yunqiai.chat/v1/messages",
    headers={
        "x-api-key": os.environ["YUNQI_API_KEY"],
        "anthropic-version": "2023-06-01",
        "Content-Type": "application/json",
    },
    json=payload,
    stream=True,
    timeout=(10, 180),
) as response:
    response.raise_for_status()
    message_stopped = False
    tool_calls = {}

    for line in response.iter_lines(decode_unicode=True):
        if not line or not line.startswith("data: "):
            continue
        event = json.loads(line[6:])
        if event.get("type") == "content_block_start":
            block = event.get("content_block") or {}
            if block.get("type") == "tool_use":
                tool_calls[event.get("index", 0)] = {
                    "id": block.get("id", ""),
                    "name": block.get("name", ""),
                    "input": block.get("input") or {},
                    "arguments": "",
                }
        elif event.get("type") == "content_block_delta":
            delta = event.get("delta", {})
            if delta.get("type") == "text_delta":
                print(delta.get("text", ""), end="", flush=True)
            elif delta.get("type") == "input_json_delta":
                index = event.get("index", 0)
                current = tool_calls.setdefault(index, {"id": "", "name": "", "input": {}, "arguments": ""})
                current["arguments"] += delta.get("partial_json", "")
        elif event.get("type") == "message_stop":
            message_stopped = True
        elif event.get("type") == "error":
            error = event.get("error", {})
            raise RuntimeError(f"{error.get('type')}: {error.get('message')}")

if not message_stopped:
    raise RuntimeError("stream ended before message_stop")

print()
for call in tool_calls.values():
    arguments = json.loads(call["arguments"]) if call["arguments"] else call["input"]
    tool_result = {"type": "tool_result", "tool_use_id": call["id"], "content": "工具执行结果"}
    print("tool", call["id"], call["name"], arguments, tool_result)

错误、重试与超时

情况客户端处理
连接超时单独设置连接超时,例如 10 秒;确认网络与 Base URL
读取超时文本请求可从 180 秒起设置;图像等耗时任务可设为 300 秒
408、429、5xx读取 Retry-After,并使用带随机抖动的指数退避;限制重试次数
400、401、403、404不要自动重试;先检查错误正文、鉴权头、接口路径、模型与参数
JSON · error response body
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "请求参数无效"
  },
  "request_id": "req_01JY7X"
}
协议错误正文中的请求 ID响应头中的请求 ID
Anthropic Messagesrequest_idrequest-id
Python · timeout and retry
import os
import random
import time

import requests

url = "https://www.yunqiai.chat/v1/messages"
headers = {"x-api-key": os.environ["YUNQI_API_KEY"], "anthropic-version": "2023-06-01"}
payload = {"model": "claude-sonnet-5", "max_tokens": 1024, "messages": [{"role": "user", "content": "你好"}]}

for attempt in range(4):
    delay = min(2 ** attempt, 8) + random.random()
    try:
        response = requests.post(url, headers=headers, json=payload, timeout=(10, 180))
    except requests.Timeout:
        if attempt == 3:
            raise
    else:
        if response.ok:
            print(response.json())
            break
        if response.status_code not in {408, 429, 500, 502, 503, 504}:
            response.raise_for_status()
        if attempt == 3:
            response.raise_for_status()
        retry_after = response.headers.get("Retry-After")
        if retry_after:
            try:
                delay = max(delay, float(retry_after))
            except ValueError:
                pass
    time.sleep(delay)

响应

JSON
{
  "id": "msg_01JY7X",
  "type": "message",
  "role": "assistant",
  "model": "claude-sonnet-5",
  "content": [
    {
      "type": "text",
      "text": "你好!我是一个 AI 助手。"
    }
  ],
  "stop_reason": "end_turn"
}
YunQi AI 开放平台文档 · 客户接入与参数参考模型目录更新于 2026-08-06