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

LangGraph 控制流原语解析:Edge、Command、Send、Interrupt

一、引言为什么需要新的 Agent 控制流模型随着大模型能力的提升AI 应用逐渐从简单的 **LLM 调用链LLM Chain**演进为复杂的Agent 系统。典型 Agent 往往需要具备以下能力多轮推理reasoning loop动态工具调用tool selection并行任务执行parallel tasks多 Agent 协作multi-agent collaboration人类参与human-in-the-loop长时间运行任务long-running workflows传统 LLM pipeline 的结构通常是LLM → Tool → LLM → Tool这种结构存在明显局限控制流难以表达循环并行任务支持困难状态管理复杂多 Agent 协作缺乏统一模型为了解决这些问题LangChain 团队设计了LangGraph。LangGraph 的核心思想是使用带状态的有向图Stateful Directed Graph作为 Agent Runtime。在 LangGraph 中Graph State Runtime共同构成一个完整的Agent Orchestration System。而实现复杂控制流的关键正是 LangGraph 提供的四类控制流原语Control Flow Primitives控制原语作用EdgeGraph 级流程控制CommandNode 级动态路由Send并行任务分发Interrupt人类参与流程本文将系统解析这四类控制原语的设计理念、执行机制与架构意义。二、LangGraph Runtime 执行模型在深入控制流之前需要理解 LangGraph 的运行机制。LangGraph Runtime 可以抽象为Graph Definition Execution Engine State Store Reducer System其基本执行流程如下Node execution ↓ State update ↓ Reducer merge ↓ Edge resolution ↓ Next node scheduling更具体地说节点执行Node Execution节点执行逻辑例如调用 LLM 或工具。状态更新State Update节点返回新的 state 片段。Reducer 合并Reducer Merge如果多个节点同时更新 state需要通过 reducer 合并。路径解析Edge ResolutionGraph 根据 edge 或 routing 决定下一步节点。调度执行SchedulingRuntime 调度新的节点执行。因此 LangGraph 本质上是一个Event-driven Graph Runtime而不是简单的 DAG workflow。三、EdgeGraph 层控制流Edge 是 LangGraph 中最基础的控制流机制它定义了Graph 的拓扑结构。LangGraph 提供两种 Edge 类型add_edge add_conditional_edges3.1 静态 Edge最简单的流程graph.add_edge(A,B)执行结构A → B特点执行顺序固定类似传统 workflow适用于ETL pipeline 固定任务流程 工具处理管道3.2 条件 Edge更常见的情况是需要动态路由。LangGraph 提供graph.add_conditional_edges(A,router,{tool:tool_node,end:END})执行流程A ↓ router(state) ↓ tool_node 或 ENDRouter 的职责是根据 state 决定下一节点Router 可以返回单个节点 多个节点 END3.3 并行执行如果 router 返回多个节点[node_b, node_c]Runtime 会并行执行node_b node_c这使 Graph 可以表达fan-out workflow。3.4 Edge 的设计哲学Edge 模式强调Graph is the workflow也就是说控制流 Graph 拓扑优点流程清晰可视化友好易于调试缺点灵活性有限Agent 自主性较弱四、CommandNode 层控制流随着 Agent 复杂度增加仅依赖 Edge 会产生一个问题控制逻辑被拆分为Node logic Router logic这导致代码分散。为了解决这一问题LangGraph 引入了Command 模式。4.1 Command 的核心思想Command 是一种Node-level control primitive。节点可以同时完成更新状态 决定下一节点示例fromlanggraph.typesimportCommanddefnode(state):ifstate[score]0.8:returnCommand(update{result:good},gotonode_b)returnCommand(update{result:bad},gotonode_c)执行流程node execution ↓ Command(update, goto) ↓ state update ↓ schedule next node4.2 动态路由能力Command 允许节点在运行时动态决定下一节点node → any node这非常适合Agent reasoning multi-agent handoff dynamic tool routing例如planner → researcher → writer每个节点可以决定下一步。4.3 关于 “Edgeless Graph”Command 常被描述为支持edgeless graph。更准确地说Command 提供运行时动态路由能力 但目标节点必须已经存在于 Graph 中。因此 Graph 仍然需要注册节点builder.add_node(...)Command 只是减少了显式 Edge 的需求。五、Send并行任务分发复杂 Agent 系统经常需要执行并行任务。例如多主题搜索 文档批量分析 查询扩展LangGraph 提供Send 原语。5.1 Send 的基本机制Send 用于在运行时创建多个任务。示例fromlanggraph.typesimportSenddefplanner(state):topicsstate[topics]return[Send(research_node,{topic:t})fortintopics]执行流程planner ↓ spawn tasks ↓ research(topic1) research(topic2) research(topic3)5.2 State 隔离Send 创建的每个任务拥有独立 statebranch_state parent_state payload例如topic AI topic Robotics topic Biology每个 worker 处理自己的 state。5.3 State 合并并行执行完成后需要合并 state。LangGraph 使用Reducer 机制。例如Annotated[list,operator.add]表示list list最终结果合并为results [result1, result2, result3]5.4 Send 的典型应用Send 常用于Map-Reduce Agents Parallel Search Batch Processing Document Summarization六、InterruptHuman-in-the-loop在很多真实场景中Agent 需要人类参与。例如法律文书审核 医疗报告确认 代码评审LangGraph 提供Interrupt 原语。6.1 Interrupt 的工作机制Interrupt 的作用是暂停 Graph 执行 等待外部输入示例fromlanggraph.typesimportinterruptdefreview_node(state):feedbackinterrupt({draft:state[draft]})return{feedback:feedback}执行流程writer ↓ review_node ↓ interrupt ↓ 等待人工输入 ↓ 恢复执行6.2 Checkpoint 机制Interrupt 依赖 LangGraph 的Checkpoint 系统。执行流程node ↓ interrupt ↓ checkpoint 保存 ↓ 等待输入 ↓ resume graph恢复时加载 checkpoint 继续执行这使 LangGraph 支持long-running agents durable workflows七、四种控制原语的统一模型LangGraph 的控制流原语可以从架构层次理解。Graph Layer ↓ Node Layer ↓ Runtime Layer对应原语Graph Layer Edge Node Layer Command Runtime Layer Send Interrupt作用分别是Edge → 定义 workflow 结构 Command → 实现 Agent 自主决策 Send → 实现并行任务 Interrupt → 支持人类协作四者组合形成完整的 Agent orchestration 能力。八、典型 Agent 架构模式LangGraph 原语可以组合出多种 Agent 架构。8.1 ReAct Agent结构LLM ↓ Tool? ↓ Tool Node ↓ LLM通常使用conditional edges8.2 Planner–Executor结构planner ↓ Send tasks ↓ workers ↓ aggregator核心原语Send8.3 Multi-Agent Collaboration结构planner researcher writer criticAgent 之间通过Command进行 handoff。8.4 Human-in-the-loop Workflow结构LLM ↓ draft ↓ Interrupt ↓ human review ↓ continue九、LangGraph 的架构意义LangGraph 并不仅仅是一个 workflow engine。它更接近于Stateful Agent Runtime结合了Workflow Engine Actor Model Graph Execution Runtime其核心能力包括state management dynamic routing parallel execution human collaboration这使 LangGraph 成为构建复杂 Agent 系统的重要基础设施。十、总结LangGraph 的控制流体系由四个核心原语组成Edge Command Send Interrupt它们分别解决不同层面的控制问题Edge → workflow routing Command → agent autonomy Send → parallel execution Interrupt → human interaction四者共同构成一个完整的Stateful Agent Runtime通过组合这些原语开发者可以构建复杂推理 Agent 多 Agent 协作系统 大规模并行任务 Agent 人机协作流程这也是 LangGraph 相比传统 LLM pipeline 的最大突破。

