Skip to content

流式传输

是否正在为终端用户构建一个响应式应用程序?随着应用程序的推进,实时更新是保持用户参与度的关键。

你可能希望流式传输三种主要类型的数据:

  1. 工作流进度(例如,在每个图节点执行后获取状态更新)。
  2. 大语言模型(LLM)生成的令牌。
  3. 自定义更新(例如,“已获取 10/100 条记录”)。

流式传输图输出(.stream.astream

.stream.astream 分别是用于从图运行中流式返回输出的同步和异步方法。 调用这些方法时,你可以指定几种不同的模式(例如 graph.stream(..., mode="...")):

  • "values":此模式会在图的每一步之后流式传输状态的完整值。
  • "updates":此模式会在图的每一步之后流式传输状态的更新。如果在同一步骤中进行了多次更新(例如,运行了多个节点),则这些更新将分别流式传输。
  • "custom":此模式会从你的图节点内部流式传输自定义数据。
  • "messages":此模式会为调用大语言模型(LLM)的图节点流式传输大语言模型的令牌和元数据。
  • "debug":此模式会在图的执行过程中尽可能多地流式传输信息。

你还可以通过将多种流式传输模式作为列表传递来同时指定它们。这样做时,流式输出将是元组 (stream_mode, data)。例如:

graph.stream(..., stream_mode=["updates", "messages"])
...
('messages', (AIMessageChunk(content='Hi'), {'langgraph_step': 3, 'langgraph_node': 'agent', ...}))
...
('updates', {'agent': {'messages': [AIMessage(content="Hi, how can I help you?")]}})

下面的可视化展示了 valuesupdates 模式之间的区别:

values vs updates

LangGraph 平台

流式传输对于让大语言模型(LLM)应用程序对终端用户做出及时响应至关重要。创建流式运行时,流式模式决定了哪些数据会被流式传输回 API 客户端。LangGraph 平台支持五种流式模式:

  • values:在每个超级步骤执行完毕后,流式传输图的完整状态。有关流式传输值的操作指南,请参阅操作指南
  • messages-tuple:流式传输节点内部生成的任何消息的大语言模型(LLM)令牌。此模式主要用于支持聊天应用程序。有关流式传输消息的操作指南,请参阅操作指南
  • updates:在每个节点执行完毕后,流式传输图状态的更新。有关流式传输更新的操作指南,请参阅操作指南
  • debug:在图执行的整个过程中流式传输调试事件。有关流式传输调试事件的操作指南,请参阅操作指南
  • events:流式传输图执行期间发生的所有事件(包括图的状态)。有关流式传输事件的操作指南,请参阅操作指南。此模式仅对将大型 LCEL 应用程序迁移到 LangGraph 的用户有用。一般来说,大多数应用程序不需要此模式。

您还可以同时指定多种流式模式。有关同时配置多种流式模式的操作指南,请参阅操作指南

有关如何创建流式运行的信息,请参阅API 参考

流式模式 valuesupdatesmessages-tupledebug 与 LangGraph 库中可用的模式非常相似——有关这些模式的更深入概念解释,您可以参阅上一节

流式模式 events 与在 LangGraph 库中使用 .astream_events 相同——有关此模式的更深入概念解释,您可以参阅上一节

发出的所有事件都有两个属性:

  • event:这是事件的名称
  • data:这是与事件关联的数据

Comments