快速开始

流式输出

文档最后更新于 2026年10月16日 02:29

三种协议的流式分片格式、结束标志、流内用量块位置与流式错误处理方式。

三种协议都支持流式输出,响应为 text/event-stream。Anthropic 与 OpenAI 格式在请求体中设置 "stream": true;Gemini 原生格式改用 :streamGenerateContent 端点。

各协议的事件格式

协议分片形态结束标志
Anthropic(/v1/messages)event: + data: 成对出现,序列为 message_start → content_block_start → 多个 content_block_delta → content_block_stop → message_delta → message_stopmessage_stop 事件
OpenAI(/v1/chat/completions)data: {...} 分片,object 为 chat.completion.chunk,文本在 choices[0].delta.contentdata: [DONE]
Gemini(:streamGenerateContent)data: {...} 分片,文本在 candidates[0].content.parts[].text流结束时连接关闭,没有单独的结束标记

以 OpenAI 格式为例:

本页示例为海外模型,地址用国外通道 https://acapi.top;换成国内通道 https://api.acapi.top 同样可用,两个地址均可用,见 调用地址。

bash
curl https://acapi.top/v1/chat/completions \
  -H "Authorization: Bearer sk-xxxxxx" \
  -H "content-type: application/json" \
  -d '{
    "model": "gpt-5.6-sol",
    "stream": true,
    "messages": [{"role": "user", "content": "写一句话"}]
  }'

流式用量块

三种协议都会在流中返回本次请求的 token 用量,无需额外参数:

协议用量位置
Anthropicmessage_delta 事件的 usage(input_tokens、output_tokens、cache_creation_input_tokens、cache_read_input_tokens 等)
OpenAI[DONE] 之前的最后一个分片:choices 为空数组,带 usage(prompt_tokens、completion_tokens、total_tokens 及 completion_tokens_details)。个别线路把 usage 挂在带 finish_reason 的分片上(choices 不为空),请在任一分片出现 usage 时读取
Gemini每个分片的 usageMetadata(promptTokenCount、candidatesTokenCount 等)

取消流

客户端关闭 HTTP 连接即可终止流,服务端随即停止推送。

流式错误处理

流开始之前的错误(鉴权失败、模型不可用等)不会以事件流返回:HTTP 状态码非 200,content-type 为 application/json,错误结构与非流式请求一致。流开始之后 HTTP 状态码已为 200,错误只会出现在事件流中,客户端需按所用协议解析错误事件。上游在流中返回错误事件时,若平台尚未向你回传任何字节会自动换线路一次;已开始回传则返回 bad_response 并附上游原因,已收到的片段不能视为成功结果。

共 30 篇文档。文中出现的模型名与价格以模型广场的实时数据为准。