LangChain 实现了流式系统来提供实时更新。 流式输出对于增强基于 LLM 构建的应用程序的响应能力至关重要。通过渐进式显示输出,即使在完整响应准备好之前,流式输出也能显著改善用户体验 (UX),特别是在处理 LLM 的延迟时。

概述

LangChain 的流式系统让您可以将智能体运行的实时反馈传递到您的应用程序中。 LangChain 流式输出可以实现: 请参阅下面的 常见模式 部分以获取更多端到端示例。

支持的流式模式

将以下一种或多种流式模式作为列表传递给 stream 方法:
模式 描述
updates 在每个智能体步骤后流式传输状态更新。如果在同一步骤中进行了多次更新(例如,运行了多个节点),这些更新将分别流式传输。
messages 从任何调用 LLM 的图节点流式传输 (token, metadata) 元组。
custom 使用流写入器从图节点内部流式传输自定义数据。

智能体进度

要流式传输智能体进度,请使用带有 streamMode: "updates" stream 方法。这会在每个智能体步骤后发出一个事件。 例如,如果您有一个调用一次工具的智能体,您应该会看到以下更新:
  • LLM 节点 :包含工具调用请求的 AIMessage
  • Tool 节点 :包含执行结果的 ToolMessage
  • LLM 节点 :最终 AI 响应
___CODE_BLOCK_13___

LLM token

要在 LLM 生成 token 时进行流式传输,请使用 streamMode: "messages"
___CODE_BLOCK_15___

自定义更新

要在工具执行时流式传输更新,您可以使用配置中的 writer 参数。
___CODE_BLOCK_17___
Output
___CODE_BLOCK_18___
如果您向工具添加了 writer 参数,则在 LangGraph 执行上下文之外调用该工具时,必须提供 writer 函数。

流式传输多种模式

您可以通过将 streamMode 作为数组传递来指定多种流式模式: streamMode: ["updates", "messages", "custom"] 流式输出将是 [mode, chunk] 元组,其中 mode 是流式模式的名称, chunk 是该模式流式传输的数据。
___CODE_BLOCK_24___

禁用流式输出

在某些应用程序中,您可能需要禁用特定模型的单个 token 流式传输。这在以下情况下很有用:
  • 使用 多智能体 系统时控制哪些智能体流式输出其结果
  • 混合使用支持流式输出和不支持流式输出的模型
  • 部署到 LangSmith 并希望阻止某些模型输出流式传输到客户端
在初始化模型时设置 streaming: false
___CODE_BLOCK_26___
部署到 LangSmith 时,在您不希望将输出流式传输到客户端的任何模型上设置 streaming=False 。这是在部署前在图代码中配置的。
并非所有聊天模型集成都支持 streaming 参数。如果您的模型不支持,请改用 disableStreaming: true 。该参数通过基类在所有聊天模型上可用。
请参阅下面的 LangGraph 流式输出指南 了解更多详情。
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.