LangChain 与 LangGraph 完全解析:从“流水线”到“智能流程图”

发布时间:2026/6/25 19:51:26
LangChain 与 LangGraph 完全解析:从“流水线”到“智能流程图” LangChain 与 LangGraph 完全解析从“流水线”到“智能流程图”关键词LangChain、LangGraph、大模型应用开发、AI Agent、LCEL 目录从两个装修队的故事说起LangChain大模型时代的“积木工具箱”LangGraph让AI“会拐弯”的流程图引擎一张图看懂 LangChain 与 LangGraph 的关系实战代码从 LangChain 到 LangGraph什么时候该用谁选型决策指南2025年最新动态1.0 时代来了总结与学习路线1. 从两个装修队的故事说起想象你最近买了新房需要做全屋装修。你找了两个装修队装修队 A的工头是个“流程大师”。他会把装修拆成一系列固定步骤水电改造 → 贴砖 → 刷墙 → 装柜子 → 铺地板。每一步做完才能做下一步顺序清晰、有条不紊。如果你中途想“先铺地板再刷墙”他会说“不行流程不是这么设计的。”——这就是LangChain的风格线性、有序、按部就班。装修队 B的工头是个“灵活调度员”。他不会死守固定顺序而是根据现场情况动态决策如果今天下雨不能刷外墙他就先做室内如果墙面没干透他就先去铺地板他甚至会同时让木工和电工一起进场干活。遇到复杂情况他还会停下来问你“这个柜子要什么颜色”——这就是LangGraph的风格图结构、有状态、能循环、能分支、能等人。两个装修队都能把房子装好但适合的场景完全不同。LangChain 适合“流程明确、步骤固定”的任务LangGraph 适合“需要动态决策、反复调整、多个角色协作”的复杂场景。一句话总结LangChain 是“流水线”LangGraph 是“流程图”。流水线适合重复性工作流程图适合需要不断调整的复杂任务。2. LangChain大模型时代的“积木工具箱”2.1 LangChain 是什么LangChain是一个开源框架专门用来帮助开发者构建基于大语言模型LLM的应用程序。它的核心思想是把AI应用的各个组件像积木一样拼装起来。框架的名字“LangChain”是“Language”语言和“Chain”链的组合反映了它的核心设计理念——通过将模块化的组件串联Chain在一起来构建复杂的应用。2.2 LangChain 的核心组件LangChain 提供了七大类组件组件类别作用举例Models模型对接各种大语言模型OpenAI GPT、Claude、DeepSeekPrompts提示词管理和格式化提示词PromptTemplateChains链将多个步骤串联成工作流先总结、再翻译Memory记忆记住对话历史ConversationBufferMemoryTools工具让AI调用外部能力搜索、计算器、数据库查询Agents智能体让AI自主决定用哪个工具ReAct AgentIndexes索引处理和检索文档文档加载器、向量存储2.3 LCELLangChain 的“胶水语言”LangChain 最核心的创新是LCELLangChain Expression LanguageLangChain表达式语言。它用管道操作符|把各个组件串联起来写法极其简洁fromlangchain.promptsimportPromptTemplatefromlangchain_openaiimportChatOpenAI# 定义提示词模板promptPromptTemplate.from_template(用中文总结以下内容{text})# 定义模型modelChatOpenAI(modelgpt-4o-mini)# 用 | 串联成链chainprompt|model# 执行resultchain.invoke({text:Artificial intelligence is transforming...})是不是很像 Unix 的管道命令prompt | model的意思是把 prompt 的输出格式化后的提示词直接传给 model。更复杂的多步骤链也是同样的写法# 先总结 → 再翻译成西班牙语summarize_promptPromptTemplate.from_template(总结{text})translate_promptPromptTemplate.from_template(翻译成西班牙语{summary})summarize_chainsummarize_prompt|model translate_chaintranslate_prompt|model# 组合成两步流水线full_chainsummarize_chain|(lambdax:{summary:x.content})|translate_chainLCEL 的核心优势声明式、可组合、易调试。你不需要写一堆if/else和循环只需要用|把组件“拼”在一起。2.4 LangChain 适合做什么RAG检索增强生成从文档库中检索相关信息再让LLM基于这些信息回答文档处理流水线加载 → 分割 → 向量化 → 存储 → 检索 → 生成简单的问答机器人文本摘要、翻译、分类等一次性任务一句话如果你的任务流程是“线性的、步骤固定的”LangChain 是你的不二之选。3. LangGraph让AI“会拐弯”的流程图引擎3.1 LangGraph 是什么LangGraph是 LangChain 生态系统中的一个专门库用于构建有状态的、多步骤的、图结构的工作流。如果说 LangChain 是“流水线”一条直路走到头那 LangGraph 就是“流程图”——有分支、有循环、有回退、有并行。LangGraph 被Replit、Uber、LinkedIn、GitLab、Klarna、J.P. Morgan等公司用于生产环境。2025年10月LangGraph 发布了1.0 正式版成为“持久化智能体框架”领域的第一个稳定大版本。3.2 LangGraph 的核心概念LangGraph 把工作流抽象成一张有向图Graph概念含义类比节点Node一个执行步骤流程图里的一个方框边Edge节点之间的流转路径方框之间的箭头条件边Conditional Edge根据状态决定走哪条路“如果下雨走A路否则走B路”状态State在整个流程中传递和共享的数据一个所有人都在上面写字的共享白板节点可以是一个LLM调用、一个工具调用、一个函数、甚至是一个人机交互的暂停点。状态则在节点之间传递每个节点都能读取和修改它。3.3 LangGraph 的四大核心能力LangGraph 提供了四个传统线性流程难以实现的核心能力① 持久化执行Durable Execution想象一下一个AI智能体正在执行一个需要运行 10 分钟的复杂任务跑到第 8 分钟时服务器崩溃了。传统方案从头再来。LangGraph从崩溃的地方接着跑——因为每一步的状态都被自动保存了。② 人机协作Human-in-the-LoopAI在执行过程中可以停下来等人类审批。比如一个金融交易智能体准备下单时可以暂停并询问“这笔交易金额较大请确认是否执行”这在传统线性流程中几乎无法实现。③ 循环与分支Loops BranchingAI可以反复执行某个步骤直到条件满足。比如“写代码 → 运行测试 → 如果失败就修改代码 → 再运行测试”这个循环在 LangGraph 中就是一个带条件边的图。④ 全面的记忆Comprehensive Memory不仅支持短期记忆当前对话的上下文还支持长期记忆跨会话的持久化存储。3.4 LangGraph 适合做什么复杂的 AI Agent智能体需要多轮思考、调用工具、根据结果调整策略多智能体协作系统多个AI角色分工合作需要人工审批的业务流程金融交易、医疗诊断、合同审核长时间运行的任务需要断点续跑、状态持久化研究型 Agent自主规划、执行、反思、再规划一句话如果你的任务“会拐弯、会循环、需要等人、需要记住很多事”LangGraph 是你的最佳选择。4. 一张图看懂 LangChain 与 LangGraph 的关系很多初学者会问“LangGraph 是 LangChain 的替代品吗”不是。LangGraph构建在 LangChain 之上是 LangChain 生态系统的一部分。你可以把 LangGraph 想象成 LangChain 的“高级扩展包”——它用了 LangChain 的所有组件模型、提示词、工具等但加了一层图结构编排引擎。两者的关系可以这样理解LangChainLangGraph定位组件库 线性编排图结构编排引擎核心抽象Chain链Graph图流程控制线性顺序分支、循环、并行、条件跳转状态管理简单Memory组件强大中央状态管理人工干预不支持原生支持断点续跑不支持原生支持学习曲线平缓较陡代码量少LCEL 很简洁多需要定义图结构最重要的区别LangChain 的 Chain 是线性的——A→B→C→D一条路走到底。LangGraph 的 Graph 是网状的——可以从A到B或CB可以回到AC可以到D也可以到E。LangChain 版本的代码写起来更快LangGraph 版本能在服务器崩溃后断点续跑还能在节点之间暂停等待人工审批。5. 实战代码从 LangChain 到 LangGraph5.1 安装# 安装 LangChainpipinstalllangchain langchain_openai# 安装 LangGraphpipinstalllanggraph5.2 LangChain 版本一个简单的问答链fromlangchain.promptsimportPromptTemplatefromlangchain_openaiimportChatOpenAI# 定义提示词promptPromptTemplate.from_template(请回答以下问题{question})# 定义模型modelChatOpenAI(modelgpt-4o-mini)# 用 LCEL 创建链chainprompt|model# 执行resultchain.invoke({question:什么是人工智能})print(result.content)这就是一个典型的 LangChain 应用线性、简单、一次性执行。5.3 LangGraph 版本一个带“反思循环”的智能体同样的“回答问题”任务用 LangGraph 可以做得更智能——让AI先回答再自己检查答案质量不满意就重新回答fromlanggraph.graphimportStateGraph,MessagesState,START,ENDfromlangchain_openaiimportChatOpenAIfromtypingimportLiteral modelChatOpenAI(modelgpt-4o-mini)# 定义状态在节点之间共享的数据classAgentState(MessagesState):attempt:int# 尝试次数best_answer:str# 当前最佳答案quality_score:int# 质量评分# 节点1生成答案defgenerate_answer(state:AgentState):responsemodel.invoke(state[messages])return{messages:[response],attempt:state.get(attempt,0)1,best_answer:response.content,}# 节点2评估答案质量defevaluate_answer(state:AgentState):eval_promptf请给以下答案打分1-10{state[best_answer]}eval_responsemodel.invoke(eval_prompt)# 简单模拟评分逻辑score8if好ineval_response.contentelse5return{quality_score:score}# 条件边根据评分决定下一步defshould_continue(state:AgentState)-Literal[generate,END]:ifstate[quality_score]7andstate[attempt]3:returngenerate# 评分低且未达上限 → 重新生成returnEND# 评分达标或已达上限 → 结束# 构建图graphStateGraph(AgentState)graph.add_node(generate,generate_answer)graph.add_node(evaluate,evaluate_answer)graph.add_edge(START,generate)graph.add_edge(generate,evaluate)graph.add_conditional_edges(evaluate,should_continue)# 条件分支graph.add_edge(generate,END)# 编译并执行appgraph.compile()resultapp.invoke({messages:[{role:user,content:什么是人工智能}]})print(result[best_answer])看到了吗这个流程会生成一个答案评估这个答案的质量如果质量不行7分且尝试次数不到3次 →回到第1步重新生成如果质量达标或尝试了3次 → 结束这就是 LangGraph 的“循环”能力——在 LangChain 的线性链中无法实现。5.4 一个更真实的例子多智能体协作LangGraph 最强大的场景是多智能体协作。想象一个“AI 研究助手”系统# 伪代码示意架构# 三个智能体分工协作# - 研究员 Agent负责搜索和收集信息# - 分析师 Agent负责分析和总结# - 撰稿人 Agent负责撰写最终报告# 工作流# 用户提问 → 研究员搜索 → 分析师总结 → 撰稿人撰写 → 研究员补充 → 分析师优化 → 撰稿人定稿# ↑_______________↓可以循环多次直到满意每个 Agent 都是一个节点节点之间的流转由条件边根据当前状态动态决定。这种架构在 LangChain 中几乎无法实现但在 LangGraph 中却是“天生就会”的。6. 什么时候该用谁选型决策指南6.1 决策树线性、步骤固定有分支/循环/回退是否是否开始选型你的任务流程是线性还是图状✅ LangChain✅ LangGraph场景RAG、文档处理、简单问答、文本摘要需要人工审批或断点续跑吗✅ LangGraph需要多个AI协作吗✅ LangGraph✅ LangGraph复杂单Agent也值得6.2 详细场景对照表你的需求推荐原因做一个 RAG 问答系统检索 → 生成LangChain流程线性LCEL 写起来极其简洁批量文档摘要翻译LangChain固定流水线无需复杂控制流一个会调用工具的 AI 助手单轮LangChainAgent 功能足够一个会“思考-行动-观察-再思考”的 AI 助手多轮LangGraph需要循环和状态管理需要人工审批的金融交易系统LangGraph原生支持 Human-in-the-Loop多智能体协作研究员分析师撰稿人LangGraph天生为多智能体设计长时间运行、可能中断的任务LangGraph持久化执行断点续跑快速原型验证LangChain代码量少上手快生产级复杂系统LangGraph更可控、更健壮6.3 一个重要的提醒两者不是互斥的。你可以也应该在 LangGraph 的节点内部使用 LangChain 的组件。比如用 LangChain 的PromptTemplate来管理提示词用 LangChain 的ChatOpenAI来调用模型用 LangChain 的Tool来定义工具用LangGraph 来编排这些组件之间的流转逻辑最佳实践用 LangChain 处理“每个步骤内部怎么做”用 LangGraph 处理“步骤之间怎么跳转”。7. 2025年最新动态1.0 时代来了2025年是 LangChain 和 LangGraph 的里程碑之年。2025年9月LangChain 和 LangGraph 同时发布1.0 alpha 版本。2025年10月LangGraph1.0 正式版正式发布。这是“持久化智能体框架”领域的第一个稳定大版本。LangChain 也同步发布了 1.0 版本。1.0 版本的重要变化Python 3.9 支持被移除要求Python 3.10create_react_agent被标记为弃用推荐使用新的create_agentAPI两个框架都进入了生产级稳定阶段对于开发者来说这意味着✅ 可以放心在生产环境中使用✅ API 将更加稳定不会频繁变动✅ 社区生态更加成熟8. 总结与学习路线核心知识点回顾✅LangChain 大模型应用的“积木工具箱” “流水线编排器”✅LCEL 用|串联组件的声明式语法简洁高效✅LangGraph 图结构的智能体编排引擎支持循环、分支、状态、持久化✅两者关系 LangGraph 构建在 LangChain 之上不是替代而是增强✅选型原则 线性流程用 LangChain复杂控制流用 LangGraph学习路线图阶段目标实践任务第 1 天理解基本概念读完本文用手画出你的任务流程图——是线性的还是带分支的第 3 天上手 LangChain用 LCEL 搭建一个简单的 RAG 问答系统第 1 周理解 LangGraph 核心运行 5.3 节的“反思循环”代码理解状态和条件边第 2 周构建第一个 Agent用 LangGraph 构建一个“能调用工具、能自我反思”的智能体第 3 周多智能体系统实现“研究员 分析师 撰稿人”的协作系统推荐资源LangChain 官方文档LangGraph 官方文档LangGraph 免费课程LangSmith调试和观测工具