add_conditional_edges() 用法

0 阅读1分钟

基本语法

graph.add_conditional_edges(
    "router",          # 从哪个节点出发
    route_func,        # 用哪个函数判断
    {
        "add": "add_node",
        "sub": "subtract_node"
    }
)

即:

add_conditional_edges(
    从哪出发,
    谁来判断,
    判断结果对应去哪
)

路由函数

def route_func(state):
    if state["operation"] == "+":
        return "add"
    else:
        return "sub"

这里返回的 "add" / "sub"路线标签,并非节点执行结果。

路线映射

{
    "add": "add_node",
    "sub": "subtract_node"
}
  • 左边是 route_func(state) 的返回值
  • 右边是实际要进入的节点名

因此:

router
   │
   ▼
route_func(state)
   │
   ├── "add" ─────→ add_node
   │
   └── "sub" ─────→ subtract_node

和 add_edge() 的区别

graph.add_edge("A", "B")

表示固定路线:

AB

而:

graph.add_conditional_edges(...)

表示存在分支:

  A
 / \
B   C

固定路线用 add_edge();需要 if / else 分流用 add_conditional_edges()

简化写法

如果路由函数直接返回节点名:

def route_func(state):
    if state["operation"] == "+":
        return "add_node"
    return "subtract_node"

则可以省略映射字典:

graph.add_conditional_edges(
    "router",
    route_func
)

二级结论

  1. Node 负责执行,Router Function 负责判断,Conditional Edge 负责跳转。
  2. add_conditional_edges() 的本质是运行时动态选择下一节点。
  3. 真正的 Agent 中,“要不要调用工具”“继续循环还是结束”也都是同一种路由机制。
  4. 当前学习阶段优先使用“路线标签 → 节点名”的显式映射写法,更容易看懂图结构。