For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
主导航

流式传输 API 响应

了解如何使用服务器发送事件以流式方式接收 OpenAI API 的模型响应。

默认情况下,当您向 OpenAI API 发出请求时,我们会先生成模型的完整输出,再通过单个 HTTP 响应返回。生成较长的输出时,等待响应可能需要一些时间。使用流式响应,您可以在模型继续生成完整响应的同时,开始打印或处理已生成的输出。

本指南重点介绍基于服务器发送事件(SSE)的 HTTP 流式传输(stream=true)。如需通过持久 WebSocket 连接传输,并使用 previous_response_id 提供增量输入,请参阅 Responses API 的 WebSocket 模式

启用流式传输

要开始流式传输响应,请在发送到 Responses 端点的请求中设置 stream=True

from openai import OpenAI

client = OpenAI()

stream = client.responses.create(
    model="gpt-6-astra",
    input=[
        {
            "role": "user",
            "content": "Say 'double bubble bath' ten times fast.",
        },
    ],
    stream=True,
)

for event in stream:
    print(event)

Responses API 使用语义事件进行流式传输。每个事件都有预定义模式所规定的类型,因此您可以监听所关注的事件。

如需查看完整的事件类型列表,请参阅流式传输 API 参考。以下是几个示例:

for await (const event of stream) {
  if (event.type === "response.output_text.delta") {
    process.stdout.write(event.delta);
  } else if (event.type === "response.completed") {
    console.log("\nResponse completed.");
  } else if (event.type === "error") {
    console.error(event.message);
  }
}

读取响应

如果您使用我们的 SDK,每个事件都是一个具有明确类型的实例。您也可以使用事件的 type 属性来识别各个事件。

某些关键生命周期事件只会发出一次,而其他事件会在生成响应的过程中多次发出。流式传输文本时,常见的监听事件包括:

- `response.created`
- `response.output_text.delta`
- `response.completed`
- `error`

如需查看可监听事件的完整列表,请参阅流式传输 API 参考

高级使用场景

对于流式传输工具调用等更高级的使用场景,请查看以下专题指南:

内容审核风险

请注意,在生产应用中流式传输模型输出会增加审核补全内容的难度,因为部分补全内容可能更难评估。这可能会影响获准的使用方式。

如果您在生成请求中请求内容审核分数,分数会在完整输出生成后返回,不会随部分输出的增量一起返回。