SSE 流式
按所选协议读取事件,并妥善处理取消和部分交付。
消费流式事件#
支持流式的生成请求设为 stream: true,Gemini 使用 streamGenerateContent。兼容 Chat Completions 返回 SSE,文本通常来自 choices[].delta.content;原生 Anthropic、Gemini 与 Responses 保留各自事件语义。
Chat Completions 事件示意
data: {"choices":[{"delta":{"content":"你好"}}]}
data: [DONE]
- 按空行分割事件,而不是把每次网络 read 当作完整 JSON。
- 使用增量 UTF-8 解码;多字节字符和事件可跨网络分片。
- 解析协议自己的完成事件,不能要求每种原生流都发送
[DONE]。 - 下游取消会传递给上游,服务端执行资源释放和已交付用量结算。
流中断与重试#
流已开始后不能再发送第二份 JSON HTTP 错误。失败可能表现为协议错误事件或连接终止;客户端应记录已收到的内容、异常和 Request ID。网关不会自动重放已部分交付的流,也不保证每种失败都产生 event: error。
流式部分内容即使随后断开,仍可能计入用量。由客户端决定是否发起新的生成请求,并提醒用户可能重复输出与计费。
部署注意#
反向代理应允许长连接、及时刷新事件并支持 WebSocket upgrade。上游响应缓冲字节和 SSE 单事件大小由 UPSTREAM_MAX_RESPONSE_BYTES、UPSTREAM_SSE_MAX_EVENT_CHARS 限制。