概览
LangChain 的流式传输系统让你可以在应用中呈现代理运行的实时反馈。 LangChain 流式传输可以实现:- 流式传输代理进度:在每个代理步骤后获取状态更新。
- 流式传输 LLM tokens:在语言模型 tokens 生成时流式传输它们。
- 流式传输 thinking / reasoning tokens:在模型推理生成时呈现它。
- 流式传输自定义更新:发出用户定义信号(例如
"Fetched 10/100 records")。 - 流式传输多个模式:从
updates(代理进度)、messages(LLM tokens + metadata)或custom(任意用户数据)中选择。
支持的 stream modes
将以下一个或多个 stream modes 作为列表传给stream 方法:
| 模式 | 描述 |
|---|---|
updates | 在每个代理步骤后流式传输状态更新。如果同一步中产生多个更新(例如运行多个节点),这些更新会分别流式传输。 |
messages | 从任何调用 LLM 的图节点流式传输 (token, metadata) 元组。 |
custom | 使用 stream writer 从图节点内部流式传输自定义数据。 |
代理进度
要流式传输代理进度,请使用带streamMode: "updates" 的 stream 方法。这会在每个代理步骤后发出事件。
例如,如果有一个调用一次工具的代理,你应该会看到以下更新:
- LLM 节点:包含工具调用请求的
AIMessage - 工具节点:包含执行结果的
ToolMessage - LLM 节点:最终 AI 响应
configurable 传入 thread_id,使对话被 checkpoint,并让后续轮次可以恢复相同历史。thread_id 与 streamMode 独立;也可以同时传入 context,用于工具从 runtime.context 读取每次运行的数据。
使用
thread_id 持久化对话历史要求代理配置 checkpointer。在 LangSmith deployments 中会自动配置 checkpointer。在本地,请显式传入一个,例如 createAgent({ ..., checkpointer: new MemorySaver() })。本页其余 snippets 为简洁起见省略 thread_id,但生产环境中应传入它。LLM tokens
要在 LLM 生成 tokens 时流式传输它们,请使用streamMode: "messages":
自定义更新
要在工具执行时流式传输工具更新,可以使用配置中的writer 参数。
Output
如果向工具添加
writer 参数,则在不提供 writer 函数的情况下,无法在 LangGraph 执行上下文之外调用该工具。流式传输多个模式
可以通过将 streamMode 作为数组传入来指定多个流式传输模式:streamMode: ["updates", "messages", "custom"]。
流式输出是 [mode, chunk] 元组,其中 mode 是 stream mode 的名称,chunk 是该模式流式传输的数据。
常见模式
下面示例展示流式传输的常见用例。流式传输 thinking / reasoning tokens
有些模型在生成最终答案之前会执行内部推理。可以通过筛选 standard content blocks 中type 为 "reasoning" 的内容,在这些 thinking / reasoning tokens 生成时流式传输它们。
必须在模型上启用 reasoning 输出。配置详情请参阅 reasoning section 和你的 provider’s integration page。要快速检查模型的 reasoning 支持,请参阅 models.dev。
streamMode: "messages" 并筛选 reasoning content blocks。当模型支持时,使用启用 extended thinking 的模型实例(例如 ChatAnthropic):
Output
content_blocks 属性,将 provider 特定格式(Anthropic thinking blocks、OpenAI reasoning summaries 等)规范化为标准 "reasoning" content block 类型。
要直接从聊天模型(不使用代理)流式传输 reasoning tokens,请参阅 streaming with chat models。
禁用 streaming
在某些应用中,你可能需要为给定模型禁用单个 tokens 的流式传输。这在以下场景中很有用:- 使用 multi-agent 系统时,控制哪些代理流式传输输出
- 混合使用支持 streaming 和不支持 streaming 的模型
- 部署到 LangSmith,并希望阻止某些模型输出流式传输到客户端
streaming: false。
并非所有 chat model integrations 都支持
streaming 参数。如果你的模型不支持它,请改用 disableStreaming: true。该参数可通过基类在所有聊天模型上使用。相关
- Frontend streaming:使用
useStream构建支持实时代理交互的 React UI - Streaming with chat models:不使用代理或图,直接从聊天模型流式传输 tokens
- Reasoning with chat models:配置并访问聊天模型的 reasoning 输出
- Standard content blocks:了解用于 reasoning、text 和其他内容类型的规范化 content block 格式
- Streaming with human-in-the-loop:在处理人工审核 interrupts 时流式传输代理进度
- LangGraph streaming:高级流式传输选项,包括
values、debugmodes 和 subgraph streaming
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

