1. 概述
本接口透传 Anthropic Messages 原生请求和响应,用于调用已开通的 Claude 模型;由请求体
stream 字段切换非流式与 SSE 流式响应。
- baseUrl:
https://token.soar.qjclouds.cn/laserStreamEr/00000000/v1 - completionsPath:
/messages - 标准地址:
POST {baseUrl}{completionsPath} - 鉴权:
Authorization: Bearer <api_key> - 请求体:标准 Anthropic Messages JSON
地址拼接:{baseUrl}{completionsPath},即 https://token.soar.qjclouds.cn/laserStreamEr/00000000/v1/messages
2. 接入前置条件
| 项 | 说明 |
|---|---|
api_key |
访问密钥(控制台生成),用于 Bearer 鉴权。 |
3. 鉴权
| Header | 必填 | 说明 |
|---|---|---|
Authorization |
是 | Bearer <api_key> |
Content-Type |
是 | application/json |
Accept |
流式建议 | 流式设为 text/event-stream;非流式可设为 application/json。 |
缺失
Authorization或api_key无效时,直接返回 401。
4. 非流式对话补全
4.1 请求体
请求体采用 Anthropic Messages API 的原生 JSON 结构。model、max_tokens 与
messages 为必填字段。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model |
string | 是 | 平台已开通的 Claude 模型编码。 |
max_tokens |
integer | 是 | 本次生成允许的最大输出 token 数。 |
messages |
array<MessageParam> | 是 | 对话消息;每项含 role(user/assistant)与 content(字符串或内容块数组)。
|
messages[].role |
string | 是 | 消息角色,可选 user 或 assistant。 |
messages[].content |
string / array<ContentBlockParam> | 是 | 消息内容;可直接传文本,也可传文本、图片、文档及工具调用等内容块。 |
messages[].content[].type |
string | 是 | 内容块类型,如 text、image、document、tool_use 或 tool_result。 |
messages[].content[].text |
string | 条件必填 | type=text 时的文本内容。 |
messages[].content[].source |
object | 条件必填 | image 或 document 内容块的数据源,支持 URL 或 Base64 数据。 |
messages[].content[].id / name / input |
string / string / object | 条件必填 | type=tool_use 时分别表示工具调用 ID、工具名称和输入参数。 |
messages[].content[].tool_use_id |
string | 条件必填 | type=tool_result 时关联对应的工具调用 ID。 |
messages[].content[].is_error |
boolean | 否 | 工具执行结果是否为错误,仅用于 tool_result 内容块。 |
system |
string / array<TextBlockParam> | 否 | 顶层系统指令;不要放入 messages 的 system role。 |
temperature |
number | 否 | 采样温度,取值范围以所选模型为准。 |
top_p |
number | 否 | 核采样参数;通常与 temperature 二选一调节。 |
top_k |
integer | 否 | Top-K 采样参数。 |
stop_sequences |
array<string> | 否 | 自定义停止序列。 |
metadata |
object | 否 | 请求元数据,例如 user_id。 |
tools |
array<Tool> | 否 | 工具定义;工具输入 Schema 使用 JSON Schema。 |
tool_choice |
object | 否 | 工具调用策略,如 auto、any 或指定工具。 |
thinking |
object | 否 | 扩展思考配置;可用性及字段以模型支持范围为准。 |
output_config |
object | 否 | 输出配置,例如推理努力程度或输出格式;依模型支持情况生效。 |
service_tier |
string | 否 | 服务层级选择;依上游及模型支持情况生效。 |
stream |
boolean | 否 | 流式请求传 true;非流式请求传 false 或省略。 |
4.1.1 消息内容块
content 可为文本字符串,也可为内容块数组。常用内容块包括
text、image、document、tool_use 与 tool_result;具体可用类型取决于模型和已启用能力。
4.2 请求示例
{
"model": "T-C-1-1-c",
"max_tokens": 1024,
"stream": false,
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "这张图里是什么?"
},
{
"type": "image",
"source": {
"type": "url",
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"
}
}
]
}
]
}
4.3 响应
非流式响应为 Anthropic 原生 Message 对象,文本结果位于 content[].text。
{
"content": [
{
"text": "这张图片展示的是一个温馨的海滩场景:\n\n- 一位长发女性穿着格子衬衫,坐在沙滩上,面带微笑。\n- 一只浅色的拉布拉多犬戴着彩色背带,坐在她对面,正伸出爪子与她\"击掌\"。\n- 背景是大海和夕阳(或日出),阳光洒在她们身上,营造出温暖、金色的氛围。\n- 沙滩上还放着一条红色的牵引绳。\n\n整体画面非常温馨,展现了人与宠物之间亲密的互动和美好的时光。",
"type": "text"
}
],
"id": "msg_011CfMXsGxXpb5xMEZ6eEPsp",
"model": "claude-opus-4-6",
"role": "assistant",
"stop_reason": "end_turn",
"type": "message",
"usage": {
"cache_creation": {
"ephemeral_1h_input_tokens": 0,
"ephemeral_5m_input_tokens": 0
},
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 18423,
"input_tokens": 1904,
"output_tokens": 205
}
}
4.4 错误响应
错误响应遵循 Anthropic error 对象结构。常见状态:400
参数无效、401 鉴权失败、404 模型或路径不存在、429 限流或配额不足、500
服务异常。
5. 流式对话补全
5.1 请求体
请求体字段与 4.1 相同,并将 stream 设为 true。
5.2 请求示例
{
"model": "T-C-1-1-c",
"max_tokens": 1024,
"stream": true,
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "这张图里是什么?"
},
{
"type": "image",
"source": {
"type": "url",
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"
}
}
]
}
]
}
5.3 响应
响应为 SSE 事件流,常见事件依次包括 message_start、content_block_start、content_block_delta、message_delta
和 message_stop。最终用量通常在 message_delta.usage 中返回。
event:message_start
data:{"type":"message_start","message":{"model":"claude-opus-4-6","id":"msg_011CfMXUHU9b9xp57RuCWe1Y","type":"message","role":"assistant","content":[],"container":null,"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":1904,"cache_creation_input_tokens":0,"cache_read_input_tokens":18423,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"},"input_transformations":[],"diagnostics":null,"context_management":null} }
event:content_block_start
data:{"type":"content_block_start","index":0,"content_block":{"type":"text","text":""} }
event:ping
data:{"type": "ping"}
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"这"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"张"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"图"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"片"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"展"}}
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"示的"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"是一个温"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"馨的海"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"滩"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"场景:"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"\n\n- **"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"一"}}
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"位"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"女性"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"**"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"穿着格"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"子"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"衬"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"衫,"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"坐在沙滩上,"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"面"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"带"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"微"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"笑。"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"\n- **一只"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"拉"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"布"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"拉多"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"犬**("} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"浅金"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"色),"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"戴着"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"彩色"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"胸背"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"带"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":",正"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"抬"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"起"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"前"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"爪与"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"她"}}
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"\""} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"击"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"掌\"。\n- **背"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"景**是大"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"海"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"和"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"夕阳("} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"或"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"日"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"出"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"),"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"阳光"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"洒在她"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"们"}}
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"身上,"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"营"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"造出温"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"暖"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"柔和的氛围。"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"\n- "} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"沙滩上还"}}
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"能"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"看到一条"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"红"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"色的"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"牵引"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"绳。"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"\n\n整"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"体"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"画"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"面充"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"满了人"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"与"}}
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"宠物之间"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"亲密、"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"快"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"乐的互"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"动感"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"。"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"🐶"} }
event:content_block_delta
data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"✨"} }
event:content_block_stop
data:{"type":"content_block_stop","index":0 }
event:message_delta
data:{"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null,"stop_details":null,"container":null,"safeguard_results":[]},"usage":{"input_tokens":1904,"cache_creation_input_tokens":0,"cache_read_input_tokens":18423,"output_tokens":202,"output_tokens_details":{"thinking_tokens":0},"iterations":[{"input_tokens":1904,"output_tokens":202,"cache_read_input_tokens":18423,"cache_creation_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"type":"message"}]},"context_management":{"applied_edits":[]} }
event:message_stop
data:{"type":"message_stop" }
5.4 错误响应
建立流前的错误以 HTTP 状态码和 Anthropic error 对象返回;流建立后的异常以 SSE 错误事件或流中断体现。