Skip to content

实时流

为最终用户构建响应式应用程序?实时更新是保持用户参与度的关键,随着您的应用程序不断进步。

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

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

流式图输出(.stream.astream

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

  • "values":此模式在每次图步骤后流式传输状态的完整值。
  • "updates":此模式在每次图步骤后流式传输状态的更新。如果在同一步骤中有多个更新(例如运行多个节点),则这些更新将分别流式传输。
  • "custom":此模式从图节点内部流式传输自定义数据。
  • "messages":此模式流式传输LLM令牌和元数据,特别是在调用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?")]}})

以下可视化显示了 "values""updates" 模式之间的差异:

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