Anthropic Messages 协议

Claude 系列模型的原生 Messages 协议

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 请求示例

JSON
{
  "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。

JSON
{
  "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 请求示例

JSON
{
  "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 中返回。

SSE
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 错误事件或流中断体现。