Skip to main content
事件流是大多数 LangGraph 应用代码推荐的进程内流式输出模型。它返回一个运行流对象,可以同时以多种方式消费。
查看流式输出示例集获取可运行的示例和详细参考文档的链接。
version="v3" 标志目前是临时必需的,用于启用此流行为。新行为将在下一个 LangGraph 主要版本中成为默认流版本。

事件流提供的功能

运行流在一个底层事件流上暴露类型化投影: 多个消费者可以并发读取这些投影。读取 run.messages 不会消耗 run.valuesrun.subgraphsrun.output 所需的事件。

流协议事件

当你需要原始协议事件流时,使用运行对象本身:
每个协议事件都有一个类似通道的 method、一个单调递增的 seq 编号,以及包含 namespacetimestamp、可选的 node 和通道特定 dataparams
核心通道包括: messages 通道将输出建模为内容块。这使得 Token 流式输出、推理块、工具调用块和多模态内容变得明确,无需在应用代码中使用特定提供商的格式。

添加自定义转换器

流转换器是事件流中的投影层。它们观察协议事件,维护自己的状态,并暴露运行的派生视图,如进度事件、产物、Token 总数、工具活动或第三方协议消息。 转换器在 init() 中创建投影,在 process() 中观察每个事件,并在运行完成时完成或使投影失败。
在启动事件流时传递转换器:

使用 StreamChannel

StreamChannel 是自定义流式数据的投影原语。它为进程内消费者提供可迭代的流,当通道具有协议名称时,还可以将推送的值转发给远程 SDK 客户端。 命名通道的载荷必须可序列化,因为它们也会作为 custom:<name> 协议事件发出。请将 promise、异步可迭代对象、类实例和其他进程内句柄保持为本地的。

相关内容