simple_graph.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. from langgraph.graph import StateGraph, START, END
  2. from typing import TypedDict
  3. # ============================================================
  4. # 第 1 步:定义 State —— 描述整个工作流在运行时的数据结构
  5. # ============================================================
  6. class CounterState(TypedDict):
  7. """工作流的状态:一个简单的计数器"""
  8. count: int # 当前计数
  9. # ============================================================
  10. # 第 2 步:写节点函数 —— 每个节点做一件事
  11. # ============================================================
  12. def step_one(state: CounterState) -> dict:
  13. """第一个处理节点:count + 1"""
  14. new_count = state["count"] + 1
  15. return {
  16. "count": new_count
  17. }
  18. def step_two(state: CounterState) -> dict:
  19. """第二个处理节点:count * 2"""
  20. new_count = state["count"] * 2
  21. return {
  22. "count": new_count
  23. }
  24. # ============================================================
  25. # 第 3 步:创建 StateGraph 对象
  26. # ============================================================
  27. builder = StateGraph(CounterState)
  28. # ============================================================
  29. # 第 4 步:注册节点,连接边
  30. # ============================================================
  31. builder.add_node("step_one", step_one) # 把函数注册为节点
  32. builder.add_node("step_two", step_two)
  33. builder.add_edge(START, "step_one") # START → step_one
  34. builder.add_edge("step_one", "step_two") # step_one → step_two
  35. builder.add_edge("step_two", END) # step_two → END
  36. # ============================================================
  37. # 第 5 步:编译图(编译后才可执行)
  38. # ============================================================
  39. graph = builder.compile()
  40. # ============================================================
  41. # 第 6 步:执行
  42. # ============================================================
  43. result = graph.invoke({"count": 1, "log": []})
  44. print(result)
  45. # 输出: {'count': 4}
  46. #显示图结构
  47. from IPython.display import Image,display
  48. display(Image(graph.get_graph().draw_mermaid_png()))