OpenAI API 提供了将响应流式传输回客户端的功能,以便允许某些请求获得部分结果。为此,我们遵循 Server-sent events 标准。我们的官方 NodePython 库包含帮助程序,以简化解析这些事件。source

聊天完成 APIAssistants API 都支持流式处理。本节重点介绍流式处理如何用于 Chat Completions。在此处详细了解 Assistants API 中的流式处理工作原理。source

在 Python 中,流式处理请求如下所示:source

1
2
3
4
5
6
7
8
9
10
11
12
from openai import OpenAI

client = OpenAI()

stream = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Say this is a test"}],
    stream=True,
)
for chunk in stream:
    if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="")

在 Node / Typescript 中,流式处理请求如下所示:source

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import OpenAI from "openai";

const openai = new OpenAI();

async function main() {
    const stream = await openai.chat.completions.create({
        model: "gpt-4o-mini",
        messages: [{ role: "user", content: "Say this is a test" }],
        stream: true,
    });
    for await (const chunk of stream) {
        process.stdout.write(chunk.choices[0]?.delta?.content || "");
    }
}

main();

解析 Server 发送的事件

解析 Server 发送的事件并非易事,应谨慎进行。简单的策略(如按新行拆分)可能会导致解析错误。我们建议尽可能使用现有的客户端库source