趋近智
与大型语言模型(LLM)API交互时,默认行为通常是同步的:您的应用程序发送包含提示的请求,然后等待模型生成完整的响应后才接收它。对于简短、快速的回答,这种方式完全足够。但是,对于涉及长文本生成、复杂推理或像聊天机器人这样的交互式应用程序,这种等待时间可能导致用户体验迟缓。用户可能会看到几秒钟的加载指示器,不确定应用程序是否正在运行。
流式传输为此延迟问题提供了一个办法。API不会等待完整响应,而是模型一生成文本就将其以较小的部分或“块”的形式发回。这样,您的应用程序可以增量显示响应,显著提升感知的响应速度。想象一个聊天机器人逐字打出回答,而不是停顿后再突然显示一大段文本。
当您请求流式响应时,您的应用程序与大型语言模型API服务器之间的连接在初始请求后会保持开放。然后,随着大型语言模型生成输出,服务器通过这个开放连接将数据块推送到您的应用程序。这通常使用服务器发送事件(SSE)等技术实现,服务器会持续向客户端发送事件。
标准API交互(等待完整响应)与流式传输(分块接收响应)的比较。
大多数主要的大型语言模型提供商都支持流式传输。通常,启用它需要在您的API请求中设置一个特定参数,比如stream=True。请查阅您所用大型语言模型API的文档,以获取确切的参数名称和使用方法。
当您使用提供商的Python库(如openai或anthropic)启用流式传输进行API调用时,返回值通常会改变。您不会获得一个包含完整文本的单个响应对象,而是会收到一个迭代器或生成器。然后,您可以循环遍历此迭代器,以处理到达的每个数据块。
从流中接收到的每个数据块通常是一个小型数据结构(通常是JSON对象),包含有关该生成片段的信息。确切的结构因API而异,但常见元素包括:
max_tokens时的'length')。这可能只出现在最后一个数据块中。这是一个Python代码片段,展示了您如何处理流:
# 注意:这是伪代码。
# 具体库的使用方法(例如,OpenAI,Anthropic)会略有不同。
# 假设 'client' 是一个已初始化的API客户端
# 假设 'prompt_messages' 是输入提示的结构
try:
# 进行API调用,启用流式传输
stream = client.chat.completions.create(
model="llm-model-name",
messages=prompt_messages,
stream=True # 启用流式传输
)
full_response = ""
print("LLM 响应: ", end="")
# 遍历流生成器
for chunk in stream:
# 检查数据块是否包含内容
# 获取内容的具体路径因API/库而异(例如,chunk.choices[0].delta.content)
content_delta = getattr(getattr(getattr(chunk.choices[0], 'delta', None), 'content', None), None)
if content_delta is not None:
# 立即将数据块内容打印到控制台
print(content_delta, end="", flush=True)
# 将数据块内容追加到 full_response 以构建完整响应
full_response += content_delta
print("\n--- 流式传输结束 ---")
# 现在 'full_response' 包含完整的生成文本
except Exception as e:
print(f"\n发生错误: {e}")
在此示例中:
stream=True进行API调用。stream对象,它会生成chunk对象。content_delta)。特定的路径(chunk.choices[0].delta.content)在与OpenAI兼容的API中很常见,但请查阅您所用库的文档。content_delta以模拟实时显示(使用end=""和flush=True)。full_response中,以便在流式传输结束后重构完整消息。流式传输的主要优势是由于感知延迟降低而带来的用户体验提升。用户能立即看到活动,这对交互式应用程序来说很重要。它还允许您处理任意长度的响应,而不会出现一次性缓冲整个输出所带来的内存问题。
然而,在客户端实现流式传输会增加一些复杂性:
虽然大型语言模型框架(将在下一章讨论)通常提供有用的抽象来简化流处理,但在直接使用大型语言模型API时,理解遍历数据块和提取内容的底层过程是很重要的。流式传输是构建响应迅速且吸引人的AI应用程序的有效技术。
简洁的语法。内置调试功能。从第一天起就可投入生产。
为 ApX 背后的 AI 系统而构建
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造