langgraph在节点中访问State
文章目录节点中访问State图节点中读取State图节点更新StateOverwrite绕过Reducer总结节点中访问State图节点中读取State在 LangGraph 中节点本质上是一个可调用对象通常定义为普通 Python 函数。节点函数被执行时LangGraph 会自动将当前图运行到该节点时的State传入节点函数。节点函数的第一个参数通常是当前运行图的状态对象也就是State。def node(state: StateSchema): ...其中state表示当前节点执行时可以访问到的全局状态快照。节点可以通过读取state中的字段获取上游节点写入的数据并基于这些数据完成当前节点的业务逻辑。示例代码如下fromlanggraph.graphimportStateGraph,START,ENDfromtypingimportTypedDict,AnnotatedfromoperatorimportaddclassOverAllState(TypedDict):logs:Annotated[list[str],add]id:strdefnode_a(state:OverAllState):fork,vinstate.items():print(fk:{k}, v:{v})builderStateGraph(state_schemaOverAllState)builder.add_node(node_a,node_a)builder.add_edge(START,node_a)builder.add_edge(node_a,END)graphbuilder.compile()resultgraph.invoke({logs:[START],id:start})输出如下k: logs, v: [START] k: id, v: start图节点更新State在 LangGraph 中节点函数通常不需要返回更新后的完整状态只需要返回本节点对状态的局部更新。也就是说节点的返回值可以只包含需要修改的状态字段。对于节点没有返回的字段LangGraph 会保留其原有状态值对于节点返回的字段LangGraph 会根据该字段是否配置了Reducer来决定如何合并更新值。如果字段配置了Reducer则使用对应的Reducer函数将旧值和新值合并如果字段没有配置Reducer则按照默认规则使用节点返回的新值覆盖原值。LangGraph运行时会按照状态字段的Reducer函数将其与当前的最新状态合并。示例代码如下fromlanggraph.graphimportStateGraph,START,ENDfromtypingimportTypedDict,AnnotatedfromoperatorimportaddclassOverAllState(TypedDict):logs:Annotated[list[str],add]id:strdefnode_a(state:OverAllState):fork,vinstate.items():print(fk:{k}, v:{v})return{logs:[node_a 更新状态]}builderStateGraph(state_schemaOverAllState)builder.add_node(node_a,node_a)builder.add_edge(START,node_a)builder.add_edge(node_a,END)graphbuilder.compile()resultgraph.invoke({logs:[START],id:start})print(*30,- result -,*30)print(result)输出如下k: logs, v: [START] k: id, v: start - result - {logs: [START, node_a 更新状态], id: start}在上述示例中logs字段通过Annotated[list[str], add]绑定了 Reducer 函数operator.add因此 LangGraph 会将原有的logs值和node_a返回的新logs值进行列表拼接[START] [node_a 更新状态]最终得到[START, node_a 更新状态]id字段没有出现在node_a的返回值中因此该字段不会被更新。图运行结束后输出状态中的id仍然保持输入时的值id: start因此LangGraph 节点更新 State 的核心规则可以概括为节点只返回需要更新的字段未返回的字段保持不变返回的字段根据是否配置 Reducer 决定是合并还是覆盖。Overwrite绕过Reducer在前面的示例中如果某个状态字段定义了Reducer那么节点返回该字段的更新值时LangGraph 默认会通过对应的Reducer将新值与已有状态值进行合并。在某些场景下我们可能并不希望继续执行Reducer的聚合逻辑而是希望本次更新直接覆盖旧值。这时可以使用Overwrite。Overwrite的作用是告诉 LangGraph 本次状态更新不走该字段原本定义的Reducer而是直接用新值覆盖状态中的旧值。需要注意的是Overwrite只影响当前这一次更新并不会修改状态字段本身的Reducer定义。后续节点如果继续正常返回该字段的更新值仍然会按照原来的Reducer逻辑进行合并。示例代码如下fromlanggraph.graphimportStateGraph,START,ENDfromlanggraph.typesimportOverwritefromtypingimportTypedDict,AnnotatedfromoperatorimportaddclassOverAllState(TypedDict):logs:Annotated[list[str],add]id:strdefnode_a(state:OverAllState):return{logs:[node_a],id:node_a}defnode_b(state:OverAllState):return{logs:Overwrite([node_b]),id:node_b}defnode_c(state:OverAllState):return{logs:[node_c],id:node_c}builderStateGraph(state_schemaOverAllState)builder.add_node(node_a,node_a)builder.add_node(node_b,node_b)builder.add_node(node_c,node_c)builder.add_edge(START,node_a)builder.add_edge(node_a,node_b)builder.add_edge(node_b,node_c)builder.add_edge(node_c,END)graphbuilder.compile()resultgraph.invoke({logs:[START],id:start})print(*30,- result -,*30)print(result)输出如下 - result - {logs: [node_b, node_c], id: node_c}上述代码中logs字段绑定了operator.add()函数如果没有Overwrite则最终输出的logs的值应为[START, node_a, node_b, node_c]node_b返回更新时用Overwrite包裹了logs字段的值那么当前状态的logs会被[node_b]覆盖因此最终输出的logs字段值变成了[node_b, node_c]id字段按照默认行为保留最后一次更新的值。总结注意 from langgraph.types import Overwrite 的使用

