GoodPut AI

流式输出

SSE 流式响应、用量统计块与两种协议的差异。

任意模型都可以在请求中加 stream: true 开启流式输出,响应以 SSE(Server-Sent Events)逐块返回,显著降低首字等待。

OpenAI 协议

stream = client.chat.completions.create(
    model="z-ai/glm-5.2",
    messages=[{"role": "user", "content": "写一首关于算力的短诗"}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="")

推理模型的思考过程在增量块的 delta.reasoning_content 中返回,正文在 delta.content 中。

流式下获取用量

默认流式响应不带 usage。加上 stream_options 后,最后一个数据块会携带完整用量(该块 choices 为空数组):

{"stream": true, "stream_options": {"include_usage": true}}

Anthropic 协议

Messages 端点的流式遵循 Anthropic SSE 事件序列:message_startcontent_block_startcontent_block_deltatext_delta / thinking_delta / input_json_delta)→ content_block_stopmessage_delta(含 stop_reason 与输出 token 数)→ message_stop

Anthropic 官方 SDK 的 client.messages.stream(...) 可直接使用。

建议

  • 长输出任务(生成长文、复杂推理)务必开流式,避免触发客户端或中间代理的读超时
  • 流式计费与非流式一致:按最终实际生成的 token 数计费
  • 流中途发生的上游错误会终止流;客户端应把「流提前结束且无 finish_reason/message_stop」视为失败并重试

本页目录