如何使用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)的实现逻辑一致:
- 调用API时开启流式传输选项。
- 监听响应数据流,逐块读取内容片段。
- 拼接片段并在遇到换行符时打印整行。
内容的提问来源于stack exchange,提问作者Avijit Bhuin
相关产品推荐
相关产品推荐

