AI-大语言模型LLM-LangGraphV1.0学习笔记-stream_mode参数详解

目的

为避免一学就会、一用就废,这里做下笔记

内容

在 LangGraph 中,stream_mode 参数用于控制调用 graph.stream()graph.astream() 方法时,流式输出(Streaming Output)的内容粒度类型。它允许你实时获取图执行过程中的中间状态、LLM 生成内容或自定义数据,而不是等待整个图执行完毕。

该参数接受一个字符串或字符串列表,指定要监听的流模式。以下是所有可用模式的详细说明:

1. 核心流模式详解

模式值 输出内容 适用场景 备注
"values" 图的完整状态(State)。在每个节点执行后,返回当前 State 的所有键值对。 需要监控图状态在每一步的完整快照。 数据量大,包含未变化的字段。
"updates" 状态的增量更新。在每个节点执行后,返回该节点具体修改了哪些字段(键值对)。 最常用。用于前端实时渲染进度、显示哪个节点做了什么。 只包含变化的字段,结构为 {node_name: {field: value}}
"messages" LLM 的 Token 流。在LLM 生成过程中,实时返回单个 Token 及其元数据。 实现打字机效果(Typewriter Effect),实时显示 AI 回复。 输出格式为 (token, metadata) 元组。
"custom" 自定义数据。捕获节点内部通过 get_stream_writer() 发出的任意数据。 输出进度条、内部日志、工具执行中间结果。 需在节点代码中主动调用 writer.write(data)
"debug" 详细的调试信息。包括节点开始/结束、状态变化、LLM 调用详情等。 深度调试图执行流程,分析性能瓶颈。 信息最全,但结构复杂,通常用于开发阶段。
"checkpoints" 检查点事件。当图创建或加载检查点时触发。 配合持久化存储(Checkpointer),用于状态恢复监听。 输出格式与 get_state() 类似。
"tasks" 任务事件。当任务(节点)开始和完成时触发,包含结果和错误信息。 监控异步任务的执行生命周期。 事件类型包括 startend

2. 使用示例

单模式使用(仅监听状态更新)

python 复制代码
for chunk in graph.stream(
    {"input": "Hello"},
    stream_mode="updates"  # 或 ["updates"]
):
    print(chunk)
# 输出示例: {'node_1': {'response': 'Hi there!'}}

多模式组合(监听状态更新 + LLM Token)

python 复制代码
for mode, chunk in graph.stream(
    {"input": "Hello"},
    stream_mode=["updates", "messages"]  # 返回元组 (mode, chunk)
):
    if mode == "updates":
        print(f"State updated: {chunk}")
    elif mode == "messages":
        token, meta = chunk
        print(f"Token: {token}")

自定义流写入(在节点函数中)

python 复制代码
from langgraph.config import get_stream_writer

def my_node(state):
    writer = get_stream_writer("custom")
    writer.write("Starting heavy computation...")  # 这行内容会被 stream_mode="custom" 捕获
    # ... 节点逻辑
    return {"result": "done"}

3. 注意事项

  • 异步兼容性astream() 是异步方法,需在 async for 循环中使用。
  • 默认行为 :如果不指定 stream_mode,方法将阻塞执行,直到图运行结束才返回最终状态。
  • 性能影响 :启用 "messages""debug" 模式可能会增加内存和网络开销,尤其是在处理长文本时。
  • 版本差异"checkpoints""tasks" 等模式在较新版本(如 0.2.x 之后)中引入,请确保 LangGraph 版本支持。
相关推荐
归去来 兮13 小时前
LangChain从入门到精通
python·langchain·langgraph
余槐i13 小时前
从useState到Agent状态:React状态管理为何在AI工作流中失灵?
react·状态管理·ai agent·langgraph·tool calling
XGeFei16 小时前
【LangGraph—5—Capabilities—Persistence】
langgraph
小马9267 天前
Agent 编排层的分岔:开源框架分工与托管 Harness 的工程选型
开源·langgraph
梦因you而美9 天前
LangChain-ReAct-Agent 智能客服系统 · 项目技术文档
langchain·agent·fastapi·扫地机器人·langgraph·rag 检索增强·react 智能客服
creator_Li12 天前
LangGraph学习笔记
langgraph
AIGC大时代13 天前
LangGraph 生产级笔记:Checkpointer + interrupt(),把人审做成可恢复状态机
python·agent·状态机·langgraph·hitl
m0_5791466513 天前
Agent会话持久化:事件日志重放与状态快照Checkpoint深度解析
claude·langgraph·会话记忆
.唉17 天前
05. LangGraph 深度解析:从基础概念到高级应用全指南
agent·langgraph
阿图灵17 天前
LangGraph 实战 03:Workflows 与 Agents——六种工作流模式与智能体实战(附 6 个可运行示例)
java·前端·javascript·工作流·ai agent·智能体·langgraph