概述
LangChain 的流式处理系统允许你将智能体运行的实时反馈呈现到你的应用程序中。 使用 LangChain 流式处理可以实现:- 流式传输智能体进度—在每个智能体步骤后获取状态更新。
- 流式传输 LLM 标记—在生成时流式传输语言模型标记。
- 流式传输思考/推理标记—在生成时呈现模型推理过程。
- 流式传输自定义更新—发出用户定义的信号(例如,
"已获取 10/100 条记录")。 - 流式传输多种模式—从
updates(智能体进度)、messages(LLM 标记 + 元数据)或custom(任意用户数据)中选择。
支持的流式模式
将以下一个或多个流式模式作为列表传递给stream 方法:
智能体进度
要流式传输智能体进度,请使用带有streamMode: "updates" 的 stream 方法。这会在每个智能体步骤后发出一个事件。
例如,如果你有一个调用一次工具的智能体,你应该会看到以下更新:
- LLM 节点:带有工具调用请求的
AIMessage - 工具节点:带有执行结果的
ToolMessage - LLM 节点:最终的 AI 响应
LLM 标记
要流式传输 LLM 生成的标记,请使用streamMode: "messages":
自定义更新
要流式传输工具执行时的更新,你可以使用配置中的writer 参数。
输出
如果你将
writer 参数添加到你的工具中,那么在不提供 writer 函数的情况下,你将无法在 LangGraph 执行上下文之外调用该工具。流式传输多种模式
你可以通过将 streamMode 作为数组传递来指定多种流式模式:streamMode: ["updates", "messages", "custom"]。
流式输出将是 [mode, chunk] 元组,其中 mode 是流式模式的名称,chunk 是该模式流式传输的数据。
常见模式
以下是展示流式处理常见用例的示例。流式传输思考/推理标记
一些模型在生成最终答案之前会执行内部推理。你可以通过过滤 标准内容块 中type 为 "reasoning" 的内容,在生成时流式传输这些思考/推理标记。
要从智能体流式传输思考标记,请使用
streamMode: "messages" 并过滤推理内容块。当模型支持时,使用启用了扩展思考的模型实例(例如 ChatAnthropic):
输出
content_blocks 属性将特定于提供商的格式(Anthropic thinking 块、OpenAI reasoning 摘要等)标准化为标准的 "reasoning" 内容块类型。
要直接从聊天模型(不使用智能体)流式传输推理标记,请参阅使用聊天模型进行流式处理。
禁用流式处理
在某些应用程序中,你可能需要禁用给定模型的单个标记的流式处理。这在以下情况下很有用: 在初始化模型时设置streaming: false。
并非所有聊天模型集成都支持
streaming 参数。如果你的模型不支持它,请改用 disableStreaming: true。此参数可通过基类在所有聊天模型上使用。相关内容
- 前端流式处理—使用
useStream构建 React UI,实现实时智能体交互 - 使用聊天模型进行流式处理—直接从聊天模型流式传输标记,无需使用智能体或图
- 使用聊天模型进行推理—配置和访问聊天模型的推理输出
- 标准内容块—了解用于推理、文本和其他内容类型的标准化内容块格式
- 使用人机协作进行流式处理—在处理用于人工审查的中断时流式传输智能体进度
- LangGraph 流式处理—高级流式处理选项,包括
values、debug模式和子图流式处理
将这些文档通过 MCP 连接到 Claude、VSCode 等,以获取实时答案。

