langgraph的四种state解析
下面我们来深入拆解这段 LangGraph 代码中出现的 四种 State状态形式并结合执行流程说明它们各自的作用、约束与数据流转方式。1. 四种 State 的定义与角色① InputState输入状态pythonclassInputState(TypedDict):user_input:str角色定义外部调用者向图Graph发起请求时必须传入的数据结构。使用位置在创建 StateGraph时通过 input_schemaInputState指定。特点仅描述“入口数据”不包含图内部产生的中间或最终结果。调用 graph.invoke({“user_input”: “My”})时参数必须兼容 InputState。与本例关系初始全局状态中只有 user_input: “My”。② OutputState输出状态pythonclassOutputState(TypedDict):graph_output:str角色定义图执行完毕后返回给外部的结果结构。使用位置在创建 StateGraph时通过 output_schemaOutputState指定。特点对全局状态进行“裁剪”最终只保留此处声明的字段。示例中返回 {‘graph_output’: ‘My name is Lance’}。与本例关系即使全局状态还包含 foo、bar、user_input输出时也被过滤得只剩 graph_output。③ OverallState总体状态pythonclassOverallState(TypedDict):foo:struser_input:strgraph_output:str角色定义整个图内部维护的完整全局状态即“总状态”。使用位置作为 StateGraph的第一个类型参数StateGraph(OverallState, …)。特点理论上应囊括所有节点需要读写的状态字段本例为了演示故意没放 bar。各节点函数的输入/输出可以只是它的子集LangGraph 负责合并。初始时由 InputState注入user_input随后被各个节点逐步填充。与本例关系初始{“user_input”: “My”}foo、graph_output暂缺node_1 写入 foo→ {“user_input”: “My”, “foo”: “My name”}node_3 写入 graph_output→ 最终全局状态含三个键外加临时的 bar④ PrivateState私有/局部状态pythonclassPrivateState(TypedDict):bar:str角色定义某两个或多个相邻节点之间传递的临时数据结构不属于全局状态的正式 schema。使用位置仅作为某些节点的输入输出类型标注非图级配置。特点用于封装中间计算结果避免污染 OverallState。LangGraph 允许节点返回未在 OverallState中声明的字段并传递给下一节点只要下一节点标注接收该结构。最终不会被 OutputState输出。与本例关系node_2返回 {“bar”: “My name is”}写入私有状态node_3接收 PrivateState读取 bar并生成最终输出。2. 数据流转全过程结合代码python graph.invoke({user_input:My})步骤节点接收的状态类型标注实际可访问的字段返回的状态全局状态变化START→node_1node_1InputStateuser_input“My”{“foo”: “My name”} foonode_1→node_2node_2OverallStateuser_input, foo{“bar”: “My name is”} bar(私有)node_2→node_3node_3PrivateStatebar{“graph_output”: “My name is Lance”} graph_outputnode_3→END输出OutputState——仅保留 graph_output最终输出python{graph_output:My name is Lance}3. 核心设计思想总结关注点分离InputState对外契约调用方知道传什么OutputState对外契约调用方知道收什么OverallState对内全景图作者管理全量状态PrivateState节点间临时契约解耦中间逻辑类型驱动LangGraph 利用 Python 类型标注TypedDict在编译期/运行期做状态校验与自动补全提示。渐进式状态构建全局状态从输入开始经各节点返回的部分状态不断合并最后按输出 schema 剪裁。代码此代码取自官方给的demofromtypingimportTypedDictfromlanggraph.graphimportEND,START,StateGraphclassInputState(TypedDict):user_input:strclassOutputState(TypedDict):graph_output:strclassOverallState(TypedDict):foo:struser_input:strgraph_output:strclassPrivateState(TypedDict):bar:strdefnode_1(state:InputState)-OverallState:# Write to OverallStatereturn{foo:state[user_input] name}defnode_2(state:OverallState)-PrivateState:# Read from OverallState, write to PrivateStatereturn{bar:state[foo] is}defnode_3(state:PrivateState)-OutputState:# Read from PrivateState, write to OutputStatereturn{graph_output:state[bar] Lance}builderStateGraph(OverallState,input_schemaInputState,output_schemaOutputState)builder.add_node(node_1,node_1)builder.add_node(node_2,node_2)builder.add_node(node_3,node_3)builder.add_edge(START,node_1)builder.add_edge(node_1,node_2)builder.add_edge(node_2,node_3)builder.add_edge(node_3,END)graphbuilder.compile()graph.invoke({user_input:My})# {graph_output: My name is Lance} 实践中为了避免混淆通常建议把所有会被多个节点使用的字段都放进OverallState而将PrivateState视为可选的精细化工具。本例特意将bar放在PrivateState是为了演示四种形态的共存与区别。

