云计算百科
云计算领域专业知识百科平台

LangGraph01:简介

LangGraph 是什么:把 AI 应用从「一次性函数调用」变成「持续运行的系统」

读完本文你会理解:为什么单个大模型撑不起复杂任务、LangGraph 用「图」建模 AI 流程的三要素是什么、它和 LangChain 是什么关系,以及它的五大核心能力各自解决什么问题。

一个上线即翻车的场景

设想你给团队做了一个 AI 调研助手:输入一个主题,它自动拆解问题、查资料、校验事实、输出报告。本地跑得很顺,上线第三天,用户投诉来了——

报告生成到一半,服务进程因为一次 OOM 重启了。用户重新提交主题,助手从头开始查资料,之前二十分钟的成果全部作废。

模型没问题,代码逻辑也没问题,问题出在编排方式:传统写法把 AI 应用当成一个函数——输入进去、输出出来,中间状态用完即弃。函数一挂,什么都留不下来。

LangGraph 要解决的就是这一类问题。

一、单智能体的天花板:全能选手为什么做不好复杂任务

把一个大模型当成"全能选手",让它既查资料、又写报告、还做事实核查,听起来省事,实际效果很尴尬:它每样都能做一点,但每样都不精。

更麻烦的是三个固有缺陷:

  • 长链路里容易丢东西:任务超过十几步之后,早期的上下文被挤出注意力窗口,模型开始"断片";
  • 单一视角容易一错到底:没有第二双眼睛检查它的产出,幻觉会沿着流程一路放大;
  • 职责混在一起没法定位问题:报告写得差,你分不清是检索环节没做好,还是写作环节没做好。

于是业界转向了一个朴素的思路:让专业的人干专业的事。多智能体系统就是给 AI 组建一个"专业团队"——研究员负责找资料、核查员负责挑毛病、写作助手负责成稿、编辑负责润色。每个智能体只干自己最擅长的一件事,出错面小、容易调试、方便替换。

打个比方:单个大模型像一位独奏者,什么乐器都摸过,但没有一样精到能开专场;多智能体系统像一支乐团,小提琴、大提琴、管乐各司其职,合在一起才能演完一部完整的作品。

但乐团还需要一样东西——总谱和指挥。谁先演奏、谁后进、声部之间怎么衔接、哪里反复、哪里休止,这些调度问题,正是编排框架要解决的。这就是 LangGraph 的位置。

二、LangGraph 是什么:一句话和一张图

LangGraph 是 LangChain 团队推出的开源编排框架,官方定位很直接:

LangGraph is a low-level orchestration framework for building, managing, and deploying long-running, stateful agents.

拆开理解这句话:

  • low-level(低层):它不替你封装业务细节,而是把底层控制权交给你,像搭积木一样组装 AI 系统;
  • long-running(长时运行):面向的不是"问一句答一句"的调用,而是持续数分钟甚至数小时的任务;
  • stateful(有状态):每一步的中间结果都被显式保存,中断之后可以接着跑,而不是从头再来。

它的核心思想用一句话概括:用"图"来建模 AI 行为——节点是动作,边是跳转逻辑,状态是记忆。

一张典型的 LangGraph 图长这样(A → B → END 的最小示例):

from langgraph.graph import StateGraph, END

graph = StateGraph(dict)

def node_a(state):
return {"value": "from A"}

def node_b(state):
return {"value": "from B"}

graph.add_node("A", node_a)
graph.add_node("B", node_b)
graph.set_entry_point("A")
graph.add_edge("A", "B")
graph.add_edge("B", END)

app = graph.compile()

