LangGraph 智能体开发实战:从链式编排到图式编排

发布时间:2026/8/14 4:32:14

LangGraph 智能体开发实战:从链式编排到图式编排
这里写自定义目录标题欢迎使用Markdown编辑器引言当 Chain 不够用的时候一、为什么需要图式编排二、LangGraph 的核心概念2.1 State状态是图的灵魂四、多 Agent 协作与并行五、工程化实践要点六、总结新的改变功能快捷键合理的创建标题有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能丰富你的文章UML图表流程图FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好 这是你第一次使用# LangGraph 智能体开发实战从链式编排到图式编排引言当 Chain 不够用的时候如果你在过去一年里接触过大模型应用开发LangChain这个名字大概率不会陌生它几乎成了快速搭建 RAG 或简单工具调用应用的脚手架代名词。但当你真正试图用它构建一个逻辑复杂、状态持久、需要根据中间结果动态调整执行路径的智能体Agent时可能会感到力不从心。那种感觉就像用乐高积木搭一个静态模型很顺手但要让它动起来还得自己手动去拧发条、调齿轮。这正是 LangGraph 出现的背景。简单来说LangChain 提供的是链Chain——一种线性的、预定义顺序的执行流而 LangGraph 提供的是图Graph——一种可以包含循环、分支和状态管理的执行流。从链到图的跃迁意味着智能体从按剧本走升级到了能自己看地图找路。一、为什么需要图式编排先看一个真实场景用户提出一个模糊的初始请求——“帮我分析上季度的销售数据并给出下季度的预测建议”。这个任务要求智能体自主决定先去数据库拉取数据接着清洗数据再选择分析模型生成报告最后甚至能根据初步报告发现的问题发起新一轮的细化查询。这种带有循环和状态记忆的任务用传统的 Chain 架构来堆砌代码会迅速变得难以维护和调试。因为 Chain 是静态的、线性的无法表达如果结果不理想就重试根据上一步结果决定下一步这类动态逻辑。LangGraph 的核心价值在于把 Agent 的工作流建模为一个有向图。图中的每个节点Node代表一个可执行的动作调用 LLM、执行工具、读写状态边Edge定义了动作执行后的流转条件。整个图共享一个持久化的状态State随着工作流的推进而更新。这种设计天然支持循环、分支、并行和状态管理。二、LangGraph 的核心概念2.1 State状态是图的灵魂状态是 LangGraph 中最核心的概念。它定义了工作流执行过程中需要保存和传递的数据。每个节点执行后都会更新状态后续节点可以访问前面节点的结果。状态的设计直接决定了图的表达能力。fromtypingimportTypedDict,Annotatedfromlanggraph.graphimportStateGraphclassAgentState(TypedDict):messages:list# 对话历史task:str# 当前任务data:dict# 中间数据retries:int# 重试计数### 2.2 Node节点是执行单元节点是图的基本执行单元可以是调用 LLM、执行工具、处理数据等任意函数。每个节点接收状态作为输入返回状态更新作为输出。### 2.3 Edge边定义流转逻辑边定义了节点之间的流转关系。LangGraph 支持两种边普通边固定流转和条件边根据状态动态决定流向。条件边是实现智能决策的关键——模型判断结果是否满意决定是继续还是结束。### 2.4 Checkpoint检查点与持久化LangGraph 内置了检查点机制可以在任意节点保存状态快照。这意味着任务中断后可以从断点恢复支持时间旅行调试回放任意步骤支持人机协作在关键节点暂停等待人工确认。## 三、实战构建一个带循环和工具调用的 Agent下面用 LangGraph 构建一个能自主完成数据分析任务的 Agent它包含三个节点规划Plan、执行Execute、检查Check并通过条件边实现循环。 pythonfromlanggraph.graphimportStateGraph,ENDfromlangchain_openaiimportChatOpenAI llmChatOpenAI(modelgpt-4o,temperature0)# 节点 1规划defplan_node(state):taskstate[task]planllm.invoke(f为任务制定执行计划{task})return{plan:plan.content,retries:state.get(retries,0)}# 节点 2执行defexecute_node(state):planstate[plan]resultllm.invoke(f按计划执行{plan})return{data:result.content}# 节点 3检查defcheck_node(state):datastate[data]verdictllm.invoke(f检查结果是否满足要求只回答 yes 或 no{data})return{satisfied:verdict.content.strip().lower()yes}# 条件边根据检查结果决定是否重试defshould_continue(state):ifstate.get(satisfied):returnendifstate.get(retries,0)3:returnendreturnretry# 构建图graphStateGraph(AgentState)graph.add_node(plan,plan_node)graph.add_node(execute,execute_node)graph.add_node(check,check_node)graph.set_entry_point(plan)graph.add_edge(plan,execute)graph.add_edge(execute,check)graph.add_conditional_edges(check,should_continue,{end:END,retry:plan})appgraph.compile()resultapp.invoke({task:分析上季度销售数据并给出预测,messages:[]})print(result[data])这段代码展示了 LangGraph 最核心的能力循环。当检查节点判定结果不满足要求时流程会回到规划节点重新执行直到满意或达到重试上限。这种规划-执行-检查-再规划的循环正是 Agent 区别于普通 Chain 的本质特征。四、多 Agent 协作与并行LangGraph 的图模型天然支持多 Agent 协作。你可以把多个 Agent 作为图中的节点通过边定义它们的协作关系顺序协作Agent A 完成后结果传给 Agent B。适合流水线式任务。并行协作多个 Agent 同时执行最后汇总结果。适合可以拆分的独立子任务。LangGraph 支持扇出fan-out和扇入fan-in模式。层级协作一个主管Agent 负责任务分解和调度多个工人Agent 执行具体任务。这是最常用的多 Agent 模式。fromlanggraph.graphimportStateGraph# 并行执行两个子任务graph.add_node(researcher,research_agent)graph.add_node(analyst,analysis_agent)graph.add_node(aggregator,aggregate_agent)graph.add_edge(start,researcher)graph.add_edge(start,analyst)graph.add_edge(researcher,aggregator)graph.add_edge(analyst,aggregator)并行协作能显著提升任务完成速度。比如竞品分析任务可以让信息检索 Agent和数据提取 Agent并行工作最后统一汇总整体耗时能缩短一半以上。五、工程化实践要点第一状态设计要克制。状态是图的共享内存设计得越复杂调试越困难。建议只保存必要的数据中间结果及时清理避免状态膨胀。第二善用检查点。生产环境一定要开启检查点持久化这样任务中断可以恢复也方便回放调试。检查点可以存储到 SQLite、PostgreSQL 等外部存储。第三控制循环次数。Agent 循环是烧钱的重灾区。一定要设置最大迭代次数和预算上限防止 Agent 陷入死循环或无限重试。第四可观测性。LangGraph 支持逐步追踪执行过程配合 LangSmith 可以可视化查看每个节点的输入输出。生产环境务必开启追踪否则 Agent 出问题根本无从排查。第五人机协作。对高风险操作删除数据、发送消息、支付在关键节点设置人工确认断点让 Agent 暂停等待人工审批。这是 Agent 落地到生产环境的安全底线。六、总结LangGraph 把 Agent 开发从写代码提升到了设计图的层次。它的核心贡献不是提供了多少现成组件而是建立了一套表达复杂工作流的模型状态驱动、节点执行、条件流转、检查点持久化。这套模型让 Agent 从玩具走向生产成为可能。对于开发者建议的进阶路径是先理解 State、Node、Edge 三个核心概念然后用 LangGraph 重构一个已有的 Chain 应用体会图式编排的优势接着实现带循环和工具调用的 Agent最后尝试多 Agent 协作和检查点持久化。当你掌握了图式编排的思维你会发现 Agent 开发不再是玄学而是一门可以系统化、工程化的技术。Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持除了标准的Markdown编辑器功能我们增加了如下几点新功能帮助你用它写博客全新的界面设计将会带来全新的写作体验在创作中心设置你喜爱的代码高亮样式Markdown将代码片显示选择的高亮样式进行展示增加了图片拖拽功能你可以将本地的图片直接拖拽到编辑区域直接展示全新的KaTeX数学公式语法增加了支持甘特图的mermaid语法1功能增加了多屏幕编辑Markdown文章功能增加了焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置等功能功能按钮位于编辑区域与预览区域中间增加了检查列表功能。功能快捷键撤销Ctrl/CommandZ重做Ctrl/CommandY加粗Ctrl/CommandB斜体Ctrl/CommandI标题Ctrl/CommandShiftH无序列表Ctrl/CommandShiftU有序列表Ctrl/CommandShiftO检查列表Ctrl/CommandShiftC插入代码Ctrl/CommandShiftK插入链接Ctrl/CommandShiftL插入图片Ctrl/CommandShiftG查找Ctrl/CommandF替换Ctrl/CommandG合理的创建标题有助于目录的生成直接输入1次#并按下space后将生成1级标题。输入2次#并按下space后将生成2级标题。以此类推我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。如何改变文本的样式强调文本强调文本加粗文本加粗文本标记文本删除文本引用文本H2O is是液体。210运算结果是 1024.插入链接与图片链接: link.图片:带尺寸的图片:居中的图片:居中并且带尺寸的图片:当然我们为了让用户更加便捷我们增加了图片拖拽功能。如何插入一段漂亮的代码片去博客设置页面选择一款你喜欢的代码片高亮样式下面展示同样高亮的代码片.// An highlighted blockvarfoobar;生成一个适合你的列表项目项目项目项目1项目2项目3计划任务完成任务创建一个表格一个简单的表格是这么创建的项目Value电脑$1600手机$12导管$1设定内容居中、居左、居右使用:---------:居中使用:----------居左使用----------:居右第一列第二列第三列第一列文本居中第二列文本居右第三列文本居左SmartyPantsSmartyPants 是一个文本转换工具主要功能是将普通的 ASCII 标点符号自动转换为更美观的印刷体标点符号。例如原始符号转换后说明引号“引号”直引号变弯引号单引号‘单引号’直单引号变弯单引号--–两个连字符变短破折号---—三个连字符变长破折号...…三个点变省略号创建一个自定义列表MarkdownText-to-HTMLconversion toolAuthorsJohnLuke如何创建一个注脚一个具有注脚的文本。2注释也是必不可少的Markdown将文本转换为HTML。KaTeX数学公式您可以使用渲染LaTeX数学表达式 KaTeX:Gamma公式展示Γ ( n ) ( n − 1 ) ! ∀ n ∈ N \Gamma(n) (n-1)!\quad\forall n\in\mathbb NΓ(n)(n−1)!∀n∈N是通过欧拉积分Γ ( z ) ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) \int_0^\infty t^{z-1}e^{-t}dt\,.Γ(z)∫0∞​tz−1e−tdt.你可以找到更多关于的信息LaTeX数学表达式here.新的甘特图功能丰富你的文章2014-01-072014-01-092014-01-112014-01-132014-01-152014-01-172014-01-192014-01-21已完成进行中计划一计划二现有任务Adding GANTT diagram functionality to mermaid关于甘特图语法参考 这儿,UML图表可以使用UML图表进行渲染例如下面产生的一个序列图王五李四张三王五李四张三李四想了很长时间, 文字太长了不适合放在一行.你好李四, 最近怎么样?你最近怎么样王五我很好谢谢!我很好谢谢!打量着王五...很好... 王五, 你怎么样?关于UML图表语法参考 这儿,流程图链接长方形圆圆角长方形菱形关于Mermaid语法参考 这儿,FLowchart流程图我们依旧会支持flowchart.js的流程图语法Created with Raphaël 2.3.0开始我的操作确认结束yesno关于Flowchart流程图语法参考 这儿.导出与导入导出如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到文章导出生成一个.md文件或者.html文件进行本地保存。导入如果你想加载一篇你写过的.md文件在上方工具栏可以选择导入功能进行对应扩展名的文件导入继续你的创作。mermaid语法说明 ↩︎注脚的解释 ↩︎

