快速开始

流式输出

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

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

各协议的事件格式

协议分片形态结束标志
Anthropic(/v1/messagesevent: + data: 成对出现,序列为 message_startcontent_block_start → 多个 content_block_deltacontent_block_stopmessage_deltamessage_stopmessage_stop 事件
OpenAI(/v1/chat/completionsdata: {...} 分片,objectchat.completion.chunk,文本在 choices[0].delta.contentdata: [DONE]
Gemini(:streamGenerateContentdata: {...} 分片,文本在 candidates[0].content.parts[].text流结束时连接关闭,没有单独的结束标记

以 OpenAI 格式为例:

bash
curl https://caapi.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 事件的 usageinput_tokensoutput_tokenscache_read_input_tokens 等)。该事件还带 x_conv_id(本次请求的会话 ID,排查问题时可提供)和 x_is_final 两个附加字段
OpenAI[DONE] 之前的最后一个分片:choices 为空数组,带 usageprompt_tokenscompletion_tokenstotal_tokenscompletion_tokens_details
Gemini每个分片的 usageMetadatapromptTokenCountcandidatesTokenCount 等)

取消流

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

流式错误处理

流开始之前的错误(鉴权失败、模型不可用等)不会以事件流返回:HTTP 状态码非 200,content-typeapplication/json,错误结构与非流式请求一致。流开始之后 HTTP 状态码已为 200,错误只会出现在事件流中,客户端需按所用协议解析错误事件。

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