#mermaid-svg-0txINejxCgl7XFIc{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-0txINejxCgl7XFIc .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-0txINejxCgl7XFIc .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-0txINejxCgl7XFIc .error-icon{fill:#552222;}#mermaid-svg-0txINejxCgl7XFIc .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-0txINejxCgl7XFIc .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-0txINejxCgl7XFIc .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-0txINejxCgl7XFIc .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-0txINejxCgl7XFIc .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-0txINejxCgl7XFIc .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-0txINejxCgl7XFIc .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-0txINejxCgl7XFIc .marker{fill:#333333;stroke:#333333;}#mermaid-svg-0txINejxCgl7XFIc .marker.cross{stroke:#333333;}#mermaid-svg-0txINejxCgl7XFIc svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-0txINejxCgl7XFIc p{margin:0;}#mermaid-svg-0txINejxCgl7XFIc .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-0txINejxCgl7XFIc .cluster-label text{fill:#333;}#mermaid-svg-0txINejxCgl7XFIc .cluster-label span{color:#333;}#mermaid-svg-0txINejxCgl7XFIc .cluster-label span p{background-color:transparent;}#mermaid-svg-0txINejxCgl7XFIc .label text,#mermaid-svg-0txINejxCgl7XFIc span{fill:#333;color:#333;}#mermaid-svg-0txINejxCgl7XFIc .node rect,#mermaid-svg-0txINejxCgl7XFIc .node circle,#mermaid-svg-0txINejxCgl7XFIc .node ellipse,#mermaid-svg-0txINejxCgl7XFIc .node polygon,#mermaid-svg-0txINejxCgl7XFIc .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-0txINejxCgl7XFIc .rough-node .label text,#mermaid-svg-0txINejxCgl7XFIc .node .label text,#mermaid-svg-0txINejxCgl7XFIc .image-shape .label,#mermaid-svg-0txINejxCgl7XFIc .icon-shape .label{text-anchor:middle;}#mermaid-svg-0txINejxCgl7XFIc .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-0txINejxCgl7XFIc .rough-node .label,#mermaid-svg-0txINejxCgl7XFIc .node .label,#mermaid-svg-0txINejxCgl7XFIc .image-shape .label,#mermaid-svg-0txINejxCgl7XFIc .icon-shape .label{text-align:center;}#mermaid-svg-0txINejxCgl7XFIc .node.clickable{cursor:pointer;}#mermaid-svg-0txINejxCgl7XFIc .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-0txINejxCgl7XFIc .arrowheadPath{fill:#333333;}#mermaid-svg-0txINejxCgl7XFIc .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-0txINejxCgl7XFIc .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-0txINejxCgl7XFIc .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-0txINejxCgl7XFIc .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-0txINejxCgl7XFIc .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-0txINejxCgl7XFIc .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-0txINejxCgl7XFIc .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-0txINejxCgl7XFIc .cluster text{fill:#333;}#mermaid-svg-0txINejxCgl7XFIc .cluster span{color:#333;}#mermaid-svg-0txINejxCgl7XFIc div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-0txINejxCgl7XFIc .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-0txINejxCgl7XFIc rect.text{fill:none;stroke-width:0;}#mermaid-svg-0txINejxCgl7XFIc .icon-shape,#mermaid-svg-0txINejxCgl7XFIc .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-0txINejxCgl7XFIc .icon-shape p,#mermaid-svg-0txINejxCgl7XFIc .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-0txINejxCgl7XFIc .icon-shape .label rect,#mermaid-svg-0txINejxCgl7XFIc .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-0txINejxCgl7XFIc .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-0txINejxCgl7XFIc .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-0txINejxCgl7XFIc :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

START

节点 Anode_a

节点 Bnode_b

END

这张图表达了:流程从 START 出发 → 执行节点 A 并把它返回的 {"value": "from A"} 合并进状态 → 按边进入节点 B → 再合并 {"value": "from B"} → 到达 END 结束。

三、图的三要素:节点、边、状态

LangGraph 的一切能力都建立在三个基本元素上。我用一个"快递分拣中心"的类比来理解它们:

