TodayAI

用 Responses API 流式返回生成结果

打开 Responses 的 stream,边生成边消费事件,而不是等整段文本结束。

基于 OpenAI Developers 整理 · Responses API · 官方资料

聊天和 Agent 界面通常不能等完整回答再渲染。Responses API 支持 stream=True,按事件推送增量。

这篇跑通:发起流式响应,打印文本增量,并确认结束事件出现。

打开 stream 并消费文本增量

Responses stream

python
from openai import OpenAI

client = OpenAI()

with client.responses.stream(
    model="gpt-5.6",
    input="用三句话解释什么是流式响应。",
) as stream:
    for event in stream:
        if event.type == "response.output_text.delta":
            print(event.delta, end="", flush=True)
    final = stream.get_final_response()
    print("\nfinish:", final.status)

什么时候必须用流式

  • 面向用户的聊天界面,需要立刻看到首字
  • 长回答或工具调用过程中要展示中间状态
  • 需要按事件做超时与取消

最容易踩的坑

只拿到空字符串

确认监听的是 output_text.delta(或当前 SDK 文档中的等价事件名),并完整消费迭代器。

连接中途断开

实现重试与 abort;不要假设一次 stream 永远成功。

官方资料

OpenAI DevelopersStreaming API responses