相关新闻

如何快速重置Navicat试用期:navicat-key一键清理注册表实操指南

如何快速重置Navicat试用期:navicat-key一键清理注册表实操指南

2026/8/14 4:32:14

如何快速重置Navicat试用期:navicat-key一键清理注册表实操指南 【免费下载链接】navicat-key navicat-key 项目地址: https://gitcode.com/gh_mirrors/na/navicat-key 试用期又到期了。你打开 Navicat 准备跑明天的查询,屏幕上却弹出"试用期…

基于Apriori算法的Python商品推荐系统全栈开发实践

基于Apriori算法的Python商品推荐系统全栈开发实践

2026/8/14 4:22:13

1. 先搞清楚这个项目到底要做什么,以及它适合谁这个“Python商品推荐系统”毕业设计,核心目标很明确:搭建一个能自动抓取商品数据、分析用户行为、并给出个性化推荐的全栈Web应用。它不是一个简单的算法演示,而是一个从数据采集、…

嵌入式面试总结(十三)——Flash

嵌入式面试总结(十三)——Flash

2026/8/14 4:22:13

一、前言本文旨在系统梳理嵌入式系统中 Flash 存储技术的核心知识点,为嵌入式软件工程师、驱动开发者以及正在准备相关技术面试的读者提供一份清晰的参考指南。内容涵盖 Flash 的基本类型、操作特性、文件系统、驱动模型以及常见的面试问题与实战要点,帮…

