Skip to main content
启用 stream: true 后,OpenPAI 以 Server-Sent Events(SSE) 推送 chunk,使客户端能边接收边渲染。

协议格式

注意点:
  • 每条 chunk 以 data: 开头,以两个 \n 结束。
  • 最后会发送 data: [DONE] 表示结束(Anthropic / Gemini 协议无此约定)。
  • 心跳由网关每 15 秒发送一次注释行 :keep-alive,无需客户端处理。

Python(openai SDK)

Node.js

浏览器端 / Fetch API

浏览器直连会暴露 API Key,生产请通过自有后端转发。

流式中的错误

若上游中途出错,会以 SSE 形式发送:
客户端务必检查 error 字段,而不仅是 HTTP 状态码(流式响应早期已返回 200)。

include_usage

stream_options.include_usage: true 下,流末会多发一条不含 content 但带 usage 的 chunk,方便统计:

Claude / Gemini 流式

  • Claude:事件按 message_startcontent_block_startcontent_block_deltacontent_block_stopmessage_deltamessage_stop 顺序,详见 Messages
  • Gemini:?alt=sse 时按 data: {...} 推送,无 [DONE] 终结符,通过 finishReason 判断结束。

注意

  • 超时:OpenPAI 网关默认 600 秒,长输出请确保客户端超时也足够长。
  • 中途取消:客户端断开连接后,网关会立即停止上游请求并按 已生成 token 结算。
  • 代理 / CDN:中间链路必须支持 chunked 传输,否则 SSE 会被缓冲。