English
主导航

旧版 API

流式 API 响应

了解如何使用服务器发送事件从 OpenAI API 流式传输模型响应。

默认情况下,当您向 OpenAI API 发出请求时,我们会在将模型的整个输出生成完毕后,通过单个 HTTP 响应发送回来。当生成长输出时,等待响应可能需要很长时间。流式响应允许您在模型继续生成完整响应的同时,开始打印或处理模型输出的开头部分。

本指南重点介绍通过服务器发送事件 (SSE) 进行的 HTTP 流式传输 (stream=true)。如需通过以下方式进行的持久 WebSocket 传输和增量输入: previous_response_id,请参见 Responses API WebSocket 模式.

启用流式传输

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from openai import OpenAI
client = OpenAI()

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

for event in stream:
    print(event)

Responses API 使用语义事件进行流式传输。每个事件都使用预定义的 schema 进行类型定义,因此您可以监听自己关心的事件。

有关事件类型的完整列表,请参阅 流式传输的 API 参考。以下是一些示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
type StreamingEvent =
	| ResponseCreatedEvent
	| ResponseInProgressEvent
	| ResponseFailedEvent
	| ResponseCompletedEvent
	| ResponseOutputItemAdded
	| ResponseOutputItemDone
	| ResponseContentPartAdded
	| ResponseContentPartDone
	| ResponseOutputTextDelta
	| ResponseOutputTextAnnotationAdded
	| ResponseTextDone
	| ResponseRefusalDelta
	| ResponseRefusalDone
	| ResponseFunctionCallArgumentsDelta
	| ResponseFunctionCallArgumentsDone
	| ResponseFileSearchCallInProgress
	| ResponseFileSearchCallSearching
	| ResponseFileSearchCallCompleted
	| ResponseCodeInterpreterInProgress
	| ResponseCodeInterpreterCallCodeDelta
	| ResponseCodeInterpreterCallCodeDone
	| ResponseCodeInterpreterCallInterpreting
	| ResponseCodeInterpreterCallCompleted
	| Error

读取响应

如果您使用我们的 SDK,则每个事件都是类型化的实例。您也可以使用事件的 type 属性来识别单个事件。

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

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

有关您可以监听的事件的完整列表,请参阅 流式传输的 API 参考.

高级用例

对于更高级的用例(如流式传输工具调用),请查看以下专用指南:

审核风险

请注意,在生产应用中流式传输模型的输出会使审核补全内容变得更加困难,因为部分补全可能更难评估。这可能会对已批准的使用场景产生影响。