相关新闻

LangGraph 流式输出 Streaming 实战:四种 stream_mode 怎么选

LangGraph 流式输出 Streaming 实战:四种 stream_mode 怎么选

点外卖时,你最焦虑的不是等 30 分钟,而是不知道"外卖到哪了"。所以平台会显示:商家接单 → 骑手到店 → 已取餐 → 距你 500 米。等待时间没变,但焦虑没了——因为你看到了过程。 前六集写的图都是"黑盒执行":graph.invoke(input),…

2026/7/30 12:37:13 阅读更多 →
第一性原理与苏格拉底提问:深度思考的数字助手

第一性原理与苏格拉底提问:深度思考的数字助手

1. 项目概述:当第一性原理遇上苏格拉底式提问在解决复杂问题时,我们常常陷入思维定势的泥潭。这个名为"第一性原理思考教练"的项目,本质上是一个融合了两种顶级思维工具的数字助手——它用苏格拉底式提问作为手术刀,以第…

2026/7/28 5:50:25 阅读更多 →
Transformers.js:浏览器端AI模型部署与实践

Transformers.js:浏览器端AI模型部署与实践

1. Transformers.js 简介与核心优势Transformers.js 是一个革命性的 JavaScript 库,它让开发者能够在浏览器环境中直接运行各种 AI 模型,而无需依赖后端服务器。这个库的核心在于使用了 ONNX Runtime,使得预训练的 PyTorch、TensorFlow 或其他…

2026/7/30 0:46:10 阅读更多 →

最新新闻

C语言基础(5)一维数组基础与排序算法全解析

C语言基础(5)一维数组基础与排序算法全解析

数组:用来保存多个数据表类型相同的数据一、整形数组1.数组基础定义:类型说明符 (数组名)[常量]; eg.int a[10]char str[32]类型说明符:基本数据类型、构造数据类型数组名:遵循标识符命名规则常…

2026/7/30 12:37:02 阅读更多 →
GridPlayer:免费开源的多视频网格播放器,5分钟实现多窗口同步播放

GridPlayer:免费开源的多视频网格播放器,5分钟实现多窗口同步播放

GridPlayer:免费开源的多视频网格播放器,5分钟实现多窗口同步播放 【免费下载链接】gridplayer Play videos side-by-side 项目地址: https://gitcode.com/gh_mirrors/gr/gridplayer 你是否经常需要在多个视频之间频繁切换,对比分析不…

2026/7/30 12:37:02 阅读更多 →
微信消息防撤回工具:5个实用技巧让你再也不错过重要信息

微信消息防撤回工具:5个实用技巧让你再也不错过重要信息

微信消息防撤回工具:5个实用技巧让你再也不错过重要信息 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitcode.…

2026/7/30 12:37:02 阅读更多 →
Python一键移除Excel工作表密码保护

Python一键移除Excel工作表密码保护

1. 项目概述:Excel工作表密码保护的痛点与解决方案 每次遇到带密码保护的Excel文件却不知道密码时,那种抓狂的感觉我太熟悉了。作为经常需要处理各类报表的数据从业者,我遇到过太多同事离职后留下的加密文档、外包团队交接的受保护表格&#…

2026/7/30 12:37:02 阅读更多 →
市场规格尺寸齐全的内存控制器LOGIC芯片测试座制造厂家测试精度高

市场规格尺寸齐全的内存控制器LOGIC芯片测试座制造厂家测试精度高

在芯片测试领域,内存控制器LOGIC芯片测试座的重要性不言而喻。它直接影响着芯片测试的精度与效率,进而对整个芯片产业的发展产生深远影响。市场上规格尺寸齐全且测试精度高的制造厂家并不多,深圳市谷易电子有限公司(以下简称“谷易…

2026/7/30 12:37:02 阅读更多 →
VSC下垂控制策略在微电网中的MATLAB仿真实践

VSC下垂控制策略在微电网中的MATLAB仿真实践

1. VSC下垂控制策略仿真模型概述在电力电子系统仿真领域,VSC(电压源换流器)下垂控制策略是微电网和分布式能源系统中的关键技术方案。这个基于MATLAB/Simulink的仿真模型专门为2014a及以上版本设计,能够完整模拟VSC在孤岛运行模式…

2026/7/30 12:36:02 阅读更多 →

日新闻

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:13 阅读更多 →
如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾经在浏览…

2026/7/30 0:00:13 阅读更多 →
“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

更多请点击: https://intelliparadigm.com 第一章:AI 教师备课辅助 AI 教师备课辅助系统正逐步成为教育数字化转型的核心支撑工具,它并非替代教师,而是通过语义理解、知识图谱与多模态生成能力,将教师从重复性劳动中解…

2026/7/30 0:00:13 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