为什么需要LangGraph,当链式调用不够用的时候
为什么需要LangGraph当链式调用不够用的时候前面写了很多LangChain的链式调用。LLMChain、SequentialChain、路由链能处理大部分场景。但你迟早会遇到一个问题。有些任务用链式调用怎么写都别扭。任务有分支根据中间结果决定走哪条路。任务有循环做完了检查一下不满意要重来。任务有状态中间产生的信息要在多个步骤之间传递和修改。这些场景链式调用的一条直线走到底的模式就不够用了。你需要图。这一篇我们讲为什么需要LangGraph它跟LangChain的链式调用有什么区别什么时候该用它。链式调用的局限先看链式调用为什么不够用。链式调用的本质是流水线。输入进来经过一串固定的步骤输出结果。每一步的输出是下一步的输入像管道一样一路向前。这种模式简单清晰适合线性的任务。写文章、翻译、摘要这些任务从头到尾一条线用链式调用很自然。但真实世界的任务不总是线性的。条件分支。Agent执行一个任务中间需要做判断。如果搜索到了相关资料就走分析路径没搜到就走提问路径。链式调用不支持如果…就走A路径否则走B路径。循环重试。Agent写了一段代码测试发现报错了需要修改后重新测试。这个写-测-改-再测的过程是循环的。链式调用只能走一遍不能循环。状态管理。复杂任务中间会产生很多状态信息。当前进行到第几步、已经收集了哪些信息、哪些步骤完成了哪些没完成。这些状态需要在多个步骤之间共享和更新。链式调用没有显式的状态管理机制。并行执行。有些任务可以并行。同时搜索三个不同的关键词同时分析多个文档。链式调用是串行的不方便做并行。LangGraph就是用来解决这些问题的。LangGraph是什么LangGraph是LangChain团队推出的一个扩展库专门用来构建有状态的、多步骤的复杂Agent工作流。核心概念是图。把Agent的工作流表示成一个有向图。图的节点是处理步骤图的边定义了步骤之间的跳转关系。跟链式调用的区别在于图可以表达更复杂的控制流。图可以有条件边。从节点A出来根据条件决定走向节点B还是节点C。这就是条件分支。图可以有环。从节点B走到节点C再从节点C走回节点B。这就是循环。图有全局状态。所有节点共享一个状态对象每个节点可以读取和修改状态。这就是状态管理。图可以有并行节点。多个节点同时执行等全部完成后再继续。这就是并行。什么时候用LangGraph不是所有场景都需要LangGraph。简单的任务用LangChain的链式调用就够了没必要上LangGraph。LangGraph适合这些场景。多步骤决策任务。任务需要多个步骤步骤之间有依赖关系和条件判断。比如调研一个技术方案这个任务需要先搜索资料然后判断资料够不够够了就分析总结不够就换个关键词重新搜。需要反思和重试的任务。Agent做完一步以后要检查结果不对就重来。比如写代码-测试-修bug-再测试的循环。多Agent协作。多个Agent分工合作有的负责规划有的负责执行有的负责审查。Agent之间有消息传递和状态共享。复杂的状态管理。任务执行过程中需要维护复杂的状态比如对话历史、任务进度、中间结果。需要在多个步骤之间共享和更新。如果你的任务是线性的、单步的、不需要循环和分支的就用LangChain的链式调用。更简单、更好维护。如果你的任务有分支、有循环、有复杂状态就上LangGraph。一个直观的例子来看一个LangGraph能做但链式调用做不了的例子。假设我们要做一个研究Agent。用户给一个研究主题Agent先搜索资料然后判断资料够不够。够了就写总结不够就换个角度再搜。写完总结后自我检查质量不行就重写。这个工作流是这样的。搜索 - 判断够不够 - 够了 - 写总结 - 检查质量 - 不行 - 重写总结- 不够 - 换关键词 - 搜索回到第一步这里有条件判断够不够、质量行不行有循环重新搜索、重写总结有状态管理搜索到的资料、总结的内容。用链式调用没法表达这种流程。用LangGraph就可以。fromlanggraph.graphimportStateGraph,ENDfromtypingimportTypedDict,List# 定义状态classResearchState(TypedDict):topic:strsearch_results:List[str]summary:strquality_check:strsearch_count:int# 定义节点defsearch_node(state):# 搜索资料topicstate[topic]# ... 执行搜索resultsstate.get(search_results,[])results.append(f关于{topic}的搜索结果...)return{search_results:results,search_count:state.get(search_count,0)1}defjudge_node(state):# 判断资料够不够resultsstate[search_results]iflen(results)3:return{quality_check:enough}return{quality_check:not_enough}defsummarize_node(state):# 写总结resultsstate[search_results]summaryf基于{len(results)}条资料的总结...return{summary:summary}defcheck_node(state):# 检查质量summarystate[summary]iflen(summary)20:return{quality_check:good}return{quality_check:bad}# 定义条件边defshould_search_or_summarize(state):ifstate[quality_check]enough:returnsummarizereturnsearchdefshould_finish_or_rewrite(state):ifstate[quality_check]good:returnENDreturnsummarize# 构建图workflowStateGraph(ResearchState)# 添加节点workflow.add_node(search,search_node)workflow.add_node(judge,judge_node)workflow.add_node(summarize,summarize_node)workflow.add_node(check,check_node)# 设置入口workflow.set_entry_point(search)# 添加边workflow.add_edge(search,judge)workflow.add_conditional_edges(judge,should_search_or_summarize)workflow.add_edge(summarize,check)workflow.add_conditional_edges(check,should_finish_or_rewrite)# 编译appworkflow.compile()# 运行resultapp.invoke({topic:AI Agent开发,search_results:[],summary:,quality_check:,search_count:0,})print(result[summary])print(f搜索次数:{result[search_count]})这段代码定义了一个有分支、有循环的研究Agent工作流。搜索完判断够不够不够就回去再搜够了就写总结。写完检查质量不行就重写。用链式调用是写不出这种流程的。这就是LangGraph的价值。LangGraph和LangChain的关系很多人搞不清LangGraph和LangChain的关系。LangChain是基础框架提供了Chain、Agent、Tool、Memory、Retriever这些核心组件。适合大部分Agent开发场景。LangGraph是LangChain的扩展专门处理复杂的工作流。它在LangChain的基础上增加了图结构的状态管理能力。两者的关系是互补的。LangChain管基础组件LangGraph管复杂流程。实际项目里经常一起用LangGraph的节点里调用LangChain的组件。安装也很简单。pipinstalllanggraph下一篇我们深入LangGraph的核心概念。节点、边、状态、条件边每个概念怎么用有什么讲究。

