游乐游手机版
首页/AI教程/文章详情

LangGraph学习笔记第六篇:Stream流式输出详细教程与实例

时间:2026-05-30 22:38
一 Stream流式输出 流式输出可以说是LangGraph最具特色的核心功能之一。它让图的执行过程不再是一个“黑盒”——每一步的状态变化都能被实时捕捉和观察。那么,LangGraph具体提供了哪几种流式输出的方式?今天我们就逐一拆解分析。 1 updates 和 values 流式输出 先从最

一. Stream流式输出

流式输出可以说是LangGraph最具特色的核心功能之一。它让图的执行过程不再是一个“黑盒”——每一步的状态变化都能被实时捕捉和观察。那么,LangGraph具体提供了哪几种流式输出的方式?今天我们就逐一拆解分析。

1. updates 和 values 流式输出

先从最直观的两种模式说起:updatesvalues

可以这样理解:updates 模式更像是“增量推送”,它只告诉你每一步结束后哪些状态字段发生了变化。比如,节点 refine_topic 运行完,只推送它更新过的 topic 字段;节点 generate_joke 运行完,则只推送 joke 字段。这种模式数据量小,非常适合只关心变化点的场景。

values 模式则不同,它会在每一步结束后,将当前整个状态的全部值都推送出来。因此你会看到,从只包含 topic,到 topic 被改写,再到最后 topicjoke 双双到位,完整的过程一目了然。

来看代码示例:

执行结果:

updates 模式输出:
{'refine_topic': {'topic': 'ice cream and cats'}}
{'generate_joke': {'joke': 'This is a joke about ice cream and cats'}}

values 模式输出:
{'topic': 'ice cream'}
{'topic': 'ice cream and cats'}
{'topic': 'ice cream and cats', 'joke': 'This is a joke about ice cream and cats'}

2. updates 和 values,以及 ["values", "updates"] 混合输出、debug 模式

单一模式能满足大部分需求,但有时我们希望在同一时间拿到不同维度的信息。LangGraph 也考虑到了这一点。

可以通过将 stream_mode 参数设置为一个列表,比如 ["values", "updates"],来同时获取两种模式的输出。这时,每次流出的数据会变成一个元组 (模式名称, 数据块)。对于调试阶段而言,这简直是利器——既能看清整体状态变化,又能追踪每一次具体更新的源头。

更进一步,还可以尝试 debug 模式。它会输出更加详细的调试信息,包括节点执行顺序、输入输出等。当然,这个模式可能需要一些额外配置,并非所有环境都直接可用。

代码示例中,通过一个“思考-回应-反思”的三节点图,展示了这些模式的实际用法:

执行结果:

3. messages 模式的流式输出:一个元组 (message_chunk, metadata)

前面聊的都是状态级别的流式输出,那如果要逐字流式输出LLM生成的内容呢?这时就要用到 messages 模式了。

它的工作原理是:图中任何一个调用了大语言模型(LLM)的节点,其输出的每一个令牌(token)都会被逐字捕获,并形成一个元组。这个元组包含两部分:

  • message_chunk:LLM输出的令牌或消息片段,本质上就是模型生成的一个个字、一个个词。
  • metadata:一个字典,包含了该令牌来自哪个图节点、是哪一次LLM调用等信息。这在大图中定位问题非常有用。

可以想象一下典型的“客服问答”场景:用户输入问题后,系统将查询传递给大模型,然后逐字返回答案。在 messages 模式下,这些返回的每个字都会被包装成元组,开发者可以逐帧捕获,实现类似“打字机”的流式效果。

代码示例中,通过一个简单的单节点图,直接调用大模型(如通义千问),并逐字打印输出:

执行结果:

4. 自定义(custom)流式输出:组合多种模式

有时候,我们希望从图节点内部发送一些自定义数据,比如进度更新、中间状态、某个关键变量的值等。这时候就需要用到 custom 模式了。

实现起来其实很简单:

  • 在节点内部,通过 get_stream_writer() 获取一个流写入器。
  • 然后调用 writer(data),将任意结构的数据推送出去。数据可以是字典、字符串,甚至更复杂的结构。
  • 在调用图的 .stream() 时,将 stream_mode 设置为 "custom" 即可。当然,也可以与其他模式组合使用,比如 ["updates", "custom"]。但注意,组合中至少要包含 "custom" 才会触发自定义数据流。

例如,在一个处理查询的节点中,可以先推送“开始处理”,再推送“步骤1:分析查询内容”,再推送“步骤2:生成结果”,最后推送“完成”。整个流程的进度就能被前端实时捕获,带来极佳的交互体验。

代码示例中,通过一个带自定义流的节点,演示了如何发送进度更新和自定义键值对:

执行结果:

来源:https://juejin.cn/post/7644878748161245234
上一篇完整掌握清空Excel表格内容的实用技巧与方法 下一篇MCP解析:AI万能接口打通连接世界最后一公里
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
OpenClaw新版完整入门教程核心功能与阿里云部署实操
AI教程 · 2026-05-30

OpenClaw新版完整入门教程核心功能与阿里云部署实操

在AI智能体全面普及的2026年,各类自动化工具层出不穷,OpenClaw凭借开源免费、私有化部署、多平台适配、强大任务执行能力迅速走红,成为个人办公、团队协作、开发运维、消息自动交互的热门选择。很多新手初次接触OpenClaw时,都不清楚它到底是什么、具备哪些核心能力、适合什么场景,也不知道如何在

清空Excel表格内容的四种简单技巧 工作效率快速提升
AI教程 · 2026-05-30

清空Excel表格内容的四种简单技巧 工作效率快速提升

在日常使用Excel处理数据时,清空单元格内容是最常见的基础操作之一。无论是需要重新录入数据,还是整理杂乱的历史信息,掌握几种高效可靠的清空方法,都能显著提升工作效率。接下来,我们将介绍几种经过实测的实用技巧,帮助您快速清理Excel表格内容。 Excel表格内容如何快速清空?四种实用技巧 在使用E

AI写作工具高效撰写工作总结:范文与提示词指南
AI教程 · 2026-05-30

AI写作工具高效撰写工作总结:范文与提示词指南

撰写工作总结是职场中一项既常见又充满挑战的任务。它既是对阶段工作的深度复盘,也是向上级展示业绩、规划未来发展的重要沟通方式。然而,将繁杂的工作内容整理成逻辑清晰、重点突出的文档,往往需要投入大量时间与心力。幸运的是,随着智能办公工具的普及,这一过程正变得高效便捷。以下示例展示了如何借助AI写作工具,

OBS Studio AI智能场景识别与自动优化指南
AI教程 · 2026-05-30

OBS Studio AI智能场景识别与自动优化指南

好的,以下是依照您的严格要求完成的人性化重写版本。已删除所有无关推广信息,保留了全部核心数据、代码、表格、图片和章节结构,并注入了口语化的专家叙述节奏,使文章读起来更贴近一位资深技术博主的分享。 --- OBS Studio AI增强:智能场景识别与自动优化全攻略 你有没有遇到过这种情况:直播正进入

Openclaw加Seed2.0 Skills搞定AI漫剧制作
AI教程 · 2026-05-30

Openclaw加Seed2.0 Skills搞定AI漫剧制作

从一张静态图片到生成一整套完整的漫剧视频,整个过程大约只需十分钟。这听起来像是某种前沿科技,但实际上,这只是基于字节跳动Seed2 0开发的一套实用技能组合包,相关代码已经开源在GitHub上。 这套漫剧视频生成工作流,主要汇集了四大核心技能: 「seedance-video」:提供从文字到视频、从