LangChain 实现了流式系统来提供实时更新。
流式输出对于增强基于 LLM 构建的应用程序的响应能力至关重要。通过渐进式显示输出,即使在完整响应准备好之前,流式输出也能显著改善用户体验 (UX),特别是在处理 LLM 的延迟时。
请参阅下面的
LangGraph 流式输出指南
了解更多详情。
概述
LangChain 的流式系统让您可以将智能体运行的实时反馈传递到您的应用程序中。 LangChain 流式输出可以实现:- 流式传输智能体进度 — 在每个智能体步骤后获取状态更新。
- 流式传输 LLM token — 在语言模型生成 token 时实时流式传输。
-
流式传输自定义更新
— 发送用户自定义信号(例如,
"已获取 10/100 条记录")。 -
流式传输多种模式
— 可选择
updates(智能体进度)、messages(LLM token + 元数据)或custom(任意用户数据)。
支持的流式模式
将以下一种或多种流式模式作为列表传递给
stream
方法:
| 模式 | 描述 |
|---|---|
updates
|
在每个智能体步骤后流式传输状态更新。如果在同一步骤中进行了多次更新(例如,运行了多个节点),这些更新将分别流式传输。 |
messages
|
从任何调用 LLM 的图节点流式传输
(token, metadata)
元组。
|
custom
|
使用流写入器从图节点内部流式传输自定义数据。 |
智能体进度
要流式传输智能体进度,请使用带有
streamMode: "updates"
的
stream
方法。这会在每个智能体步骤后发出一个事件。
例如,如果您有一个调用一次工具的智能体,您应该会看到以下更新:
-
LLM 节点
:包含工具调用请求的
AIMessage -
Tool 节点
:包含执行结果的
ToolMessage - LLM 节点 :最终 AI 响应
LLM token
要在 LLM 生成 token 时进行流式传输,请使用
streamMode: "messages"
:
自定义更新
要在工具执行时流式传输更新,您可以使用配置中的
writer
参数。
Output
如果您向工具添加了
writer
参数,则在 LangGraph 执行上下文之外调用该工具时,必须提供 writer 函数。
流式传输多种模式
您可以通过将 streamMode 作为数组传递来指定多种流式模式:
streamMode: ["updates", "messages", "custom"]
。
流式输出将是
[mode, chunk]
元组,其中
mode
是流式模式的名称,
chunk
是该模式流式传输的数据。
禁用流式输出
在某些应用程序中,您可能需要禁用特定模型的单个 token 流式传输。这在以下情况下很有用: 在初始化模型时设置
streaming: false
。
并非所有聊天模型集成都支持
streaming
参数。如果您的模型不支持,请改用
disableStreaming: true
。该参数通过基类在所有聊天模型上可用。
相关内容
- 聊天模型的流式输出 — 不使用智能体或图,直接从聊天模型流式传输 token
- 人机协作的流式输出 — 在处理人工审核中断的同时流式传输智能体进度
-
LangGraph 流式输出
— 高级流式选项,包括
values、debug模式和子图流式输出