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(contenthi!, additional_kwargs{}, response_metadata{}, id6bcb92b6-d508-4ba4-996c-f05af82c1c2a)]}[HumanMessage(contenthi!, additional_kwargs{}, response_metadata{}, id6bcb92b6-d508-4ba4-996c-f05af82c1c2a)]MessagesState是内置的State类型默认只有“messages”一个字段可用于保存图执行过程中产生的消息。在节点中可以访问State中的消息二、自定义Statefrom 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的内容字段三、修改Statefrom 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否则修改无效四、总结State是用于保存当前会话的上下文信息的不同会话间不能共享可用于实现短期记忆MessageState保存图执行过程中产生的消息自定义State可以额外增加字段属性节点中可修改State但需要返回修改后的State否则修改无效