Graph的基本流程理解

py 复制代码
# 完整代码
from typing import TypedDict
from langgraph.graph import StateGraph, START, END

## 定义状态
class MyState(TypedDict, total=False):
    node1: str  
    node2: str  
  • TypedDict:说明这个类是「类型描述字典」,用来约定state的数据结构,给IDE类型提示。
  • total=False :默认情况下 TypedDict 要求你必须提供所有字段;total=False 意思:字段可选,可以不存在。
  • node1和node2:state中的通道(channel) ,是state字典里的key,用来存放数据。⚠️ 注意:不是运行节点,这里只是刚好和节点同名,容易混淆。
py 复制代码
## 实例化图
workflow = StateGraph(MyState)

这句代码的意思是告诉graph:整个工作流所依据的数据容器,必须符合 MyState 这个结构。

py 复制代码
## 定义节点
def node1(state: MyState):
    return {"node1": "node1 result"}

def node2(state: MyState):
    return {"node2": "node2 result"}
  • state:当前最新的状态字典。图运行到这个节点时,框架自动把当前 state 传给函数。
  • return:返回的字典不是完整新 state,是增量补丁 patch。只会更新指定通道,不会覆盖整个state。
py 复制代码
## 添加节点和边
(
workflow.add_node("node1", node1)
.add_node("node2", node2)
.add_edge(START, "node1")
.add_edge("node1", "node2")
.add_edge("node2", END)
)

这个workflow的工作流为:START ------ node1 ------ node2 ------ END。

py 复制代码
## 编译及运行
graph = workflow.compile()
result = graph.invoke({})

运行过程

  1. invoke 传入初始 state:{}
  2. START 触发,进入节点 node1
  3. node1 收到 state{},返回 patch {"node1": "node1 result"}
  4. LangGraph 合并,state 变成{"node1": "node1 result"}
  5. 静态边流转,走到节点 node2
  6. node2 收到 state {"node1": "node1 result"},返回 patch {"node2": "node2 result"}
  7. LangGraph 合并,state 变成{"node1": "node1 result", "node2": "node2 result"}
  8. node2 执行完,走到 END,图终止,返回最终 state

疑惑自解

Q1: node节点在定义时,要传参state,但是workflow在add_node时,传入的node并没有带state参。 A1:workflow.add_node("node1", node1),这段代码,将node1函数在workflow进行登记,并将该节点命名为"node1"。 至于node1执行的时机,是在执行graph.invoke({}),图开始执行时:

  1. LangGraph 拿到当前全局 state
  2. 找到要执行的节点对应的函数(也就是我们注册进去的 node1)
  3. LangGraph 自动调用 node1(state) ,把当前 state 当做第一个参数塞进去。

核心区分:

  • 构建期:add_node只是登记函数,不执行,不需要传state
  • 运行期:invoke启动图,框架自动调用节点函数并传入state

概念区分(重点)

  • 节点(Node):def node1 这个函数,代表一段业务逻辑

  • 通道(Channel):state里的key,node1/node2,用来存储数据

    本示例只是名字碰巧一样,二者完全不是同一个东西。


相关推荐
武子康1 小时前
权重装进了 24 GiB,四路 32K 上下文还装得下吗?
人工智能·llm·agent
潘锦1 小时前
做 Agent 架构时,OpenViking 的几个可以学习的点
agent·cto
hpoenixf1 小时前
Agent 查了很多资料,为什么还是交不出答案?
agent
武子康1 小时前
Codex 只读审查的权限边界:任务文件是谁写的?
人工智能·llm·agent
Csvn1 小时前
第 26 章 案例二 企业知识库问答 Agent
人工智能·aigc·agent
码哥字节1 小时前
187K star 的 superpowers 我用了三个月:没你想的那么香
agent
九酒1 小时前
没 Token 能用,有 Token 更聪明:一个企业技术支持 Agent 的 RAG 实战
agent
小白跃升坊1 小时前
阿里云2026年AI Agent 开发者调研报告解读:企业 Agent 到底卡在哪
阿里云·agent·ai agent·ai工程·调研报告