当前位置: 首页 > news >正文

LangGraph add_conditional_edges 完整详解

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。
http://www.jsqmd.com/news/1125096/

相关文章:

  • 实战指南:快速掌握ForgeGradle的完整构建流程
  • 豆包、千问下线智能体:不是 Agent 凉了,是野蛮生长期结束了
  • DeepBump三分钟上手教程:从平面图片到三维纹理的魔法转换
  • 镜像视界纯视觉无感定位视频孪生底层技术全解
  • STM32F405RG驱动WS2812 LED的嵌入式开发实践
  • DyberPet:重新定义桌面交互的虚拟伙伴开发框架
  • 配置文件的工程化管理:从环境变量到结构化配置的演化路径
  • 网络安全渗透测试入门:从DVWA到在线靶场的实战训练指南
  • AI 电动窗帘电机智能功率 高可靠及 IoT 智能联动 核心选型方案
  • DockDoor终极指南:重新定义macOS窗口管理与效率革命
  • League-Toolkit:英雄联盟智能游戏助手的革命性突破
  • 探索 Aqua,Hyperliquid 如何打通衍生品流动性向零售渗透的最终圣杯
  • UI自动化测试中span元素定位的5种核心技巧与最佳实践
  • 四大核心视频孪生底层技术专题解析:拓扑图谱打通跨镜全域连续轨迹,分区并行实现超大实景实时重建;空间大模型驱动AI前置风险推演,SpaceOS底座统一四维孪生算力根基。四大技术体系原生耦合闭环,构筑
  • GPT5.5 辅助论文写作实践:选题生成、文献整理与摘要润色流程
  • CRITIC-TOPSIS算法改进与MATLAB实现:供应链决策优化
  • 微信单向好友检测终极指南:3步快速识别谁删除了你
  • Kimi、GLM5、M2.7实战选型指南:按业务场景选最稳的大模型
  • 486图片按序展示
  • Nginx安全防护与HTTPS部署实战:从系统加固到应用层防御
  • Dify实战:从零构建企业级AI应用,快速部署RAG问答机器人
  • 大模型学习路线:从理论到实践的完整指南
  • 告别Selenium弹窗噩梦:Playwright实现无头浏览器文件自动下载实战
  • 软件测试智能化升级与落地实践
  • Tomcat AJP协议漏洞CVE-2020-1938:原理、复现与安全加固
  • 如何免费下载国家中小学智慧教育平台电子课本PDF:完整指南
  • 2026图片去水印工具推荐,免费好用,手机电脑在线工具排行榜
  • iOS越狱深度解析:从iOS 17到iOS 26.5的实战进阶指南
  • 【大白话说Java面试题 第154题】【06_Spring篇】第14题:Spring 支持的 Bean 作用域
  • 构建安全登录加密体系:从传输加密到加盐哈希存储的实战指南