要素在 LangGraph 里是什么一句话职责分拣中心里的对应物
节点(Node) 一个可调用的函数或对象 执行一个独立动作:调大模型、查数据库、跑工具 一个分拣工位,只干自己那道工序
边(Edge) 一个路由函数,读状态决定下一步去哪 控制流程走向,支持固定跳转、条件分支、循环回退 工位之间的传送带,带道岔可以分流
状态(State) 全局共享的数据结构 记录所有关键信息,是所有节点的公共上下文 贴在包裹上的快递单,每个工位都能读、都能改

三者配合产生了一个关键性质:执行路径不再由代码的嵌套结构决定,而是由图结构决定。你想加一步、改一个分支、让某个环节失败时重试,都是改图,而不是推翻重写业务代码。

四、LangChain 与 LangGraph:不是替代,是升级

一个高频问题:既然都是 LangChain 团队的产品,二者什么关系?

答案是:LangGraph 不取代 LangChain,而是补上了 LangChain 缺的那块——流程控制。LangChain 的 Chain 适合把几个步骤串成一条直线;LangGraph 适合把流程画成一张可以拐弯、可以回头的图。

维度LangChain ChainLangGraph
执行形态 单向直线,进料出成品 有向图,支持分支、循环、并行
记忆方式 本轮调用内的局部传递 显式全局状态,可持久化到存储
中断恢复 无,挂了从头再来 检查点续跑,断电不丢进度
人工介入 无内置机制 可在流程中途暂停等待人类确认
适合的任务 单次加工:查询 + 生成 长流程、多轮决策、多智能体协作

一句话总结:Chain 是单行道,图是导航地图——单行道只能往前,地图可以随时决定"接下来去哪"。

五、五大核心能力

LangGraph 的能力可以归纳为五项,每一项都对应一个真实的生产痛点:

1. 持久执行(Durable Execution)

每一步状态都落盘。服务崩了,重启之后从最近的检查点接着跑。这对"调研 + 写报告"这类小时级任务不是加分项,是及格线。

2. 人机协同(Human-in-the-loop)

模型拿不准的时候,可以让人类介入:审阅当前状态、修正参数、点击确认,流程再继续。审批流、高危操作(转账、发布)天然需要这种"人在回路"的兜底。

3. 分层记忆(Comprehensive Memory)

同时管理短期记忆(本次会话的状态)和长期记忆(跨会话的历史,配合向量库或数据库)。AI 不仅能"接话",还能"认人"。

4. 可调试(Debugging)

配合 LangSmith 生成可视化轨迹:每一步走到了哪个节点、状态变成了什么样,一目了然,不用靠打日志猜迷宫。

5. 工具集成与多智能体(Tools & Multi-Agent)

查天气、订机票、写报告,接 API 即可;同时天生支持多个 AI 分工协同——一个分析、一个决策、一个汇报。

六、多智能体:从独奏到乐团

把第一节的"分工协作"落到 LangGraph 上,就是一张多智能体的图——每个智能体是一个节点,边定义它们的协作顺序:

