Skip to content
获取 API Key
集成指南

流式响应 ​

通过 Server-Sent Events,逐步接收模型输出。

开启流式 ​

支持流式的 Chat Completions、Responses 或 Messages 请求使用 stream: true。Gemini 使用 streamGenerateContent 与 SSE 格式。先确认当前模型支持该协议的流式能力。

python
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["OCEANWAY_API_KEY"],
    base_url="https://console.oceanway.tech/v1",
    max_retries=0,
)
stream = client.chat.completions.create(
    model=os.environ["OCEANWAY_TEXT_MODEL"],
    messages=[{"role": "user", "content": "写一段关于海边日出的描写。"}],
    max_tokens=256,
    stream=True,
)
try:
    for chunk in stream:
        if chunk.choices:
            print(chunk.choices[0].delta.content or "", end="", flush=True)
finally:
    stream.close()

按协议解析 ​

SSE 是由事件组成的字节流。一个网络数据块可能包含多个事件,也可能只包含一个事件的一部分。使用 SDK 或正确的 SSE 解析器,按空行分割完整事件,保留事件类型、增量内容、错误和终止信息。

协议注意事项
Chat Completions读取内容增量和终止信号,部分事件可能没有 choices
Responses按事件类型处理文本增量、完成与错误事件
Messages处理消息与内容块的开始、增量和结束
Gemini按 SSE 数据帧读取 candidates 及相应元数据

不要只检查 HTTP 200。流已经开始后仍可能返回错误事件,连接关闭也不一定表示生成完整成功。用量字段和出现位置因协议与模型而异,缺失时不要自行填写为零。

取消与计费 ​

流式请求可以由客户端取消,按原生取消行为处理并依据实际费用计费。断开连接不会自动退款;停止读取也不应被当作“本次没有消费”。

非流式请求的行为不同:已开始的原请求在客户端关闭后仍会继续处理,结果和费用仍关联原请求。

部署流式应用 ​

确保你的应用网关允许逐步发送数据,避免将 SSE 全部缓存后才返回。为长连接设置合适的客户端与代理超时。连接中断后,先检查原请求和调用记录,不自动重放生成 POST。