节点与边:条件路由与子图
掌握图的骨架搭建:add_node/add_edge、条件边的路由函数、多起点并行与子图组合。
三种边
- 普通边:
add_edge("A", "B")—— A 完必到 B; - 条件边:
add_conditional_edges("A", router_fn, mapping)—— 按 State 动态选路; - START/END:入口与出口的特殊节点。
def route(state) -> str:
last = state["messages"][-1].content
if "报销" in last:
return "finance"
return "general"
graph.add_conditional_edges(
"chatbot", route,
{"finance": "finance_node", "general": "general_node"})
并行分支
一个节点同时连向多个节点(如"同时检索三个知识库"),LangGraph 会并行执行它们,各自返回的状态更新按 Reducer 合并(如分别追加消息)—— 这就是 fan-out / fan-in 模式。
子图(Subgraph):图的复用
编译好的图本身也是一个"大节点",可以被父图 add_node("sub", sub_graph) 嵌入。多智能体系统的典型结构就是:每个智能体是一个子图,主管图负责调度。
调试工具
app.get_graph().draw_mermaid():一键输出 Mermaid 图,可视化检查拓扑;app.stream(..., stream_mode="updates"):看每个节点的增量更新。
📝 课后练习
quiz-1 LangGraph 条件边(add_conditional_edges)的作用是?