LangGraph构建合理的图,一个清晰的决策框架
摘要:LangGraph工作流基于三种核心逻辑单元组合:顺序工作流(固定步骤执行)、条件路由工作流(动态路径选择)和代理循环工作流(自主工具调用)。复杂应用通过嵌套这些模式实现,如"路由->代理"组合。高级特性包括子图模块化、状态持久化和人工审核节点。设计工作流时,可根据任务需求选择基础模式或组合模式,类似于编程中的基本控制结构。掌握这三种核心模式即可构建任意复杂的AI工
虽然LangGraph的功能可以组合出无限变化,但所有工作流本质上都是基于三种核心逻辑单元的组合。
📊 核心模式扩展详表
| 模式 | 核心目标与本质 | 关键信号词 | LangGraph 核心机制 | 典型场景 | 常见子类型/变体 |
|---|---|---|---|---|---|
| 顺序工作流 | 按预定义路径执行,完成一系列步骤。 | “先…然后…最后…” | add_edge() |
文档处理、数据ETL、固定审批链。 | 线性流水线:A→B→C。 带并行分支:A后同时执行B1和B2,再汇聚到C(需异步支持)。 |
| 条件路由工作流 | 根据动态信息选择不同执行路径。 | “如果是A情况就…,否则就…” | add_conditional_edges() |
客服分类、内容审核、动态决策。 | 基于规则路由:用if-else判断。基于LLM路由:用LLM分析并返回分支名。 基于向量路由:用嵌入相似度选择分支。 |
| 代理循环工作流 | 通过“思考-行动”循环,自主调用工具解决问题。 | “思考需要什么工具…使用它…然后继续思考…” | 循环 + ToolNode (或自定义工具节点) |
能上网搜索、查数据库、操作系统的智能助手。 | 单代理循环:经典ReAct模式。 多代理协作:多个具备不同能力的代理循环,通过路由或顺序协作。 |
🔄 核心模式的衍生与组合
正如上表所示,复杂的应用都是基本模式的组合。下图展示了一个更复杂的 “路由 -> 代理”组合模式 的工作流程,它完美体现了基本模式的嵌套:
如何理解这个组合图:
-
第一层是条件路由:根据输入,决定派往哪个处理分支。
-
第二层是代理循环:
技术客服代理和账单查询代理各自内部都是一个完整的“思考-行动”循环,他们会自主调用知识库、数据库等工具来解决问题。 -
最后是顺序汇聚:各分支处理完成后,都汇聚到
汇总/记录节点,然后结束。
💡 高级模式/特性(非独立新模式)
还有一些重要的概念,它们不是独立的工作流模式,而是增强现有模式能力的特性或设计模式:
| 概念 | 本质 | 服务于哪种核心模式 | 关键作用 |
|---|---|---|---|
| 子图/嵌套图 | 图的模块化。将复杂节点内部再封装为一个完整的子图。 | 三者均可 | 管理复杂性,实现层级化、可复用的业务模块。 |
| 持久化与检查点 | 状态记忆与回溯。将图运行到某节点的状态完整保存。 | 代理循环、长周期顺序流 | 实现长对话记忆、工作流中断恢复、版本回溯。 |
| 人工审核节点 | 人机交互。在流程中暂停,等待人工输入或确认。 | 顺序流、条件路由 | 关键决策点加入人类判断,构建人机协作流程。 |
| 异步执行 | 性能优化。让多个节点或工具调用并行执行。 | 顺序流(带分支时) | 提升工作流整体执行效率。 |
✅ 实战选择清单
当你面对一个新项目时,可以按顺序问自己:
-
任务可以拆解成一系列固定步骤吗?
-
是 -> 以 顺序工作流 为骨架。
-
否 -> 进入问题2。
-
-
任务需要根据输入内容,走完全不同的处理逻辑吗?
-
是 -> 以 条件路由工作流 为骨架。
-
否 -> 进入问题3。
-
-
任务目标是否需要一个“智能体”去自主规划并调用外部工具(API、搜索、计算等)来实现?
-
是 -> 以 代理循环工作流 为骨架。
-
否 -> 你可能只需要一个简单的单次LLM调用。
-
-
你的骨架流程中,某一步骤是否本身就很复杂?
-
是 -> 在该步骤中,嵌套另一种模式(例如,在顺序流的“处理”步骤中,嵌入一个代理循环)。
-
✍️ 总结
所以,答案是:从原子逻辑上看,只有三种核心模式。但通过组合与增强,你可以描述和构建任意复杂的AI工作流。
掌握这三种模式,就像掌握了编程中的顺序执行、条件判断和循环这三种基本结构。任何复杂的程序,最终都是由它们构建而成。
你目前正在构思的工作流,更接近哪一种核心模式,或者哪种组合模式呢?分享出来,我们可以直接以它为案例,进行具体的设计。
更多推荐


所有评论(0)