流式传输¶
正在为终端用户构建响应式应用程序?实时更新是保持用户在应用运行时保持参与度的关键。
您会想要流式传输的主要数据类型有三种
- 工作流进度(例如,在每个图节点执行后获取状态更新)。
- 生成时的 LLM token。
- 自定义更新(例如,“已获取 10/100 条记录”)。
流式图输出 (.stream
和 .astream
)¶
.stream
和 .astream
是用于从图运行中流式传回输出的同步和异步方法。调用这些方法时,您可以指定几种不同的模式(例如 `graph.stream(..., mode="...")`)。
"values"
:这会在图的每个步骤后流式传输状态的完整值。"updates"
:这会在图的每个步骤后流式传输状态的更新。如果在同一步骤中进行了多次更新(例如运行了多个节点),则这些更新会分开流式传输。"custom"
:这会从图节点内部流式传输自定义数据。"messages"
:这会为调用 LLM 的图节点流式传输 LLM token 和元数据。"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 Platform¶
流式传输对于使 LLM 应用程序对终端用户感觉响应迅速至关重要。创建流式运行(streaming run)时,流式传输模式(streaming mode)决定了哪些数据会流式传回给 API 客户端。LangGraph Platform 支持五种流式传输模式:
values
:在每个 超步骤(super-step) 执行后流式传输图的完整状态。请参阅 操作指南 以了解如何流式传输 values。messages-tuple
:为节点内部生成的任何消息流式传输 LLM token。此模式主要用于支持聊天应用程序。请参阅 操作指南 以了解如何流式传输 messages。updates
:在每个节点执行后流式传输图状态的更新。请参阅 操作指南 以了解如何流式传输 updates。debug
:在整个图执行过程中流式传输调试事件。请参阅 操作指南 以了解如何流式传输 debug 事件。events
:在图执行期间流式传输所有事件(包括图的状态)。请参阅 操作指南 以了解如何流式传输 events。此模式仅适用于将大型 LCEL 应用程序迁移到 LangGraph 的用户。通常,大多数应用程序不需要此模式。
您也可以同时指定多个流式传输模式。请参阅 操作指南 以了解如何同时配置多个流式传输模式。
请参阅 API 参考 以了解如何创建流式运行(streaming run)。
流式传输模式 values
、updates
、messages-tuple
和 debug
与 LangGraph 库中可用的模式非常相似 - 如需更深入的概念解释,请参阅 上一节。
流式传输模式 events
与在 LangGraph 库中使用 .astream_events
相同 - 如需更深入的概念解释,请参阅 上一节。
所有发出的事件都有两个属性
event
:这是事件的名称data
:这是与事件关联的数据