尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

LangGraph add_conditional_edges 完整详解

LangGraph add_conditional_edges 完整详解
📅 发布时间:2026/7/5 1:09:01

LangGraphadd_conditional_edges完整详解

一、基础语法

python

运行

workflow.add_conditional_edges( source: str, # 起始节点名 path_fn: Callable, # 路由判断函数 path_map: Dict[str, str] # 返回值 → 目标节点映射 )

作用:条件分支跳转,同一个节点执行完后,根据函数返回值走不同分支,类似 if/else。

二、参数拆解

  1. source条件边的起点节点,字符串,如"analyze"。

  2. path_fn(路由函数 router)接收完整 state,返回一个字符串(分支标识):

    python

    运行

    def router(state): if state["is_quick"]: return "quick" else: return "detailed"
  3. path_map 映射字典{返回值: 目标节点}

    • key:router 函数返回的字符串
    • value:要跳转的节点名称 所有 router 可能返回的值,都必须在字典里定义,否则报错。

你上一段代码补全示例

python

运行

def router(state): if state["quick_mode"]: return "quick" return "detailed" workflow.add_conditional_edges( "analyze", router, { "quick": "quick_node", "detailed": "detailed_node" } )

三、两种简写模式

模式 1:显式映射(推荐,可读性高)

python

运行

workflow.add_conditional_edges( "start", branch_func, {"a": "node_a", "b": "node_b"} )

模式 2:隐式映射(返回值 = 节点名,省略字典)

如果路由返回的字符串刚好等于目标节点名,可以不传 path_map:

python

运行

workflow.add_conditional_edges("analyze", router) # 等价于 {"quick":"quick", "detailed":"detailed"}

对应你最初的代码场景,最简写法:

python

运行

workflow.add_conditional_edges("analyze", router)

四、完整可运行最小示例

python

运行

from langgraph.graph import StateGraph from typing import TypedDict # 1. 定义状态 class State(TypedDict): content: str quick_mode: bool # 2. 节点函数 def analyze(state: State): return state def quick(state: State): print("执行快速流程") return state def detailed(state: State): print("执行详细流程") return state # 3. 路由函数 def route_analyze(state: State): if state["quick_mode"]: return "quick" return "detailed" # 4. 构建图 builder = StateGraph(State) builder.add_node("analyze", analyze) builder.add_node("quick", quick) builder.add_node("detailed", detailed) # 条件分支核心代码 builder.add_conditional_edges( source="analyze", path_fn=route_analyze, path_map={ "quick": "quick", "detailed": "detailed" } ) # 入口 builder.set_entry_point("analyze") graph = builder.compile() # 测试 graph.invoke({"content": "test", "quick_mode": True}) graph.invoke({"content": "test", "quick_mode": False})

五、常见用法拓展

1. 多分支(3 个及以上分支)

python

运行

def multi_router(state): if state["type"] == "search": return "search" elif state["type"] == "write": return "write" return "review" builder.add_conditional_edges( "plan", multi_router, { "search": "search_node", "write": "write_node", "review": "review_node" } )

2. 条件边指向结束节点 END

python

运行

from langgraph.graph import END builder.add_conditional_edges( "check", exit_router, {"finish": END, "continue": "loop_node"} )

3. 循环逻辑(自环条件分支)

适合 Agent 多轮思考,判断是否还要继续调用工具:

python

运行

def tool_router(state): if state["need_tool"]: return "tool" return "end" builder.add_conditional_edges( "agent", tool_router, {"tool": "tool", "end": END} ) # tool执行完再回到agent builder.add_edge("tool", "agent")

六、常见踩坑

  1. router 返回值不在 path_map 的 key 里 → KeyError所有可能返回的字符串必须全部写入映射字典。
  2. 节点名写错path_map 的 value 必须是已经add_node注册过的节点。
  3. 路由函数必须接收完整 state 参数,不能无参。
  4. 条件边只能有一个起点,一个add_conditional_edges对应一个 source。

相关新闻

  • 实战指南:快速掌握ForgeGradle的完整构建流程
  • DyberPet:重新定义桌面交互的虚拟伙伴开发框架
  • DockDoor终极指南:重新定义macOS窗口管理与效率革命

最新新闻

  • python lambda 入门+实战
  • 京东JoyAI-VL-Interaction实时视频交互模型部署与应用指南
  • 【JAVA毕设源码分享】基于springboot电子外设销售系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • GPIO 中断抖动排查:软件消抖不能替硬件背锅
  • 验证码检测和识别3:基于深度学习YOLO26神经网络实现验证码检测和识别(含训练代码、数据集和GUI交互界面)
  • 机器人已进入汽车整车产线

日新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号