当前位置: 首页 > news >正文

【LangGraph】03-LangGraph之State

State通常用于保存当前会话中的消息,也可以自定义State用来存储额外的信息字段,State在节点之间传递,可以在节点中访问和修改State,此外LangGraph中的短期记忆通常使用State实现。

一、访问State中的消息

from langgraph.graph import StateGraph, MessagesState, START, END # 定义节点 def node1(state: MessagesState): print(state) print(state['messages']) #定义State类型为MessagesState graph = StateGraph(MessagesState) graph.add_node("node1", node1) graph.add_edge(START, "node1") graph.add_edge("node1", END) graph = graph.compile() graph.invoke({"messages": [{"role": "user", "content": "hi!"}]})

输出结果:

{'messages': [HumanMessage(content='hi!', additional_kwargs={}, response_metadata={}, id='6bcb92b6-d508-4ba4-996c-f05af82c1c2a')]}
[HumanMessage(content='hi!', additional_kwargs={}, response_metadata={}, id='6bcb92b6-d508-4ba4-996c-f05af82c1c2a')]

  • MessagesState是内置的State类型,默认只有“messages”一个字段,可用于保存图执行过程中产生的消息。

  • 在节点中可以访问State中的消息

二、自定义State

from typing import TypedDict from langgraph.graph import StateGraph, MessagesState, START, END # 自定义State class State(TypedDict): name: str age: int def node1(state: State): print(state['name']) print(state['age']) # print(state['name']) # return state graph = StateGraph(State) graph.add_node("node1", node1) graph.add_edge(START, "node1") graph.add_edge("node1", END) graph = graph.compile() # 调用图时可传入State的内容 result = graph.invoke({"messages": [{"role": "user", "content": "hi!"}], "name": '张三', 'age': 18}) print(result)

输出结果:

张三
18
{'name': '张三', 'age': 18}

  • 自定义state可通过继承TypedDict来实现
  • 在调用图时,可传入state的内容字段

三、修改State

from typing import TypedDict from langgraph.graph import StateGraph, MessagesState, START, END class State(TypedDict): name: str age: int def node1(state: State): print(state['name']) print(state['age']) state['name'] = '李四' state['age'] += 1 return state graph = StateGraph(State) graph.add_node("node1", node1) graph.add_edge(START, "node1") graph.add_edge("node1", END) graph = graph.compile() result = graph.invoke({"messages": [{"role": "user", "content": "hi!"}], "name": '张三', 'age': 18}) print(result)

输出结果:

张三
18
{'name': '李四', 'age': 19}

  • 可以在节点中修改state中的字段

  • 节点必须返回state,否则修改无效

四、总结

  1. State是用于保存当前会话的上下文信息的,不同会话间不能共享,可用于实现短期记忆
  2. MessageState保存图执行过程中产生的消息
  3. 自定义State可以额外增加字段属性
  4. 节点中可修改State,但需要返回修改后的State否则修改无效
http://www.jsqmd.com/news/659249/

相关文章:

  • STM32H750项目实战:如何把DMA数据精准丢进512KB高速SRAM(Keil MDK配置详解)
  • Agent 的生命周期管理与治理
  • 嵌入式系统中文支持实战——从Ubuntu到Buildroot的locale配置与疑难解析
  • Java Stream sorted()排序实战:从基础到高级Comparator应用
  • 一句话自动剪Vlog!连BGM都能丝滑卡点,CutClaw有点太会了
  • 从MNIST代码里学到的:PyTorch模型调试与可视化实战技巧(附常见错误排查)
  • 神经符号AI融合:下一代开发范式
  • LSTM时序预测与Pixel Script Temple结合:生成动态像素动画序列
  • CodeBlocks-20.03 新手上路:从零配置到首个C++程序
  • 2026风机箱哪家好?新风换气机源头厂家怎么选?优质风机箱实力推荐:江苏亿恒空调 - 栗子测评
  • SpringBoot项目集成AspectJ:从依赖配置到实战问题排查
  • 从理论到实践:伺服三环控制的参数整定与Simulink仿真指南
  • NaViL-9B实战教程:使用NaViL-9B构建自动化图文审核与合规检查系统
  • B站视频转文字终极方案:Bili2text如何革命性提升你的学习与创作效率?
  • 告别重复造轮子:用若依的表单构建器,5分钟搞定复杂业务表单(附动态菜单配置)
  • 具身智能表征的ImageNet来了!机器人终于看懂了人类世界
  • Python实战:立体像对空间前方交会算法解析与实现
  • ccmusic-database行业落地:在线教育平台音乐鉴赏课自动流派标注系统
  • 2026专业空压机厂家推荐:蚌埠正德,深耕行业多年,满足各类工况使用需求 - 栗子测评
  • 机械臂抓取实战:如何用YOLOv5和GraspNet实现动态目标精准抓取(附完整代码)
  • 别再只盯着成本中心了!用SAP EC-PCA做利润中心分析,从配置到报表的全流程解读
  • 2026文化石市场亮点:技术精湛的厂家推荐,文化石/天然石/砌墙石/贴墙石/石材/冰裂纹/碎拼石,文化石厂商哪家好 - 品牌推荐师
  • 单片机实战解析:从时序到代码,手把手实现DS18B20温度采集
  • Gymnasium强化学习实战:手把手教你配置Atari游戏环境(含ROM许可问题处理)
  • 微信支付JSAPI报错排查指南:从‘total_fee’到云函数unifiedOrder的完整配置流程
  • 保姆级教程:用Termux+Alpine Linux在安卓上搭建个人Trilium笔记服务器(含端口映射详解)
  • IEC104 规约深度解析(一) 帧格式与数据单元
  • SITS2026私有化部署最后窗口期:仅剩62天,官方将于5月31日关闭v1.x License续订通道
  • 5分钟搞懂LTE/NR的PDCCH:手机是怎么知道基站让它干啥的?
  • 用Python模拟一个真实的IEC104子站:从零封装Server类到主站联调