stream_events(..., version="v3") 实现的事件流。事件流返回一个带有类型化投影的运行对象,因此每个投影可以独立消费,而无需解析流模式的元组。
可流式传输的内容
stream.messages 生成消息流。每个消息流都暴露了 .text、.reasoning、.toolCalls、.output 和 .usage。异步投影可迭代以获取实时增量,或等待以获取最终值。
智能体消息
当你想要获取每次 LLM 调用的模型输出时,请使用stream.messages。
message.output 为你提供最终确定的 AI 消息,包括特定于提供者的内容块。在 TypeScript 中,当你只需要令牌计数或其他使用元数据时使用 message.usage;在 Python 中,从 message.output.usage_metadata 读取使用情况。
推理内容
推理内容使用与文本内容相同的形状,但仅当所选模型发出推理块时才可用。工具调用
有两个有用的工具调用投影:message.tool_calls在模型生成工具调用时,流式传输工具调用参数块。stream.tool_calls在工具调用开始后,流式传输工具执行的生命周期。
流式传输子智能体
当一个createAgent 调用(通常通过包装工具)调用另一个具名的 createAgent 时,内部智能体的事件会在嵌套的命名空间中流动。你传递给 createAgent 的 name 会在流中标识该内部智能体,因此你可以按智能体进行过滤和标记。
具名子智能体出现在专用的 stream.subagents 投影上。每个句柄都暴露了内部智能体自己的 .messages、.toolCalls 和 .output,以及 .name(你传递的 name=)、.cause(调度子智能体的工具调用)和嵌套的 .subagents。因为只有具名的 createAgent 运行才会出现在这里,你不需要过滤掉普通子图。
StateGraph 子图也会出现在 stream.subgraphs 上——在 .compile(name=...) 上设置 name= 可以在 subagent.graph_name 中获得一个标签。
stream.subagents 是具名 createAgent 子智能体的聚焦视图,而 stream.subgraphs 覆盖了每个嵌套图。使用与你的 UI 匹配的那个。
状态与最终输出
使用stream.values 获取状态快照,使用 stream.output 获取最终智能体状态。
多重投影
当你想在 JavaScript 中进行多重投影时,请使用并发消费者:自定义更新
当你的应用需要内置投影之外的投影(如检索进度、制品或特定领域的事件)时,请使用自定义流转换器。在中间件上注册转换器
中间件注册的转换器需要
langchain@1.4.3 或更高版本。streamTransformers 作为工厂元组传递给 createMiddleware。每个工厂的形状是 () => StreamTransformer<any>(零参数),并且在每个作用域中调用一次。每次调用都返回一个新的转换器,可以保持每个子图隔离。
createAgent 将中间件注册的工厂与传递给其自身 streamTransformers 选项的任何内容合并。编译图上的最终顺序是:
- 内置的
ToolCallTransformer。 - 中间件注册的工厂,按中间件顺序。
- 调用者从
createAgent提供的streamTransformers。
相关内容
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

