LangGraph SDK 让你可以通过多种模式从 LangSmith 部署 API 流式传输输出,从每个步骤后的完整状态快照到逐令牌的 LLM 输出。线程流式传输还支持可恢复性:如果连接中断,可以使用上一个事件 ID 重新连接,从上次中断处继续。
LangGraph SDK 和 Agent Server 是 LangSmith 的一部分。

基本用法

基本用法示例:
这是一个你可以在 Agent Server 中运行的示例图。 更多详情请参阅 LangSmith 快速入门。
一旦你的 Agent Server 运行起来,你就可以使用 LangGraph SDK 与其交互
  1. client.runs.stream() 方法返回一个迭代器,用于产出流式输出。 2. 设置 stream_mode="updates" 以仅流式传输每个节点后对图状态的更新。也支持其他流式模式。详情请参见支持的流式模式。

支持的流式模式

流式传输多个模式

你可以将 stream_mode 参数传递一个列表,以同时流式传输多个模式。 流式输出将是 (mode, chunk) 的元组,其中 mode 是流式模式的名称,chunk 是该模式流式传输的数据。

流式传输图状态

使用流式模式 updates 和 values 来流式传输图执行时的状态。
  • updates 流式传输图每个步骤后的状态更新。
  • values 流式传输图每个步骤后的状态完整值。
有状态运行 以下示例假设你希望将流式运行的输出持久化到检查点器数据库中,并且已经创建了一个线程。要创建一个线程:
如果你不需要持久化运行的输出,可以在流式传输时传递 None 而不是 thread_id。

流式模式:updates

使用此模式仅流式传输节点在每个步骤后返回的状态更新。流式输出包括节点的名称以及更新内容。

流式模式:values

使用此模式在每个步骤后流式传输图的完整状态。

子图

要在流式输出中包含来自子图的输出,你可以在父图的 .stream() 方法中设置 subgraphs=True。这将流式传输来自父图和任何子图的输出。
  1. 设置 stream_subgraphs=True 以流式传输来自子图的输出。
这是一个你可以在 Agent Server 中运行的示例图。 更多详情请参阅 LangSmith 快速入门。
一旦你的 Agent Server 运行起来,你就可以使用 LangGraph SDK 与其交互
  1. 设置 stream_subgraphs=True 以流式传输来自子图的输出。
注意:我们收到的不仅是节点更新,还有命名空间,它们告诉我们正在流式传输哪个图(或子图)。

调试

使用 debug 流式模式在图执行过程中流式传输尽可能多的信息。流式输出包括节点的名称以及完整状态。

LLM 令牌

使用 messages-tuple 流式模式,从图的任何部分(包括节点、工具、子图或任务)逐令牌流式传输大语言模型 (LLM) 输出。 来自 messages-tuple 模式的流式输出是一个元组 (message_chunk, metadata),其中:
  • message_chunk:来自 LLM 的令牌或消息片段。
  • metadata:一个字典,包含关于图节点和 LLM 调用的详细信息。
  1. 注意,即使 LLM 是使用 invoke 而不是 stream 运行的,消息事件也会被发出。
  1. “messages-tuple” 流式模式返回一个元组 (message_chunk, metadata) 的迭代器,其中 message_chunk 是 LLM 流式传输的令牌,metadata 是一个包含调用 LLM 的图节点信息和其他信息的字典。

过滤 LLM 令牌

流式传输自定义数据

要发送自定义用户定义的数据:

流式传输事件

要流式传输所有事件,包括图的状态:

无状态运行

如果你不希望将流式运行的输出持久化到检查点器数据库中,可以创建一个无状态运行而无需创建线程:
  1. 我们传递的是 None 而不是 thread_id UUID。

加入并流式传输

LangSmith 允许你加入一个活动的后台运行并从其流式传输输出。为此,你可以使用 LangGraph SDK 的 client.runs.join_stream 方法:
  1. 这是你想要加入的现有运行的 run_id。
输出未缓冲 当你使用 .join_stream 时,输出不会被缓冲,因此在加入之前产生的任何输出都不会被接收到。

流式传输线程

线程流式传输为一个线程打开一个长连接,并从该线程上执行的每一次运行中流式传输输出。这让你可以通过单个连接监控线程上的所有活动,例如,在一个聊天 UI 中,可能会通过后续消息、人工介入恢复或后台运行随时间触发多次运行。要按 ID 加入特定的现有运行,请参阅加入并流式传输。

比较线程和运行流式传输

基本用法

线程流式模式

线程流式传输支持三种流式模式来控制返回哪些事件。通过 stream_mode 参数传递一个或多个模式。

从上一个事件恢复

线程流通过 Last-Event-ID 头部支持可恢复性。如果连接中断,传递你收到的最后一个事件的 ID 即可恢复,不会错过事件。传递 "-" 可以从头开始重放。

API 参考

有关 API 的用法和实现,请参考 API 参考。