Skip to main content
请求中设置 stream: true,响应通常为 text/event-stream。建议交给 SDK 解析;网络数据块不等于一个 SSE 事件,事件也可能跨多个数据块。

两种接口的区别

角色块、工具调用块或用量块可能不含文本;choices 也可能为空。Chat 的 length 表示达到生成限制,tool_calls 表示需要处理工具,并非完整自然语言回复。 HTTP 200 后仍可能出现事件级错误或网络中断。保留已收到的文字时应标记“不完整”,不要把 EOF 当作成功,也不要自动重放已开始的生成请求。

Python:Chat Completions

按 Python SDK安装依赖、设置环境变量;保存为 stream-chat.py,运行 python stream-chat.py。这是纯文本示例,只有 finish_reason=stop 视为完整输出。

TypeScript:Responses

按 TypeScript SDK安装依赖;保存为 stream-responses.mts,运行 node stream-responses.mts。选择支持 Responses 流式输出的模型。

部署与用量

如果文字一次性出现,检查网关或反向代理的响应缓冲设置和超时。取消客户端读取不保证上游停止执行。 Chat 的 stream_options.include_usage 需渠道支持;用量事件可能没有 choices。Responses 的用量通常在最终响应中。连接中断时可能拿不到最终用量,应结合控制台日志核对,不能把缺失用量视为零。 参考:OpenAI 流式事件说明。

原生协议与流式工具

Claude Messages与 Gemini generateContent提供独立的原生协议接入示例。需要组装工具参数分片并执行函数时,见 Chat / Responses 流式工具调用。 原生协议的可运行 SSE 与工具闭环见 Claude和 Gemini,包含完成校验与签名保留。 Read in English