相关新闻

Claude Code Desktop安装与配置全指南

Claude Code Desktop安装与配置全指南

1. Claude Code Desktop概述与核心价值 Claude Code Desktop是Anthropic公司推出的智能编程辅助工具,专为开发者设计的多功能集成环境。不同于普通的代码编辑器,它深度融合了AI编程助手Claude的核心能力,通过图形化界面提供智能代码补全、实时…

2026/10/11 0:44:53 阅读更多 →
分布式模型预测控制在多智能体点对点转移中的应用

分布式模型预测控制在多智能体点对点转移中的应用

1. 多智能体点对点转移控制概述多智能体系统的点对点转移控制是指多个自主智能体从初始位置出发,通过协同控制策略到达各自指定目标位置的过程。这类问题在无人机编队、仓储机器人、自动驾驶车队等场景中具有广泛应用价值。传统集中式控制方法在面对大规模系统时存在…

2026/10/11 13:55:58 阅读更多 →
Windows XP进程管理技巧与安全防护实战

Windows XP进程管理技巧与安全防护实战

1. Windows XP进程管理深度解析Windows XP作为一代经典操作系统,其进程管理机制至今仍被许多老旧设备和特定场景所使用。与现代操作系统相比,XP的进程管理界面确实显得简陋——任务管理器默认不显示进程路径就是典型例子。但通过系统内置工具&#xff0c…

2026/10/8 20:53:03 阅读更多 →

最新新闻

从巨型Prompt到Skill仓库:Agent能力拆解与工程实践

从巨型Prompt到Skill仓库:Agent能力拆解与工程实践

1. 从单一 Prompt 到 Skill 仓库:Agent 为什么必须拆能力 我发现很多团队做 Agent 的第一版,都是把需求一股脑塞进系统 Prompt:角色设定、工具列表、流程步骤、输出格式、行业背景、禁忌事项……开头还收敛得住,等需求迭代几轮&am…

2026/10/13 17:13:14 阅读更多 →
Android跑步App实战:高德地图SDK集成与轨迹绘制

Android跑步App实战:高德地图SDK集成与轨迹绘制

简介:这是一份基于 Android Studio 与 Java 开发的运动跑步类 App 完整源码,面向具备一定安卓基础、希望学习定位与运动数据可视化的开发者,可用于课程设计、毕业设计或二次开发。项目围绕跑步场景实现实时速度记录、跑步路径绘制、历史数据管…

2026/10/13 17:13:14 阅读更多 →
智能体技能工程化:可复用、可编排、可验证的Agent Skills设计实践

智能体技能工程化:可复用、可编排、可验证的Agent Skills设计实践

1. 项目概述:从“agent-skills”这个词组看懂当前智能体开发的真实水位“agent-skills”不是某个具体工具、框架或开源库的官方名称,而是一个高度凝练的行业术语组合——它直指当前AI工程落地中最关键、也最容易被忽视的一环:智能体&#xff…

2026/10/13 17:13:14 阅读更多 →
Android Studio校园图书管理系统课设:SQLite本地数据库实现与答辩避坑指南

Android Studio校园图书管理系统课设:SQLite本地数据库实现与答辩避坑指南

简介:这是一份面向高校学生与Android初学者的校园图书管理系统课程设计完整源码,基于Android Studio开发,可作为移动应用开发课程的满分课设参考。项目围绕用户管理、图书查询、虚拟货币充值、评论评分等核心业务展开,覆盖Activit…

2026/10/13 17:13:14 阅读更多 →
从零重构微信投票系统:数据模型、防刷体系与高并发架构实战

从零重构微信投票系统:数据模型、防刷体系与高并发架构实战

做投票系统这事,听起来好像很简单:一个页面,几个选项,点一下提交,完事。可真要把一套投票系统做到既能扛住公众号几万人同时参与、又能灵活切换多种投票玩法、还得在活动期间顶住各种恶意刷票冲击的时候,你…

2026/10/13 17:13:14 阅读更多 →
SQL WHERE语句核心语法与性能优化实战指南

SQL WHERE语句核心语法与性能优化实战指南

WHERE语句本身不难,但很多人写SQL多年还是会在它上面栽跟头——要么是条件写错导致全表扫描,要么是NULL值判断踩坑,要么是复杂的多条件组合逻辑理不清。这篇东西我把实际项目里积累的经验捋一遍,从基础语法到进阶坑点都覆盖到&…

2026/10/13 17:12:13 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →