跳转到内容
主站 新闻 控制台

流式与非流式响应

本页说明 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 块解析见思考模式