流式与非流式响应
本页说明 Claude 原生调用(/v1/messages)的响应处理,接入方式见
Claude 原生调用基础。
非流式响应
{ "id": "msg_xxx", "type": "message", "role": "assistant", "content": [{ "type": "text", "text": "……" }], "stop_reason": "end_turn", "usage": { "input_tokens": 24, "output_tokens": 180 }}- 正文在
content数组里,按块(text / tool_use / thinking)组织,逐块遍历再拼接; stop_reason:end_turn正常结束、max_tokens截断、tool_use请求调用工具。
流式响应(SSE)
请求加 "stream": true,事件按类型下发:
| 事件 | 含义 |
|---|---|
message_start | 会话开始,含输入 token 数 |
content_block_start | 一个内容块开始(text/tool_use/thinking) |
content_block_delta | 正文增量,delta.text 拼接即可 |
content_block_stop | 当前内容块结束 |
message_delta | 尾部元数据(stop_reason、输出 token 数) |
message_stop | 全部结束 |
with client.messages.stream( model="claude-sonnet-5", max_tokens=1024, messages=[{"role": "user", "content": "写一首关于大海的短诗"}],) as stream: for text in stream.text_stream: print(text, end="", flush=True)注意事项
- 用官方 Anthropic SDK 时这些事件已封装好,手写 SSE 才需逐事件处理;
- token 用量以
message_start(输入)+message_delta(输出)为准,与账单一致; - 思考模式的
thinking块解析见思考模式。