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

AI Agent开发学习系列 - LangGraph(7): 带有条件判断的Conditional Graph

在这个LangGraph条件图示例中,通过使用add_conditional_edges方法实现动态路由机制:定义一个决策函数decide_next_node来根据输入状态(如操作符operation)动态选择下一个执行节点,然后通过条件边映射表将不同的决策结果连接到对应的处理节点(加法节点或减法节点),最后使用START和END常量来定义图的入口和出口点,从而实现了一个能够根据输入条件智能选择执行路径的灵活工作流。

from typing import TypedDict
from langgraph.graph import StateGraph, START, ENDclass AgentState(TypedDict):number1: intoperation: strnumber2: intfinalNumber: intdef adder(state: AgentState) -> AgentState:"""This node adds the 2 numbers"""state["finalNumber"] = state["number1"] + state["number2"]return statedef subtractor(state: AgentState) -> AgentState:"""This node subtracts the 2 numbers"""state["finalNumber"] = state["number1"] - state["number2"]return statedef decide_next_node(state: AgentState) -> AgentState:"""THis node will select the next node of the graph"""if state["operation"] == "+":return "addtion_operation"elif state["operation"] == "-":return "subtraction_operation"graph = StateGraph(AgentState)graph.add_node("add_node", adder)
graph.add_node("subtract_node", subtractor)
graph.add_node("router", lambda state:state) # passthrough funcitongraph.add_edge(START, "router")graph.add_conditional_edges("router",decide_next_node,{# Edge: Node"addtion_operation": "add_node","subtraction_operation": "subtract_node",}
)graph.add_edge("add_node", END)
graph.add_edge("subtract_node", END)app = graph.compile()from IPython.display import Image, display
display(Image(app.get_graph().draw_mermaid_png()))result = app.invoke({"number1": 1, "operation": "+", "number2": 2})
print(result["finalNumber"])

运行结果:
在这里插入图片描述

3

add_conditional_edges 是 LangGraph 中用于创建条件分支的核心方法,它允许根据状态动态选择下一个执行节点。

与 add_edge 的区别

  • add_edge: 固定顺序连接
  • add_conditional_edges: 根据状态动态选择路径

这种方法使得工作流能够根据输入数据智能地选择不同的处理路径,非常适合需要条件逻辑的复杂应用场景。

http://www.xdnf.cn/news/17000.html

相关文章:

  • L1、L2正则化的几何解释
  • Redis 通用命令
  • Git、Gitee、GitHub、GitLab完整讲解:从基础到进阶
  • 【BTC】挖矿
  • 编程与数学 03-002 计算机网络 19_网络新技术研究
  • Android 15 中禁用/启用应用的系统级方法
  • GaussDB 约束的使用举例
  • 机器人学中路径规划(Path Planning)和轨迹生成(Trajectory Generation)关系
  • 小智服务器Java安装编译(xinnan-tech)版
  • 麦肯锡咨询公司PEI经典面试题目汇总
  • gbase8s 常见表约束介绍
  • 18-C语言:第19天笔记
  • 知识随记-----Qt 实战教程:使用 QNetworkAccessManager 发送 HTTP POST
  • Ubuntu系统VScode实现opencv(c++)图像翻转和旋转
  • Java语言核心特性全解析:从面向对象到跨平台原理
  • 【学习笔记】Java并发编程的艺术——第1章 并发编程的挑战
  • 前端开发(HTML,CSS,VUE,JS)从入门到精通!第三天(JavaScript)
  • Maven - 并行安全无重复打包构建原理揭秘
  • sqli-labs通关笔记-第28a关GET字符注入(关键字过滤绕过 手注法)
  • 如何设置主机IP地址
  • 用纳米AI一键生成Python屏幕监控软件
  • Python编程基础与实践:Python循环结构基础
  • 【图像处理基石】用Python实现基础滤镜效果
  • QPainter::CompositionMode解析
  • 智能学号抽取系统V5.6.4重磅发布
  • MyBatis 批量操作 XML 实现方式
  • 大模型(五)MOSS-TTSD学习
  • Windows 环境 psql 客户端连接数据库超慢问题
  • Mac电脑安装HomeBrew
  • GitHub 趋势日报 (2025年08月01日)