流式处理¶
为最终用户构建响应式应用程序?实时更新是保持用户在应用程序进程中参与的关键。
您需要流式处理三种主要类型的数据
- 工作流程进度(例如,在每个图节点执行后获取状态更新)。
- LLM tokens 在生成时进行流式传输。
- 自定义更新(例如,“已获取 10/100 条记录”)。
流式处理图输出(.stream
和 .astream
)¶
.stream
和 .astream
是用于从图运行中流式返回输出的同步和异步方法。调用这些方法时,您可以指定几种不同的模式(例如 `graph.stream(..., mode="...")`)
"values"
:在图的每个步骤之后,流式传输状态的完整值。"updates"
:在图的每个步骤之后,流式传输状态的更新。如果在同一步骤中进行多次更新(例如,运行多个节点),则这些更新将分别流式传输。"custom"
:从图节点内部流式传输自定义数据。"messages"
:流式传输 LLM tokens 和调用 LLM 的图节点的元数据。"debug"
:在图的执行过程中流式传输尽可能多的信息。
您还可以通过将多种流式处理模式作为列表传递来同时指定它们。当您这样做时,流式处理的输出将是元组 (stream_mode, data)
。例如
...
('messages', (AIMessageChunk(content='Hi'), {'langgraph_step': 3, 'langgraph_node': 'agent', ...}))
...
('updates', {'agent': {'messages': [AIMessage(content="Hi, how can I help you?")]}})
下面的可视化显示了 values
和 updates
模式之间的区别
LangGraph 平台¶
流式处理对于使 LLM 应用程序对最终用户感觉响应迅速至关重要。创建流式运行时,流式处理模式决定了哪些数据被流式传输回 API 客户端。LangGraph 平台支持五种流式处理模式
values
:在每个超步执行后,流式传输图的完整状态。有关流式处理值的更多信息,请参阅操作指南。messages-tuple
:流式传输节点内生成的任何消息的 LLM tokens。此模式主要用于支持聊天应用程序。有关流式处理消息的更多信息,请参阅操作指南。updates
:在每个节点执行后,流式传输图状态的更新。有关流式处理更新的更多信息,请参阅操作指南。debug
:在图执行期间流式传输调试事件。有关流式处理调试事件的更多信息,请参阅操作指南。events
:流式传输图执行期间发生的所有事件(包括图的状态)。有关流式处理事件的更多信息,请参阅操作指南。此模式仅对将大型 LCEL 应用程序迁移到 LangGraph 的用户有用。通常,此模式对于大多数应用程序不是必需的。
您还可以同时指定多种流式处理模式。有关同时配置多种流式处理模式的更多信息,请参阅操作指南。
有关如何创建流式运行的信息,请参阅API 参考。
流式处理模式 values
、updates
、messages-tuple
和 debug
与 LangGraph 库中可用的模式非常相似 - 有关这些模式更深入的概念解释,您可以参阅前面的部分。
流式处理模式 events
与在 LangGraph 库中使用 .astream_events
相同 - 有关此模式更深入的概念解释,您可以参阅前面的部分。
所有发出的事件都有两个属性
event
:这是事件的名称data
:这是与事件关联的数据