You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用OpenAI API在终端逐行打印生成中的助手回复

实现OpenAI API逐行实时打印回复

要实现逐行实时打印OpenAI的回复,核心是利用API的**流式响应(Stream)**功能,让模型生成内容时逐步返回数据,而非等待全部内容生成完毕。以下是具体实现步骤和代码示例:

核心原理

开启流式响应后,OpenAI会将生成内容拆分为多个数据块(chunk)陆续返回。我们可以逐个接收这些chunk,实时解析拼接内容,当检测到换行符时就输出完整一行,模拟真实的内容生成过程。

Python代码示例(基于官方SDK)

from openai import OpenAI

# 初始化客户端
client = OpenAI(api_key="你的API密钥")

# 开启流式调用ChatCompletion接口
stream = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "请介绍Python的三大核心特性"}],
    stream=True  # 关键参数:启用流式传输
)

# 逐块处理响应并实时打印
current_line = ""
for chunk in stream:
    # 提取当前数据块的内容片段
    content_fragment = chunk.choices[0].delta.content
    if content_fragment is not None:
        current_line += content_fragment
        # 检测到换行符时,输出完整行并缓存未完成内容
        if "\n" in current_line:
            split_lines = current_line.split("\n")
            # 打印所有完整行
            for line in split_lines[:-1]:
                print(line)
            # 保留最后一段未完成的内容
            current_line = split_lines[-1]

# 打印最后剩余的未完成内容
if current_line:
    print(current_line)

关键细节说明

  • stream=True:必须设置该参数开启流式响应,否则API会一次性返回全部生成内容。
  • chunk内容解析:每个chunk的delta.content字段包含当前生成的片段文本,需逐步拼接。
  • 换行触发打印:通过拼接内容并检测换行符,确保每次输出的是完整一行,符合实时生成的直观体验。

其他语言实现思路

其他语言(如JavaScript)的实现逻辑一致:

  1. 调用API时开启流式传输选项。
  2. 监听响应数据流,逐块读取内容片段。
  3. 拼接片段并在遇到换行符时打印整行。

内容的提问来源于stack exchange,提问作者Avijit Bhuin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:02:33