相关文章:

LangGraph 控制流原语解析:Edge、Command、Send、Interrupt

一、引言:为什么需要新的 Agent 控制流模型 随着大模型能力的提升,AI 应用逐渐从简单的 **LLM 调用链(LLM Chain)**演进为复杂的 Agent 系统。 典型 Agent 往往需要具备以下能力: 多轮推理(reasoning loop&…...

Stable-Diffusion-v1-5-archive赋能电商:虚拟模特试穿与商品背景生成系统

Stable-Diffusion-v1-5-archive赋能电商:虚拟模特试穿与商品背景生成系统 1. 引言 做服装电商的朋友,估计都遇到过这样的头疼事:新款衣服要上架,找模特、租场地、请摄影师,一套流程下来,成本高不说&#…...

从零开始:淘晶驰串口屏复刻苹果时钟的5个关键步骤(含代码解析)

从零开始:淘晶驰串口屏复刻苹果时钟的5个关键步骤(含代码解析) 在嵌入式开发领域,人机交互界面的设计往往决定了产品的用户体验。淘晶驰串口屏以其易用性和灵活性,成为众多开发者的首选工具。今天,我们将通…...

Ubuntu 20.04 LTS换源指南:清华大学镜像源保姆级配置教程

Ubuntu 20.04 LTS 国内高速镜像源配置全攻略 如果你正在使用 Ubuntu 20.04 LTS 进行开发或学习,可能会遇到软件包下载速度缓慢的问题。这通常是由于默认的官方源服务器位于国外,网络延迟较高导致的。本文将详细介绍如何通过配置清华大学开源软件镜像站来…...

Dify平台集成效率提升300%:从零搭建企业级AI工作流的7个关键步骤

第一章:Dify平台集成效率提升300%:从零搭建企业级AI工作流的7个关键步骤在企业级AI应用落地过程中,Dify 以其低代码可视化编排能力与开放API设计显著缩短了模型集成周期。实测表明,遵循标准化实施路径后,平均工作流部署…...

Cogito-v1-preview-llama-3B问题排查:常见错误及解决方法汇总

Cogito-v1-preview-llama-3B问题排查:常见错误及解决方法汇总 1. 部署阶段常见问题 1.1 镜像拉取失败 当尝试拉取cogito-v1-preview-llama-3B镜像时,可能会遇到以下错误: Error response from daemon: pull access denied for cogito-v1-…...

StructBERT情感分类-中文-通用-base部署案例:SaaS平台嵌入式情感分析模块

StructBERT情感分类-中文-通用-base部署案例:SaaS平台嵌入式情感分析模块 1. 引言 想象一下,你运营着一个电商平台,每天涌入成千上万条用户评论。有用户说“物流超快,包装精美,五星好评!”,也…...

从原理到实战:帧差法在动态目标检测中的核心应用

1. 帧差法:动态目标检测的“火眼金睛” 大家好,我是老张,在计算机视觉和智能硬件领域摸爬滚打了十几年。今天想和大家聊聊一个听起来有点“古老”,但在实际项目中依然非常能打的技术——帧差法。尤其是在动态目标检测这个场景里&a…...

Star CCM+绘图定制:从数据可视化到专业报告生成

1. Star CCM绘图定制的核心价值 很多工程师在使用Star CCM时,往往只关注仿真计算本身,却忽略了数据可视化这个关键环节。实际上,一份专业的仿真报告,图表质量直接影响着技术成果的传达效果。我见过太多优秀的仿真工作,…...

2022年电赛A题:基于立创·地正星MSPM0L1306与STM32G030的无线充电循迹小车全系统设计

手把手复刻2022年电赛A题:无线充电循迹小车全系统设计 最近有不少同学在准备电赛,或者想自己动手做一个智能小车项目,经常问我关于无线充电和循迹结合的实现方案。正好,去年我带队做了一个2022年电赛A题的项目——无线充电循迹小车…...

nomic-embed-text-v2-moe入门指南:如何用nomic-embed-text-v2-moe替代sentence-transformers

nomic-embed-text-v2-moe入门指南:如何用nomic-embed-text-v2-moe替代sentence-transformers 在文本嵌入领域,sentence-transformers一直是许多开发者的首选工具。但随着技术的不断发展,新的嵌入模型不断涌现,其中nomic-embed-te…...

Phi-3-Mini-128K代码实例:集成LangChain工具调用实现文件上传问答

Phi-3-Mini-128K代码实例:集成LangChain工具调用实现文件上传问答 1. 引言 想象一下,你手头有一份几十页的PDF技术文档,或者一个满是数据的CSV文件,你想快速了解里面的核心内容,或者针对某个细节提问。传统做法是打开…...

Nomic-Embed-Text-V2-MoE实战:赋能微信小程序实现智能文本搜索

Nomic-Embed-Text-V2-MoE实战:赋能微信小程序实现智能文本搜索 最近在做一个内容类的小程序,用户反馈说搜索功能不太好用。比如想找“如何快速入门Python”的文章,搜“Python入门”能找到,但搜“学Python从哪开始”就找不到了。这…...

效率提升秘籍:用快马AI与龙虾部署思维加速产品迭代

最近团队内部工具开发的需求越来越多,但每次从零开始搭建一个管理后台或小工具,都要花不少时间在环境配置、基础框架搭建和部署流程上。为了提升效率,我尝试用了一种新的思路:结合“龙虾部署”追求高效、自动化的理念,…...

通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI实战:软件测试用例与缺陷报告智能生成

通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI实战:软件测试用例与缺陷报告智能生成 你是不是也经历过这样的场景?面对一份几十页的产品需求文档,要从中梳理出成百上千个测试点,光是写测试用例就耗去大半天。或者,当自动化测…...

STC32G八面玲珑开发板:全IO引出+多模态显示的8051进阶平台

1. 项目概述STC32八面玲珑开发板是一款面向嵌入式学习与快速原型验证的通用型MCU开发平台,核心控制器采用宏晶科技(STC)推出的STC32G系列高性能8051内核单片机。该开发板并非简单复刻传统51开发板形态,而是在继承经典8051易用性与…...

数据库编程中获取一年前日期的实用技巧

01获取一年前日期的方法在数据库编程过程中,经常需要获取当前时间点一年前的日期。这种需求通常出现在需要以特定时间点为基准,查询其前后相关数据量的场景中,例如分析某一时段内的用户行为变化,或者统计过去一年内某项指标的增长…...

Keyviz:让操作可视化的开源工具,提升演示效率与协作体验

Keyviz:让操作可视化的开源工具,提升演示效率与协作体验 【免费下载链接】keyviz Keyviz is a free and open-source tool to visualize your keystrokes ⌨️ and 🖱️ mouse actions in real-time. 项目地址: https://gitcode.com/gh_mir…...

MiniCPM-o-4.5-nvidia-FlagOS部署避坑指南:解决常见服务器环境问题

MiniCPM-o-4.5-nvidia-FlagOS部署避坑指南:解决常见服务器环境问题 最近在服务器上折腾MiniCPM-o-4.5-nvidia-FlagOS这个镜像的朋友,估计不少人都踩过坑。这个镜像功能挺强,但部署起来,尤其是第一次在物理服务器或者云服务器上搞…...

Leather Dress Collection快速入门:10分钟掌握12款皮装LoRA的风格迁移逻辑

Leather Dress Collection快速入门:10分钟掌握12款皮装LoRA的风格迁移逻辑 1. 项目简介 Leather Dress Collection 是一个基于Stable Diffusion 1.5的LoRA模型集合,专门用于生成各种皮革服装风格的图像。这个集合包含了12个精心调校的LoRA模型&#xf…...

告别Photoshop!RMBG-2.0一键抠图实测,效果惊艳

告别Photoshop!RMBG-2.0一键抠图实测,效果惊艳 1. 抠图这件事,真的可以变得这么简单吗? 如果你还在用Photoshop的钢笔工具,一根一根地描边,或者用魔棒工具反复调整容差,就为了把一张图片的背景…...

Qwen3-VL-8B与MATLAB协同工作:科学计算可视化结果的自然语言解读

Qwen3-VL-8B与MATLAB协同工作:科学计算可视化结果的自然语言解读 如果你经常和MATLAB打交道,肯定遇到过这样的场景:辛辛苦苦跑完仿真,生成了几十张图表,里面藏着重要的规律和结论。但当你需要向同事解释,或…...

SAP MD01报错MD251?手把手教你修复平行MRP目的地配置问题

SAP MD251报错深度解析:从根源到实战的平行MRP配置修复指南 作为SAP系统管理员,最怕的就是在关键业务操作时,屏幕上突然弹出一个鲜红的错误消息。尤其是在开发或测试环境进行MRP(物料需求计划)跑批时,遇到“…...

ESP32蓝牙键盘进阶玩法:用旋转编码器控制音量与多媒体(附完整代码)

ESP32蓝牙键盘进阶玩法:用旋转编码器控制音量与多媒体(附完整代码) 在创客圈里,ESP32凭借其强大的蓝牙功能和丰富的GPIO接口,一直是DIY无线输入设备的首选。今天我们要探讨的,是如何通过旋转编码器为ESP32蓝…...

VSCode+LaTeX环境搭建全攻略:从安装到PDF输出(附SumatraPDF配置)

VSCodeLaTeX环境搭建全攻略:从安装到PDF输出(附SumatraPDF配置) LaTeX作为学术界和工程领域广泛使用的排版工具,其强大的公式编辑和自动化排版能力一直备受推崇。而VSCode作为轻量级代码编辑器,凭借丰富的插件生态和跨…...

Locale-Emulator实战指南:解决区域兼容性问题的5个进阶技巧

Locale-Emulator实战指南:解决区域兼容性问题的5个进阶技巧 【免费下载链接】Locale-Emulator Yet Another System Region and Language Simulator 项目地址: https://gitcode.com/gh_mirrors/lo/Locale-Emulator 适用人群自测表 以下情况中若符合2项以上&a…...

高通QUPv3安全配置与访问控制源码解析

1. 高通QUPv3安全架构基础认知 第一次接触高通QUPv3时,我盯着文档里密密麻麻的寄存器配置发懵。直到在真实项目中调试I2C设备异常,才真正理解这个通用外设接口的安全设计有多重要。简单来说,QUPv3就像芯片内部的交通警察,管理着SP…...

5. ESP32-S3按键驱动实战:从硬件原理到Arduino消抖点灯

5. ESP32-S3按键驱动实战:从硬件原理到Arduino消抖点灯 大家好,我是老张,一个在嵌入式行业摸爬滚打多年的工程师。最近很多刚开始玩ESP32-S3的朋友问我,开发板上那个小小的按键到底该怎么用?为什么我写的程序&#xff…...

如何为OpenWrt打造专业级主题界面:从安装到深度定制全攻略

如何为OpenWrt打造专业级主题界面:从安装到深度定制全攻略 【免费下载链接】luci-theme-argon Argon is a clean and tidy OpenWrt LuCI theme that allows users to customize their login interface with images or videos. It also supports automatic and manua…...

STM32四旋翼飞控系统设计与实现

1. 项目概述“无人机V1.0星火版”是一个面向嵌入式学习与小型飞行平台验证的四旋翼飞控系统,其设计目标明确指向低成本、高可复现性与工程教学价值。区别于工业级或消费级大尺寸无人机对冗余设计、高精度IMU和复杂导航算法的依赖,本项目以STM32F103C8T6为…...