LangGraph 中级

节点与边:条件路由与子图

掌握图的骨架搭建: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)的作用是?