AI创想

标题: 【LangGraph】03-LangGraph之state [打印本页]

作者: AI小编    时间: 4 小时前
标题: 【LangGraph】03-LangGraph之state
作者:CSDN博客
state通常用于保存当前会话中的消息,也可以自定义State用来存储额外的信息字段,state在节点之间传递,可以在节点中访问和修改state,此外LangGraph中的短期记忆通常使用state实现。
一、访问State中的消息
  1. from langgraph.graph import StateGraph, MessagesState, START, END
  2. # 定义节点
  3. def node1(state: MessagesState):
  4.     print(state)
  5.     print(state['messages'])
  6. #定义State类型为MessagesState
  7. graph = StateGraph(MessagesState)
  8. graph.add_node("node1", node1)
  9. graph.add_edge(START, "node1")
  10. graph.add_edge("node1", END)
  11. graph = graph.compile()
  12. 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')]

二、自定义state
  1. from typing import TypedDict
  2. from langgraph.graph import StateGraph, MessagesState, START, END
  3. # 自定义State
  4. class State(TypedDict):
  5.     # 注意:这里也可以定义message字段来接收上下文消息,大家可以自行尝试
  6.     name: str
  7.     age: int
  8. def node1(state: State):
  9.     print(state['name'])
  10.     print(state['age'])
  11.     # print(state['name'])
  12.     # return state
  13. graph = StateGraph(State)
  14. graph.add_node("node1", node1)
  15. graph.add_edge(START, "node1")
  16. graph.add_edge("node1", END)
  17. graph = graph.compile()
  18. # 调用图时可传入State的内容
  19. result = graph.invoke({"messages": [{"role": "user", "content": "hi!"}], "name": '张三', 'age': 18})
  20. print(result)
复制代码
输出结果:
张三
18
{'name': '张三', 'age': 18}

三、修改State
  1. from typing import TypedDict
  2. from langgraph.graph import StateGraph, MessagesState, START, END
  3. class State(TypedDict):
  4.     name: str
  5.     age: int
  6. def node1(state: State):
  7.     print(state['name'])
  8.     print(state['age'])
  9.     state['name'] = '李四'
  10.     state['age'] += 1
  11.     return state
  12. graph = StateGraph(State)
  13. graph.add_node("node1", node1)
  14. graph.add_edge(START, "node1")
  15. graph.add_edge("node1", END)
  16. graph = graph.compile()
  17. result = graph.invoke({"messages": [{"role": "user", "content": "hi!"}], "name": '张三', 'age': 18})
  18. print(result)
复制代码
输出结果:
张三
18
{'name': '李四', 'age': 19}

四、总结


原文地址:https://blog.csdn.net/lilianggui/article/details/160260976




欢迎光临 AI创想 (http://llms-ai.com/) Powered by Discuz! X3.4