Typora图片布局进阶:用HTML/CSS实现多图并排与网格排版

Typora图片布局进阶:用HTML/CSS实现多图并排与网格排版

2026/8/14 6:42:19

1. 项目概述:为什么我们需要在Typora中控制图片布局?如果你和我一样,长期使用Typora作为主力Markdown编辑器,那你一定遇到过这个痛点:当你想在文档里展示一组对比图、一组操作步骤的截图,或者一个产品的多角…

成组链接法:Linux文件系统空闲磁盘块管理的高效算法解析

成组链接法:Linux文件系统空闲磁盘块管理的高效算法解析

2026/8/14 6:42:19

1. 项目概述:从“盘符”到“超级块”,理解文件系统的基石如果你用过Windows,肯定对C盘、D盘这些盘符不陌生。在Linux下,你可能更熟悉/dev/sda1、/dev/sdb2这样的设备名。但你是否想过,操作系统是如何知道一个500GB的硬…

FreeDetect免费查重官网功能详解|权威论文检测服务平台

FreeDetect免费查重官网功能详解|权威论文检测服务平台

2026/8/14 6:42:19

一、平台概述:专业合规的一站式学术服务平台 FreeDetect又称Free查重,是面向本科、专科、硕博研究生、科研学者、期刊投稿作者及职称论文撰写人员的综合性学术检测平台。平台坚守合规学术服务准则,直连各大官方检测API,所有检测报…

