LangChain、LangGraph与DeepAgent:AI应用开发三剑客的分层架构解析
30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度如果你正在学习或使用 LangChain 来构建 AI 应用面对 LangChain、LangGraph、DeepAgent 这三个名字是不是感觉有点懵它们都来自 LangChain 公司名字相似文档交织新手很容易一头雾水我到底该学哪个从哪个开始它们之间到底是什么关系很多人会误以为这是三个并列的框架或者 DeepAgent 是 LangGraph 的升级版。这种误解直接导致学习路径混乱要么在 LangChain 的庞大生态里迷失方向要么用错了工具把简单的任务搞复杂。实际上这三者的关系非常清晰它们分别对应着 AI 应用开发的三个不同层次基础组件、编排引擎、开箱即用的智能体。理解这个分层不仅能帮你快速定位学习目标更能让你在项目选型时做出正确决策。本文将用一个“三个打工人”的比喻配合一张核心架构图帮你彻底厘清 LangChain、LangGraph 和 DeepAgent 的定位、区别与联系。我们会从它们各自解决的核心问题出发通过实际代码示例让你不仅“知其然”更“知其所以然”最终能根据你的项目需求选择最合适的工具组合。1. 一张图看懂 LangChain 三件套定位与分工在深入细节之前我们先通过一张架构图来建立全局认知。这张图清晰地展示了三者在 AI 应用技术栈中的位置和协作关系[用户/业务系统] | v ------------------------------- | DeepAgent (智能体套件) | | - 开箱即用的高级智能体能力 | | - 内置任务规划、子智能体、文件系统 | | - 面向复杂、多步骤任务 | ------------------------------- | (构建于) v ------------------------------- | LangGraph (编排运行时) | | - 定义和控制工作流/状态机 | | - 支持循环、分支、持久化状态 | | - 提供 human-in-the-loop 等控制流| ------------------------------- | (使用) v ------------------------------- | LangChain (核心框架) | | - 基础构建块 (LLM, Tool, Retriever)| | - 连接器 (文档加载器、向量库集成) | | - 链 (Chain) 和智能体 (Agent) 模板| ------------------------------- | (调用) v ------------------------------- | 大模型 外部工具 数据 | | (OpenAI, Anthropic, 数据库, API等)| -------------------------------核心解读LangChain 是地基它提供了最基础的砖块比如与大模型对话的LLM类、调用外部函数的Tool类、处理文档的TextSplitter等。你想做任何事几乎都要从这里开始。LangGraph 是脚手架和图纸当你需要构建一个有多步骤、有状态、有循环或需要人工干预的复杂流程时LangGraph 提供了定义这个“图纸”图和确保其按步骤执行运行时的能力。它让 LangChain 的组件能按复杂逻辑动起来。DeepAgent 是精装修的样板间它基于 LangGraph 和 LangChain但已经把“智能体”这个复杂概念产品化了。你不需要从零开始设计图纸和搭脚手架它直接提供了一个功能强大、内置了任务规划、文件操作、子智能体等能力的“智能体套件”让你能快速构建复杂的 AI 应用。接下来我们用“三个打工人”的比喻让你对它们的角色有更生动的理解。2. “三个打工人”比喻LangChain、LangGraph、DeepAgent 各司其职想象你要开一家“AI任务处理公司”需要招聘三个岗位LangChain全能技术专员职责他是公司里的多面手精通和各种“供应商”大模型如 GPT、Claude打交道也知道怎么操作各种“专业设备”外部工具和 API如搜索引擎、数据库。他能完成一些标准化的简单任务比如“根据问题查资料并总结”这就是一个 RAG 链。特点技能全面但主要执行预设好的、线性的任务。如果任务变得复杂需要来回沟通、反复修改、并行处理他就会手忙脚乱因为他不擅长管理复杂的任务流和状态。LangGraph高级流程架构师职责他不直接处理具体任务而是设计任务执行的“流程图”和“规则手册”。当客户用户提出一个复杂需求如“分析这份财报生成摘要并对比行业数据给出投资建议”时他会画出流程图先让 A 专员一个 LLM 调用提取关键数据然后根据结果决定是走“生成摘要”分支还是“查询行业数据”分支最后再汇总。他确保每个步骤有序进行状态中间结果得以保存并在关键节点可以插入人工审核。特点专注于流程控制和状态管理。他让 LangChain 专员们能够协同工作处理非线性的、有状态的复杂任务。DeepAgent明星智能体经理职责他是一位高度自主、能力强大的经理。你只需要告诉他最终目标如“开发一个简单的网页应用”他就能自己拆解任务、规划步骤、调用下属子智能体或工具、读写项目文件、并在遇到不确定时向你请示。他自带一套成熟的管理体系任务规划、上下文管理、权限控制。特点开箱即用高度封装。他内部已经雇佣了 LangGraph 架构师来设计工作流并指挥着多个 LangChain 专员去执行具体操作。你不需要关心内部流程直接享受结果。简单总结你想快速做一个能调用天气 API 的聊天机器人找LangChain专员就够了。你想做一个能根据用户问题自动选择工具、并带有记忆功能的客服助手需要LangChain提供基础能力并由LangGraph架构师来设计这个带有循环和状态的工作流。你想做一个能自主分析代码仓库、编写新功能、并运行测试的 AI 程序员直接雇佣DeepAgent经理他会利用前两者的能力帮你搞定一切。3. LangChain构建 AI 应用的“基础工具箱”LangChain 是一个用于开发由大语言模型驱动的应用程序的框架。它的核心价值在于标准化和简化了与大模型交互、连接外部数据源和工具的复杂过程。3.1 核心概念与组件Schema 定义了与 LLM 交互的基本数据结构如AIMessage,HumanMessage,SystemMessage。这是对话的“通用语言”。Models 提供了与各种 LLM 提供商OpenAI, Anthropic, Google等交互的统一接口。你不用关心每个 API 的细节。Prompts 管理提示词模板支持变量注入使提示词管理更工程化。Indexes 用于加载、处理和检索外部文档数据是构建 RAG 系统的核心。Chains 将多个组件模型、提示词、工具等链接在一起形成一个序列化的处理流程。这是 LangChain 早期的主要抽象。Agents 让 LLM 具备使用工具Tools的能力并能根据情况自主决定调用哪个工具、以什么顺序调用。这是实现“智能”的关键。3.2 一个简单的 LangChain 示例RAG 问答下面我们用一个最简单的 RAG 示例展示 LangChain 如何作为“基础工具箱”工作。# 文件simple_rag.py # 安装pip install langchain langchain-openai chromadb tiktoken from langchain_openai import OpenAIEmbeddings, ChatOpenAI from langchain_community.document_loaders import TextLoader from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_chroma import Chroma from langchain.chains import RetrievalQA # 1. 加载文档 (LangChain 提供了多种加载器) loader TextLoader(./state_of_the_union.txt) documents loader.load() # 2. 分割文本 (LangChain 提供了多种分割器) text_splitter RecursiveCharacterTextSplitter(chunk_size1000, chunk_overlap200) texts text_splitter.split_documents(documents) # 3. 创建向量存储并嵌入 (LangChain 统一了接口) embeddings OpenAIEmbeddings() vectorstore Chroma.from_documents(documentstexts, embeddingembeddings) # 4. 创建检索器 retriever vectorstore.as_retriever() # 5. 创建 LLM llm ChatOpenAI(modelgpt-4o-mini, temperature0) # 6. 创建链 (Chain) - 这是 LangChain 的核心抽象之一 qa_chain RetrievalQA.from_chain_type( llmllm, chain_typestuff, retrieverretriever, return_source_documentsTrue ) # 7. 运行链 query 总统在国情咨文中提到了哪些关于人工智能的内容 result qa_chain.invoke({query: query}) print(f问题{query}) print(f答案{result[result]}) print(f来源文档数{len(result[source_documents])})代码解读这个例子中我们使用了 LangChain 提供的多个“基础构建块”文档加载器、文本分割器、向量存储集成、LLM 封装和链。我们通过RetrievalQA这个链将检索和生成两个步骤串联起来。整个过程是线性、预设好的加载 - 分割 - 嵌入 - 检索 - 生成。对于这类流程固定的任务LangChain 的Chain非常合适。LangChain 的局限性当你的任务需要根据中间结果动态决定下一步或者需要维护一个跨多轮对话的复杂状态时单纯的Chain就显得力不从心了。这时你就需要引入LangGraph来管理这个复杂的“工作流”。4. LangGraph为复杂工作流引入“状态”和“控制流”LangGraph 是建立在 LangChain 之上的一个库用于构建有状态的、多智能体的应用程序。它核心引入了“图”的概念其中节点是函数或工具调用边定义了工作流的走向。4.1 核心概念State 一个共享的状态对象在整个图执行过程中传递和修改。这是 LangGraph 与简单 Chain 最大的区别。Node 图中的一个节点通常是一个函数它读取和修改State。Edge 连接节点的边决定在某个节点执行后下一个该执行哪个节点。边可以是条件的conditional。Graph 由节点和边组成的完整工作流定义。4.2 为什么需要 LangGraph一个客服助手场景假设我们要构建一个客服助手规则如下用户提问。助手先尝试用知识库RAG回答。如果 RAG 返回的答案置信度低或者用户明确要求转人工则转移到人工坐席。人工坐席处理完后流程结束。这个流程包含条件判断置信度高低、用户指令和不同的终点。用传统的 LangChainChain很难优雅地实现。而用 LangGraph 则非常自然。4.3 LangGraph 示例带人工兜底的客服助手# 文件customer_support_graph.py # 安装pip install langgraph langchain-openai from typing import Literal from langgraph.graph import StateGraph, END from langchain_openai import ChatOpenAI from langchain_core.messages import HumanMessage, AIMessage from pydantic import BaseModel, Field import asyncio # 1. 定义状态结构 (State) class AgentState(BaseModel): messages: list Field(default_factorylist) 对话历史消息 needs_human: bool False 是否需要人工介入 final_answer: str 最终给用户的答案 # 2. 定义节点函数 def call_llm_for_rag(state: AgentState): 模拟 RAG 调用 LLM 生成答案 print([节点] 调用 RAG LLM...) # 这里简化处理实际应接入真实的 RAG 系统 llm ChatOpenAI(modelgpt-4o-mini) # 模拟一个有时自信有时不自信的答案 mock_confidence 0.7 # 模拟置信度 if mock_confidence 0.8: ai_response 根据知识库您的问题的答案是XXXX。这个信息非常可靠。 state.needs_human False else: ai_response 我找到了一些相关信息YYYY但我不完全确定这是否准确。 state.needs_human True # 置信度低需要人工 state.messages.append(AIMessage(contentai_response)) state.final_answer ai_response return state def transfer_to_human(state: AgentState): 转人工坐席处理 print([节点] 转接至人工坐席...) # 模拟人工处理 human_response 人工坐席您好我是客服小李。您的问题比较复杂我已记录并会尽快为您核实处理。 state.messages.append(AIMessage(contenthuman_response)) state.final_answer human_response state.needs_human False # 人工处理完毕 return state def route_after_rag(state: AgentState): 路由函数根据状态决定下一步 if state.needs_human: print([路由] 决定转人工。) return human_agent else: print([路由] RAG 答案已足够结束。) return END # 3. 构建图 workflow StateGraph(AgentState) # 添加节点 workflow.add_node(rag_agent, call_llm_for_rag) workflow.add_node(human_agent, transfer_to_human) # 设置入口点 workflow.set_entry_point(rag_agent) # 设置条件边 workflow.add_conditional_edges( rag_agent, route_after_rag, { human_agent: human_agent, END: END } ) workflow.add_edge(human_agent, END) # 编译图 app workflow.compile() # 4. 运行图 async def main(): # 初始化状态 initial_state AgentState(messages[HumanMessage(content我的订单号是 12345为什么还没发货)]) # 执行图 print(开始执行客服工作流...) final_state await app.ainvoke(initial_state) print(\n 工作流执行结束 ) print(f最终答案{final_state[final_answer]}) print(f完整消息记录{final_state[messages]}) if __name__ __main__: asyncio.run(main())代码解读我们定义了AgentState来跟踪整个对话的状态消息历史、是否需要人工、最终答案。我们创建了两个节点rag_agent处理 RAG 问答和human_agent人工处理。关键在add_conditional_edges。在rag_agent节点执行后会调用route_after_rag函数。这个函数检查state.needs_human这个状态变量动态决定下一步是去human_agent节点还是直接结束 (END)。图编译后我们只需要传入初始状态并调用ainvokeLangGraph 运行时会负责按照图定义执行节点、管理状态流转。LangGraph 的核心价值它将工作流显式地定义为一个图使得复杂的、带状态和分支的逻辑变得清晰、可维护、可调试。它是构建复杂 Agent 的底层引擎。5. DeepAgent开箱即用的“智能体套件”DeepAgent 是 LangChain 公司推出的一个更高层次的抽象官方称之为 “Agent Harness”智能体套具。它基于 LangGraph 运行时并内置了大量生产级智能体所需的能力让你能像调用一个高级 API 一样快速创建一个功能强大的智能体。5.1 DeepAgent 的核心内置能力根据官方文档DeepAgent 主要提供了以下开箱即用的能力执行环境 虚拟文件系统、代码执行沙箱、工具调用。上下文管理 技能Skills按需加载、记忆Memory持久化、历史总结与上下文卸载、提示词缓存节省成本。任务委派 内置任务规划工具 (write_todos)、子智能体Subagents生成用于并行处理复杂任务。流程控制 人工介入Human-in-the-loop、文件系统权限控制。简单说DeepAgent 把用 LangGraph 手动搭建一个复杂智能体时需要的通用模块都提前实现并打包好了。5.2 DeepAgent 快速上手示例下面我们使用 DeepAgent 快速创建一个具备文件读写和任务规划能力的智能体。# 安装 DeepAgent 及对应模型集成包 pip install -qU deepagents langchain-openai# 文件deepagent_quickstart.py from deepagents import create_deep_agent import os # 1. 定义一个简单的工具获取天气模拟 def get_weather(city: str) - str: Get weather for a given city. # 这里模拟 API 调用 weather_data { 北京: 晴15°C, 上海: 多云18°C, 深圳: 阵雨22°C } return f{city}的天气是{weather_data.get(city, 未知)} # 2. 创建 DeepAgent # 它自动集成了文件系统、任务规划等中间件 agent create_deep_agent( modelopenai:gpt-4o-mini, # 使用 OpenAI 模型 tools[get_weather], # 传入自定义工具 system_prompt你是一个有用的助手可以查询天气并能使用文件系统。, # 可以设置文件系统权限例如只允许读写 /workspace 目录 permissions[ {operations: [read, write], paths: [/workspace/*], mode: allow}, {operations: [read, write], paths: [*], mode: deny} # 默认拒绝其他路径 ] ) # 3. 运行智能体 print( 场景1简单工具调用 ) result agent.invoke( {messages: [{role: user, content: 北京和上海的天气怎么样}]} ) print(f智能体回复{result[messages][-1][content]}) print(\n 场景2利用内置文件系统工具 ) # DeepAgent 内置了 ls, read_file, write_file 等工具 result agent.invoke( {messages: [{role: user, content: 请你在 /workspace 目录下创建一个名为 hello.txt 的文件内容写上 Hello from DeepAgent。}]} ) print(f智能体回复{result[messages][-1][content]}) # 我们可以检查文件是否真的被创建了这取决于配置的后端默认可能在内存中 print(\n 场景3使用内置任务规划工具 (write_todos) ) result agent.invoke( {messages: [{role: user, content: 我需要完成一个项目报告请帮我规划一下任务。}]} ) print(f智能体回复{result[messages][-1][content]}) # 注意智能体内部可能会调用 write_todos 工具来规划任务但输出是文本形式。代码解读我们只用了一个create_deep_agent函数就创建了一个智能体。这个智能体自动具备了文件系统操作、任务规划等能力我们不需要自己用 LangGraph 去构建这些逻辑。我们通过permissions参数轻松定义了智能体对文件系统的访问权限这是生产环境非常重要的安全特性。智能体可以无缝地结合我们自定义的get_weather工具和其内置的工具如文件操作来完成任务。5.3 DeepAgent 的核心优势子智能体 (Subagents)子智能体是 DeepAgent 的杀手锏。主智能体可以将复杂任务拆解并创建独立的子智能体去并行执行。# 文件deepagent_subagent.py from deepagents import create_deep_agent # 创建一个支持子智能体的 DeepAgent agent_with_subagents create_deep_agent( modelopenai:gpt-4o-mini, system_prompt你是项目经理擅长将大任务拆解并分配给专家子智能体。, # 默认启用子智能体功能 ) # 一个需要多步骤、多专家知识的任务 complex_task 我们需要分析一个开源项目。请完成以下工作 1. 调研项目的主要功能和技术栈。 2. 评估其代码质量和活跃度。 3. 给出是否适合我们团队采用的建议。 请将任务拆解并让合适的子智能体去执行。 print(执行复杂分析任务...) result agent_with_subagents.invoke( {messages: [{role: user, content: complex_task}]} ) # 输出最终结果 final_message result[messages][-1] print(f\n项目经理主智能体的最终报告) print(final_message[content]) # 注意在实际执行中主智能体会调用内置的 task 工具来创建子智能体。 # 子智能体的执行过程、中间结果会被管理最终只将汇总结果返回给主智能体。 # 这极大地节省了主智能体的上下文窗口并允许并行处理。DeepAgent 子智能体的价值它自动处理了任务拆解、上下文隔离、结果汇总的复杂性。作为开发者你几乎无需关心底层 LangGraph 是如何编排这些子流程的。6. 对比总结与选型指南现在让我们将三者放在一起对比并给出清晰的选型建议。特性LangChainLangGraphDeepAgent定位基础框架AI 应用的“乐高积木”编排运行时复杂工作流的“流程图”和“引擎”智能体套件开箱即用的“高级智能体”核心抽象Chain, Agent, Tool, Retriever, MemoryGraph, State, Node, EdgeDeep Agent (内置规划、文件、子智能体)状态管理较弱通常依赖外部存储或简单内存强内置可持久化的 State 对象强基于 LangGraph并封装了更高级的上下文管理控制流线性或简单路由强大支持条件分支、循环、并行、人工干预内置通过子智能体和任务规划实现复杂控制流上手难度中等需要理解其众多概念和组件较高需要理解图、状态机等概念较低高级 API关注点在于配置而非构建灵活性极高可以组合出任意形态的应用高可以定义任意复杂的工作流中在预设的“套件”能力内非常灵活超出则需要定制适用场景简单的 RAG、工具调用、聊天机器人复杂的多步骤 Agent、有状态的对话系统、业务流程自动化需要快速构建具备规划、文件操作、子任务分解等能力的复杂智能体应用代码量中等较多少6.1 如何选择根据你的需求和阶段可以遵循以下路径初学者 / 快速验证想法从 LangChain 开始。学习LLM、PromptTemplate、Chain和Agent的基本概念。用它来构建你的第一个 RAG 应用或工具调用机器人。当你的 Chain 或 Agent 逻辑变得复杂难以用线性代码管理时考虑学习 LangGraph。构建复杂的、有状态的 AI 应用直接使用 LangGraph。你需要精细控制工作流的每一个步骤、状态如何流转、在哪里加入人工审核。例如构建一个复杂的客服系统、游戏 NPC、或自动化工作流。如果你发现你在 LangGraph 中反复实现类似的功能如文件操作、任务拆解那么你正在重复造 DeepAgent 的轮子。追求开发效率构建生产级复杂智能体直接使用 DeepAgent。当你需要智能体具备任务规划、文件系统交互、安全权限控制、子智能体等高级能力时DeepAgent 能极大提升开发效率。在 DeepAgent 能力无法满足的极端定制化场景下再回退到 LangGraph 进行底层定制。一个简单的决策流我的任务是否需要复杂的条件判断、循环或状态维护 ├── 否使用 LangChain (Chain/Agent) 即可。 └── 是我是否需要文件操作、任务规划、子智能体等开箱即用的高级功能 ├── 是使用 DeepAgent。 └── 否我需要完全自定义控制流 - 使用 LangGraph。7. 常见问题与误区澄清7.1 LangChain 被淘汰了吗没有。LangChain 仍然是生态的基石。LangGraph 和 DeepAgent 都构建在 LangChain 的核心组件之上如 Models, Tools, Messages。学习 LangChain 的基础概念是理解后两者的前提。7.2 必须按顺序学 LangChain - LangGraph - DeepAgent 吗不一定但建议有基础了解。你可以直接使用 DeepAgent 的高级 API 来快速构建应用这不需要你精通 LangGraph 的每个细节。但当你需要深度定制或排查问题时对 LangChain 基础如 Tool 定义和 LangGraph 概念如 State的理解会非常有帮助。7.3 DeepAgent 是 LangGraph 的替代品吗不是替代是封装和增强。DeepAgent 是一个“智能体套件”它内部使用 LangGraph 作为其运行时引擎并预先集成了许多通用模块。你可以把 DeepAgent 看作是用 LangGraph 构建的一个“最佳实践”框架或产品。7.4 在实际项目中如何混合使用一个典型的混合架构可能是用LangChain来定义与特定第三方服务交互的Tool。用LangGraph来编排一个核心的、定制化程度高的业务工作流。用DeepAgent来快速实现项目中需要“自主任务分解”功能的某个模块比如一个自动代码分析模块。 它们可以在同一个项目中和谐共存。8. 总结与最佳实践LangChain、LangGraph、DeepAgent 构成了一个从基础到高级、从灵活到高效的完整技术栈。理解它们的关系能让你在 AI 应用开发中做出更明智的技术选型。最佳实践建议明确需求在开始编码前先画一下你的应用流程图。是简单的问答还是多步骤决策是否需要记忆和状态渐进式采用从一个简单的 LangChain Chain 开始原型。当逻辑复杂到难以维护时再考虑引入 LangGraph 重构。善用 DeepAgent 加速开发对于常见的复杂智能体需求规划、文件操作、子任务首先评估 DeepAgent 是否能满足这可以节省大量开发时间。关注抽象泄漏即使使用 DeepAgent也建议了解其底层基于 LangGraph 和 LangChain 的原理。这有助于你更好地调试和进行高级配置。利用好官方文档和 LangSmithLangChain 生态的文档非常详细。对于生产环境务必使用 LangSmith 进行跟踪、调试和评估它是提升智能体可靠性的关键工具。希望这篇用“一张图”和“三个打工人”的解读能帮你彻底理清 LangChain 家族这三剑客的关系。下次当你再看到它们时你将能清晰地知道在你的 AI 应用蓝图里各自应该摆在什么位置。 30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度