流式输出

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

各协议的事件格式

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

以 OpenAI 格式为例:

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

流式用量块

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

协议 用量位置
Anthropic message_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,错误只会出现在事件流中,客户端需按所用协议解析错误事件。

准备好了?三步即可开始登录控制台 · 购买额度 · 创建 API Key
DiscordGet community help instantly
流式输出 · 帮助文档