Mac打印提示Filter failed?一文详解CUPS打印系统故障排查与修复

Mac打印提示Filter failed?一文详解CUPS打印系统故障排查与修复

2026/8/14 6:42:19

1. 问题初探:当MAC打印弹出“Filter failed” 如果你在Mac上点击打印,满怀期待地等待纸张吐出,结果却只等来一个冷冰冰的“Filter failed”(过滤器失败)的错误提示,那种感觉确实很糟心。这个问题在Mac用户中…

TeXpresso高级技巧:自定义渲染参数与优化编译性能的实用方法

TeXpresso高级技巧:自定义渲染参数与优化编译性能的实用方法

2026/8/14 6:42:19

TeXpresso高级技巧:自定义渲染参数与优化编译性能的实用方法 【免费下载链接】texpresso TeXpresso: live rendering and error reporting for LaTeX 项目地址: https://gitcode.com/gh_mirrors/te/texpresso TeXpresso作为一款专注于LaTeX实时渲染和错误报告…

重庆营销网站建设公司排名深度解析:为什么选对人比选便宜更重要

重庆营销网站建设公司排名深度解析:为什么选对人比选便宜更重要

2026/8/14 6:32:18

在这个数字化转型的浪潮里,许多重庆的企业老板和业务负责人都有一个共同的痛点:想做个好网站,却总被忽悠。以前大家可能觉得有个网页展示一下公司信息就万事大吉了,但现在时代变了,流量贵得吓人,获客成本越来越高,网站不再仅仅是一个线上的“名片”,而是企业获取客户、…

