流
OpenAI API 提供了将响应流式传输回客户端的功能,以便允许某些请求获得部分结果。为此,我们遵循 Server-sent events 标准。我们的官方 Node 和 Python 库包含帮助程序,以简化解析这些事件。
聊天完成 API 和 Assistants API 都支持流式处理。本节重点介绍流式处理如何用于 Chat Completions。在此处详细了解 Assistants API 中的流式处理工作原理。
在 Python 中,流式处理请求如下所示:
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 中,流式处理请求如下所示:
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 发送的事件并非易事,应谨慎进行。简单的策略(如按新行拆分)可能会导致解析错误。我们建议尽可能使用现有的客户端库。