#mermaid-svg-jcpLqLnuZAtXHTY4{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-jcpLqLnuZAtXHTY4 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-jcpLqLnuZAtXHTY4 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-jcpLqLnuZAtXHTY4 .error-icon{fill:#552222;}#mermaid-svg-jcpLqLnuZAtXHTY4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-jcpLqLnuZAtXHTY4 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-jcpLqLnuZAtXHTY4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-jcpLqLnuZAtXHTY4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-jcpLqLnuZAtXHTY4 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-jcpLqLnuZAtXHTY4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-jcpLqLnuZAtXHTY4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-jcpLqLnuZAtXHTY4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-jcpLqLnuZAtXHTY4 .marker.cross{stroke:#333333;}#mermaid-svg-jcpLqLnuZAtXHTY4 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-jcpLqLnuZAtXHTY4 p{margin:0;}#mermaid-svg-jcpLqLnuZAtXHTY4 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-jcpLqLnuZAtXHTY4 .cluster-label text{fill:#333;}#mermaid-svg-jcpLqLnuZAtXHTY4 .cluster-label span{color:#333;}#mermaid-svg-jcpLqLnuZAtXHTY4 .cluster-label span p{background-color:transparent;}#mermaid-svg-jcpLqLnuZAtXHTY4 .label text,#mermaid-svg-jcpLqLnuZAtXHTY4 span{fill:#333;color:#333;}#mermaid-svg-jcpLqLnuZAtXHTY4 .node rect,#mermaid-svg-jcpLqLnuZAtXHTY4 .node circle,#mermaid-svg-jcpLqLnuZAtXHTY4 .node ellipse,#mermaid-svg-jcpLqLnuZAtXHTY4 .node polygon,#mermaid-svg-jcpLqLnuZAtXHTY4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-jcpLqLnuZAtXHTY4 .rough-node .label text,#mermaid-svg-jcpLqLnuZAtXHTY4 .node .label text,#mermaid-svg-jcpLqLnuZAtXHTY4 .image-shape .label,#mermaid-svg-jcpLqLnuZAtXHTY4 .icon-shape .label{text-anchor:middle;}#mermaid-svg-jcpLqLnuZAtXHTY4 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-jcpLqLnuZAtXHTY4 .rough-node .label,#mermaid-svg-jcpLqLnuZAtXHTY4 .node .label,#mermaid-svg-jcpLqLnuZAtXHTY4 .image-shape .label,#mermaid-svg-jcpLqLnuZAtXHTY4 .icon-shape .label{text-align:center;}#mermaid-svg-jcpLqLnuZAtXHTY4 .node.clickable{cursor:pointer;}#mermaid-svg-jcpLqLnuZAtXHTY4 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-jcpLqLnuZAtXHTY4 .arrowheadPath{fill:#333333;}#mermaid-svg-jcpLqLnuZAtXHTY4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-jcpLqLnuZAtXHTY4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-jcpLqLnuZAtXHTY4 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-jcpLqLnuZAtXHTY4 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-jcpLqLnuZAtXHTY4 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-jcpLqLnuZAtXHTY4 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-jcpLqLnuZAtXHTY4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-jcpLqLnuZAtXHTY4 .cluster text{fill:#333;}#mermaid-svg-jcpLqLnuZAtXHTY4 .cluster span{color:#333;}#mermaid-svg-jcpLqLnuZAtXHTY4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-jcpLqLnuZAtXHTY4 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-jcpLqLnuZAtXHTY4 rect.text{fill:none;stroke-width:0;}#mermaid-svg-jcpLqLnuZAtXHTY4 .icon-shape,#mermaid-svg-jcpLqLnuZAtXHTY4 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-jcpLqLnuZAtXHTY4 .icon-shape p,#mermaid-svg-jcpLqLnuZAtXHTY4 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-jcpLqLnuZAtXHTY4 .icon-shape .label rect,#mermaid-svg-jcpLqLnuZAtXHTY4 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-jcpLqLnuZAtXHTY4 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-jcpLqLnuZAtXHTY4 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-jcpLqLnuZAtXHTY4 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

用户输入主题

研究员智能体拆解问题 + 查资料

核查员智能体验证信息真伪

写作智能体生成报告初稿

编辑智能体润色把关

输出报告

每个节点内部可以是一个独立的模型调用甚至一张子图,而整条链路由 LangGraph 统一调度。哪个智能体质量不行,单独换掉即可——这就是"专业团队"在工程上的意义。

小结

LangGraph 的本质是一个带记忆的、图结构的 AI 任务执行器。它的设计哲学是:

把 AI 应用当成一个永远在线的"活系统",而不是一次性的函数调用。

记住三要素——节点干活、边定路线、状态存记忆——你就抓住了整个框架的骨架。下一篇,我们用一个有记忆的聊天机器人,把这三要素变成可运行的代码。

赞(0)
未经允许不得转载:网硕互联帮助中心 » LangGraph01:简介
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!