比较好的亚太EMBA,问了6位校友师资差别真的挺大

比较好的亚太EMBA,问了6位校友师资差别真的挺大

2026/8/13 11:01:28

比较好的亚太EMBA核心差异先看什么?对于希望兼顾工作与系统管理能力提升的亚太区高管而言,筛选匹配度高的EMBA项目时,师资配置是决定学习体验与实际收获的核心要素之一。我们结合3-4个公开信息透明、办学历史较长的亚太区主流EMBA项目特点&am…

备考3个月对比6份资料 海外游学的亚洲EMBA面试注意点

备考3个月对比6份资料 海外游学的亚洲EMBA面试注意点

2026/8/11 8:44:43

备考海外游学的亚洲EMBA面试,核心要围绕项目国际化设计逻辑、个人跨文化管理经验匹配度两个维度准备,避免把游学模块等同于普通旅游参访的认知偏差。不少备考者花3个月对比6份资料,却容易忽略面试官对“国际视野落地能力”的考察——比如香港…

比较好的国内EMBA,问了二十位校友聊透人脉价值

比较好的国内EMBA,问了二十位校友聊透人脉价值

2026/8/13 17:17:06

比较好的国内EMBA核心差异体现在哪些方面?比较好的国内EMBA的核心长期价值,很大程度上依托于校友网络的连接质量与资源生态的活跃度,这也是不少高管在择校时优先考量的因素。我们结合3-4个市场关注度较高的项目公开信息,从课程、师…

大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

2026/8/14 0:01:53

在这个数字化浪潮席卷全球的今天,企业想要在激烈的市场竞争中站稳脚跟,拥有一张好看的“数字名片”已经远远不够了。很多老板在刚开始接触互联网业务时,都有一个共同的困惑:为什么我花了钱建的网站,就像是在真空中自嗨?访客进来转了两圈就跑了,线索石沉大海,甚至连客服…

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

2026/8/14 0:01:54

在这个流量为王、视觉至上的互联网时代,对于临沂乃至整个山东乃至全国的传统中小企业来说,拥有一张精美的“数字名片”早已不再是可选项,而是生存的必答题。每当夜幕降临,沂河两岸灯火辉煌,物流之都的喧嚣逐渐沉淀为对未来的思考。我们常常听到老板们在茶余饭后探讨:为什…

Flutter与OpenHarmony实现剧本杀组队表单开发实战

Flutter与OpenHarmony实现剧本杀组队表单开发实战

2026/8/14 0:01:54

1. 项目概述在移动应用开发领域,跨平台框架Flutter因其高效的开发体验和出色的性能表现,已经成为众多开发者的首选。而OpenHarmony作为新兴的操作系统平台,其开放性和灵活性为开发者提供了全新的可能性。本文将聚焦于一个实际应用场景——剧本…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/8 5:07:31

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/9 13:42:46

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/8 2:30:15

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…