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

LangGraph Edge(边)完整讲解

LangGraph Edge(边)完整讲解

1. 基础定义

在 LangGraph 中:

  • Node(节点):独立计算单元,负责业务逻辑(检索、LLM 生成、工具调用等)
  • Edge(边)节点之间的连接关系,用来定义图的执行流向,规定执行完 A 节点后,下一步走哪个节点

简单类比: Node = 车间工位,Edge = 工位之间的传送轨道,轨道决定数据流转顺序。

2. 两大类 Edge

① 普通固定边(Normal Edge)

固定单向流转,执行完当前节点固定进入下一个指定节点,无判断分支。 语法示例:

python

运行

# 检索节点执行完,固定走组装上下文节点 graph.add_edge("retrieve_node", "augment_node")

流程:retrieve_nodeaugment_node,路径唯一、不可变更。

② 条件边(Conditional Edge)

执行完节点后,根据 State 状态做判断,动态选择下一跳节点,用来实现分支、循环、路由。

  1. 需要单独写一个路由函数(返回节点名字符串);
  2. 使用add_conditional_edges绑定。

示例:工具调用分支逻辑

python

运行

def route_after_llm(state): # 判断是否需要调用工具 if state["need_tool_call"]: return "tool_node" else: return "generate_answer_node" # 绑定条件路由 graph.add_conditional_edges( source="llm_judge_node", path=route_after_llm, path_map={"tool_node": "tool_node", "generate_answer_node": "generate_answer_node"} )

执行完llm_judge_node后,根据状态动态分流两条路径。

3. Edge 工作机制

  1. 节点执行完毕,输出状态更新,写入全局 State;
  2. 框架查找当前节点绑定的所有边;
    • 普通边:直接跳转目标节点;
    • 条件边:执行路由函数读取 State,匹配目标节点;
  3. 切换到下一个节点,重复「读 State→计算→更新 State」流程。

4. Edge 实现复杂流程能力

依靠边的组合,可以实现 LCEL 普通链条做不到的复杂逻辑:

  1. 分支:条件边做多路选择(是否调用工具、是否需要二次检索)
  2. 循环:条件边指回上游节点(Agent 多轮工具调用循环)
  3. 汇聚:多条不同节点的边指向同一个下游节点
  4. 子图:子图内部自有节点与边,子图整体又作为一个大节点,通过外层边接入主图

5. 和线性 Chain 的核心区别

  • LCEL Chain:硬编码串行顺序,流转固定,没有 “边” 的抽象;
  • LangGraph:节点与流向完全解耦,所有流转规则统一由 Edge 管理,可灵活修改、新增分支 / 循环,不用改动节点内部计算逻辑。

6. 完整极简示例(节点 + 边组合)

python

运行

# 1. 定义节点函数省略... # 2. 添加节点 graph.add_node("retrieve", retrieve_node) graph.add_node("augment", augment_node) graph.add_node("generate", generate_node) # 3. 通过Edge连接节点,定义流程 graph.add_edge("retrieve", "augment") # 检索→拼接上下文 graph.add_edge("augment", "generate") # 拼接→生成答案 # 设置入口节点 graph.set_entry_point("retrieve")

整条流水线的顺序完全由两条 Edge 定义。

http://www.jsqmd.com/news/1127804/

相关文章:

  • 如何用SketchUp STL插件实现3D打印文件转换:完整指南
  • 信号完整性之“振铃”现象:从反射系数到波形仿真的全链路解析
  • 旋转平移椭圆坐标计算:OpenCV与NumPy实现4步坐标变换矩阵
  • 高速PCB设计中的容性串扰分析与抑制策略
  • 如何通过Blender3mfFormat插件实现工业级3D打印数据完整性
  • STM32F767ZI与WSEN-ISDS IMU的高精度运动跟踪实现
  • DDR 差分时钟 PCB 设计实战:1个电容抑制 80% 共模噪声(附仿真对比)
  • SpringBoot+小程序高校校友会系统设计与实现
  • Cocos Creator 2.4.2 噪声图实现2D扭曲:3种动态参数调节与性能对比
  • AI 平台租户隔离日志:排障需要看见边界
  • 从零构建AI智能体:基于DeepSeek打造商业分析Agent实战
  • Linux字符设备驱动开发入门:从零编写Hello World内核模块
  • AI智能体在会计操纵识别中的应用与技术实现
  • CLLC谐振变换器双向控制与变频策略详解
  • Python企业级应用真相:印第安纳波利斯关键系统实践
  • Linux字符设备驱动开发实战:从零编写内核模块与用户空间通信
  • 基于Strands Agents与亚马逊云科技构建具备复利效应的Agentic AI应用实践
  • LangChain、LangGraph与LangSmith:构建复杂AI智能体的分层架构与实践
  • PCB设计四要素:布局、走线、过孔与丝印的协同艺术
  • 2026八字排盘 App 推荐观察:天乙八字排盘、命枢、问真八字等工具怎么选?
  • DeepSeek R1多阶段训练策略:从知识记忆到逻辑推理的AI能力跃迁
  • BMI270与PIC18LF26K22在嵌入式开发中的黄金组合应用
  • NGO优化TCN-BiGRU-Attention多变量时间序列预测
  • 开源社区如何用节日+冲刺激活Plone生态
  • 毕业设计实战:从零构建个人记账系统,打通源码运行与论文撰写全流程
  • 《再生勇士》最终卷
  • 6层阶梯槽PCB设计:解决新能源高功率挑战
  • 高速PCB设计中绿油层对信号完整性的影响与优化
  • TCN-BiGRU-Self_Attention混合模型在时间序列预测中的应用
  • Linux硬盘挂载稳定性指南:使用UUID彻底解决盘符漂移问题