相关新闻

Unity预制体修改不生效?深度解析覆盖机制与同步解决方案

Unity预制体修改不生效?深度解析覆盖机制与同步解决方案

1. 问题现象与核心痛点:为什么我的修改“丢了”? 在Unity项目开发中,尤其是团队协作或迭代频繁时,你很可能遇到过这个让人抓狂的场景:你精心修改了一个预制体(Prefab)——比如调整了UI按钮的位置…

2026/10/27 18:09:27 阅读更多 →
国赛报名冲刺:从北工大8月31日截止到9月10日开赛,33天双线作战表

国赛报名冲刺:从北工大8月31日截止到9月10日开赛,33天双线作战表

# 国赛报名冲刺:从北工大8月31日截止到9月10日开赛,33天双线作战表2026 年"高教社杯"全国大学生数学建模竞赛将于 9 月 10 日(周四)18 时至 9 月 13 日(周日)20 时举行。随着 8 月的到来&#xf…

2026/10/27 18:12:52 阅读更多 →
线路板制板机进化实录:小批量产线的效率破局点

线路板制板机进化实录:小批量产线的效率破局点

PCB行业的订单结构正在发生肉眼可见的变化。过去那种“一款产品打天下、一次下单跑全年”的稳定节奏,逐渐被多品种、小批量、快交付的碎片化需求取代。无论是打样验证还是试产爬坡,电路板加工环节的响应速度,直接决定了一家公司能把新品推进到…

2026/10/27 18:52:42 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/27 17:33:32 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/28 7:28:00 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/28 9:02:11 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/27 18:20:50 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/28 9:00:54 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/28 7:29:02 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/28 16:58:40 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/28 9:01:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 19:19:37 阅读更多 →