30款热门AI模型一站整合DeepSeek/GLM/Claude 随心用限时 5 折。 点击领海量免费额度如果你刚开始接触 LangChain 生态看到 LangChain、LangGraph、Deep Agents 这三个名字是不是感觉它们像是一套组合拳但又分不清谁是谁更不知道从哪下手这种感觉我特别理解。几年前我第一次接触这个生态时也花了很长时间才理清它们之间的关系。很多人会告诉你LangChain 是框架LangGraph 是运行时Deep Agents 是工具链。但说实话这种定义对新手来说就像告诉你“汽车有发动机、底盘和车身”一样——每个词都认识但你还是不知道该怎么开。今天我们不谈抽象定义。我想用一个更贴近现实的视角帮你一次性理清这三者的关系、定位和实际用法。我会用一个贯穿全文的比喻把构建 AI 应用想象成组建一个项目团队。在这个团队里LangChain 是那个提供标准化办公用品和流程手册的“行政后勤部”LangGraph 是负责协调各部门工作流、确保项目按步骤推进的“项目经理”而 Deep Agents 则是一位配备了全套智能工具、能自主拆解复杂任务并协调“下属”的“高级专家”。下面我们就从这个比喻出发一步步拆解。1. 先搞明白我们到底在解决什么问题在深入任何一个技术栈之前我们必须先回答一个根本问题它究竟要解决什么痛点对于 LangChain 生态而言核心痛点只有一个如何让大语言模型LLM从“一个聪明的聊天伙伴”变成“一个能可靠完成复杂任务的智能体Agent”单独调用一次 LLM API 很简单但现实世界的任务往往是多步骤、有状态、需要调用外部工具如搜索、读写文件、执行代码的。比如“帮我分析这个项目目录下的代码找出潜在的安全漏洞并生成修复报告。”“监控这个日志文件发现异常模式时自动告警并尝试执行预设的恢复脚本。”“根据用户提供的需求文档自动生成 API 设计、数据库 Schema 和部分核心代码。”这类任务无法通过一次问答完成。你需要规划与拆解把大任务分解成可执行的小步骤。执行与工具调用在每一步中让 LLM 决定使用哪个工具或直接输出并处理结果。状态管理与流转记住之前的步骤、中间结果和上下文指导后续行动。容错与调度处理失败、循环、分支判断和并行任务。持久化与可观测记录完整的执行轨迹便于调试和复盘。这就是 LangChain 生态诞生的背景。它不是要替代 LLM而是要构建一套“操作系统”和“标准库”让 LLM 的能力能够被工程化地组织起来。1.1 核心挑战从“一次调用”到“一个工作流”一个常见的误解是认为 Agent 就是让 LLM 多调用几次工具。但真正的难点在于工作流Workflow的管理。想象一下如果没有专门的工作流引擎你需要自己写代码来维护一个全局状态字典记录每一步的输出。写一堆if-else或while循环来控制流程走向。手动处理工具调用的异常和重试。把每次 LLM 的输入输出拼接成新的 Prompt。当任务步骤超过10个时代码会变得难以维护和调试。LangChain 生态的价值就是把这些脏活、累活标准化、模块化让你能更专注于定义“做什么”业务逻辑而不是“怎么做”流程控制。2. 角色定位LangChain、LangGraph、Deep Agents 分别是谁现在我们回到开头的“项目团队”比喻来具体看看每个成员的角色。2.1 LangChain提供基础组件的“行政后勤部”如果把构建 AI 应用比作装修房子LangChain 就是那个提供所有标准建材砖块、水泥、管线和工具锤子、锯子的建材市场。它的核心职责是标准化和模块化。标准化接口无论底层是 OpenAI、Anthropic 还是本地模型你都可以用统一的ChatModel接口来调用。工具Tools、记忆Memory、检索器Retrievers也都遵循类似的模式。预制组件它提供了大量开箱即用的“乐高积木”比如连接网络搜索的Tool、处理长对话的ConversationBufferMemory、与向量数据库交互的Retriever。基础粘合剂它提供了Chain的概念可以把多个模块LLM 提示词 解析器 工具简单地串联起来形成一个小型流水线。但是LangChain 的Chain本质上是线性的、静态的。它擅长“先 A 后 B 再 C”的固定流程但对于需要根据中间结果动态决定下一步、或者需要循环、分支的复杂逻辑原生的Chain就显得力不从心。这时你就需要更强大的“工作流引擎”。打个比方LangChain 帮你准备好了所有员工的工位、电脑和标准化办公软件LLM、Tools、Memory。但它不负责规定市场部做完方案后是直接交给技术部还是需要先经过财务部评审。这个跨部门协作的流程需要更专业的角色来设计。2.2 LangGraph设计并驱动工作流的“项目经理”LangGraph 建立在 LangChain 之上它的核心是一个有状态、可循环、可分支的图Graph计算框架。你可以把它理解为一个专门为 AI 智能体设计的工作流引擎。它的核心抽象是“图”Graph。节点Nodes代表一个执行步骤可以是一个 LLM 调用、一个工具调用或者任何自定义函数。边Edges定义了节点之间的流转条件。通常基于上一步的输出来决定下一步走向哪里。状态State一个贯穿整个工作流的共享数据结构所有节点都可以读取和修改它。这是实现“记忆”和上下文传递的关键。通过 LangGraph你可以轻松描述出这样的流程开始 - 分析需求 - 判断是否需要搜索 - (是)调用搜索工具 - 整合信息 - 生成报告 - 结束 - (否) 直接生成报告 - 结束或者更复杂的、包含循环的流程比如一个代码修复 Agent分析错误 - 尝试修复 - 运行测试 - (测试失败) 回到分析错误。LangGraph 解决了“流程控制”的难题。它让你能用清晰的代码定义智能体的决策逻辑并且这个逻辑是可视、可调试、可持久化的。许多复杂的、开源的 AI Agent 项目其核心引擎都是基于 LangGraph 构建的。继续上面的比喻项目经理LangGraph拿到了行政部提供的资源LangChain 的组件然后他绘制了一张详细的“项目甘特图”Graph。这张图规定了每个任务Node的负责人、输入输出、以及任务之间的依赖关系和流转条件Edge。他会确保项目按照这个图来推进并跟踪整个项目的状态State。2.3 Deep Agents开箱即用的“高级专家团队”如果说 LangChain 和 LangGraph 给了你建造大楼的钢筋水泥和施工图纸那么 Deep Agents 就是一家提供“精装修交钥匙服务”的公司。Deep Agents 是一个建立在 LangChain 和 LangGraph 之上的“智能体套件”Agent Harness。它不是一个新框架而是一个高度集成、预设了最佳实践的上层应用框架。它的目标是让你用最少的代码快速构建一个功能强大、生产可用的复杂智能体。它内置了许多对于复杂任务至关重要的“企业级”能力虚拟文件系统与权限管理智能体可以安全地读写文件你还能通过规则精确控制它能访问哪些目录。子智能体Subagents与任务规划主智能体可以将复杂任务拆解派发给多个专用的子智能体并行执行最后汇总结果。这解决了单一智能体上下文长度不足和任务过载的问题。技能Skills与记忆Memory可以将领域知识如公司代码规范、API文档打包成“技能包”供智能体按需加载。记忆则让智能体能在多次对话中记住用户的偏好和项目的上下文。上下文管理与总结卸载自动处理长对话的上下文通过总结和卸载历史信息确保不超出模型的 Token 限制。人类介入Human-in-the-loop在关键操作如删除文件、调用昂贵API前暂停等待人工审核批准。代码执行沙箱提供安全的环境让智能体运行 Shell 命令或 JavaScript 代码。最关键的是这些能力都是“开箱即用”的。在 Deep Agents 中你几乎不需要自己从零开始组装 LangChain 组件和设计 LangGraph 工作流它已经为你配置好了一个功能完备的智能体“运行时环境”。比喻的最终章高级专家团队Deep Agents自带了一位明星专家核心智能体这位专家不仅精通业务还自带了一个管理工具箱文件系统、权限、一个可以随时召唤的专家顾问团子智能体、一个庞大的知识库技能与记忆以及一套标准的汇报和审批流程人类介入。你只需要把任务目标告诉他他就能带领整个团队把事情搞定。你不需要关心他是如何协调内部资源的因为他已经有了一套成熟高效的 SOP标准作业程序。3. 如何选择一张决策流程图理解了各自角色后面对一个新项目你该如何选择可以参考下面的决策流程graph TD A[开始我要构建一个AI应用] -- B{任务复杂度如何}; B -- 简单、线性任务 -- C[使用 LangChain]; C -- D[例如问答机器人、 简单文档总结、 单次工具调用]; B -- 复杂、多步骤、有状态任务 -- E{我希望控制到什么程度}; E -- 希望完全控制 从底层设计工作流 -- F[使用 LangGraph LangChain]; F -- G[例如自定义复杂业务逻辑、 研究性Agent、 对性能有极致要求]; E -- 希望快速搭建 复用成熟能力 -- H[使用 Deep Agents]; H -- I[例如企业级助手、 自动化运维Agent、 需要文件操作/子任务/权限管理的复杂应用];更具体的选型建议特性维度LangChainLangGraphDeep Agents核心定位基础组件库与粘合剂工作流/状态管理引擎开箱即用的智能体套件学习曲线中等需理解组件概念较高需理解图与状态机相对较低API 更简洁上手速度快对于简单链慢需要设计图结构非常快几行代码创建功能型Agent灵活性高可自由组合组件极高可定义任意复杂工作流中等遵循其内置架构但支持定制内置能力基础模型、工具、记忆等持久化、多线程、可观测性文件系统、子智能体、权限、技能、记忆、人类介入等适用场景快速原型、简单链、作为其他框架的底层复杂、定制化的工作流如游戏、模拟、研究型Agent需要快速实现复杂功能的业务应用如代码助手、数据分析Agent代码量中等多少一句话总结想学习原理、搭建玩具项目或简单链从 LangChain 开始。想深入研究 Agent 架构构建高度定制化、复杂的工作流深入使用 LangGraph。想快速开发一个功能全面、可直接投入使用的复杂智能体应用直接上 Deep Agents。4. 实战对比从“问天气”到“写周报”理论说再多不如看代码。我们通过一个场景的演进来看三者的代码差异。场景一个智能体先获取天气再根据天气情况生成一份心情描述。4.1 使用 LangChain基础链式from langchain_openai import ChatOpenAI from langchain.agents import create_tool_calling_agent, AgentExecutor from langchain.tools import tool from langchain_core.prompts import ChatPromptTemplate # 1. 定义工具 tool def get_weather(city: str) - str: 获取指定城市的天气。 # 模拟实现 return f{city}的天气是晴朗25度。 # 2. 创建模型和提示词 llm ChatOpenAI(modelgpt-4o-mini) tools [get_weather] prompt ChatPromptTemplate.from_messages([ (system, 你是一个助手。请使用工具来回答问题。), (human, {input}), ]) # 3. 创建Agent执行器 agent create_tool_calling_agent(llm, tools, prompt) agent_executor AgentExecutor(agentagent, toolstools, verboseTrue) # 4. 执行 result agent_executor.invoke({input: 旧金山天气怎么样然后根据天气说说心情。}) print(result[output])特点这是经典的 LangChain Agent 模式。它隐藏了“思考-行动”的循环但流程本质是线性的思考 - 可能调用工具 - 再思考 - 输出。对于需要严格顺序或复杂状态管理的任务需要自己用Chain或更底层的方式控制。4.2 使用 LangGraph自定义工作流from typing import TypedDict, Annotated import operator from langgraph.graph import StateGraph, END from langchain_openai import ChatOpenAI from langchain_core.messages import HumanMessage # 1. 定义状态结构 class AgentState(TypedDict): messages: Annotated[list, operator.add] # 消息历史 city: str # 城市 weather: str # 天气信息 mood_report: str # 心情报告 # 2. 定义节点函数 def call_llm(state: AgentState): 调用LLM分析是否需要获取天气。 llm ChatOpenAI(modelgpt-4o-mini) # 根据历史消息决定下一步 if not state.get(weather): # 第一次询问城市 response llm.invoke([HumanMessage(contentf用户想知道天气。请直接回复城市名。)]) return {city: response.content} else: # 已有天气生成报告 response llm.invoke([HumanMessage(contentf天气是{state[weather]}。生成一段心情描述。)]) return {mood_report: response.content} def fetch_weather(state: AgentState): 模拟获取天气。 city state[city] return {weather: f{city}的天气是晴朗25度。} # 3. 构建图 graph_builder StateGraph(AgentState) graph_builder.add_node(analyze_request, call_llm) graph_builder.add_node(get_weather, fetch_weather) graph_builder.add_node(generate_report, call_llm) # 复用LLM节点 # 4. 定义边流程逻辑 graph_builder.set_entry_point(analyze_request) # 从分析请求后如果还没有天气信息就去获取天气 graph_builder.add_conditional_edges( analyze_request, # 判断函数根据状态决定下一个节点 lambda state: get_weather if not state.get(weather) else generate_report, {get_weather: get_weather, generate_report: generate_report} ) graph_builder.add_edge(get_weather, generate_report) graph_builder.add_edge(generate_report, END) # 5. 编译并运行图 graph graph_builder.compile() initial_state {messages: [HumanMessage(content旧金山天气怎么样然后根据天气说说心情。)]} result graph.invoke(initial_state) print(result[mood_report])特点流程完全由你定义。你可以清晰地看到状态 (AgentState) 如何在不同节点 (Node) 间流转并通过条件边 (add_conditional_edges) 实现分支。这对于复杂逻辑非常强大但代码量也显著增加需要你细致地设计每个环节。4.3 使用 Deep Agents声明式创建from deepagents import create_deep_agent # 1. 定义工具和之前一样 def get_weather(city: str) - str: 获取指定城市的天气。 return f{city}的天气是晴朗25度。 # 2. 创建智能体一行代码整合了模型、工具、工作流引擎 agent create_deep_agent( modelopenai:gpt-4o-mini, # 指定模型 tools[get_weather], # 传入工具 system_prompt你是一个助手。请根据需要使用工具并完成用户请求。, ) # 3. 运行 result agent.invoke( {messages: [{role: user, content: 旧金山天气怎么样然后根据天气说说心情。}]} ) # result 是一个包含完整运行信息的对象输出在 result[messages][-1][content] print(result[messages][-1][content])特点代码极其简洁。你不需要关心 Agent 内部的思考循环LangChain 负责也不需要设计工作流图LangGraph 被封装在底层。create_deep_agent返回的已经是一个具备完整推理、工具调用、状态管理能力的智能体。对于“获取天气并生成报告”这种多步骤任务它会自动处理。但 Deep Agents 的真正威力在于处理更复杂的任务比如# 假设我们还有一个写文件的工具 def write_report(content: str, filename: str) - str: with open(filename, w) as f: f.write(content) return f报告已写入 {filename} agent create_deep_agent( modelopenai:gpt-4o-mini, tools[get_weather, write_report], system_prompt你是一个助手。可以获取天气并根据要求将总结写入文件。, # Deep Agents 高级功能设置文件系统权限只允许写入 /reports 目录 permissions[ {operations: [write], paths: [/reports/*], mode: allow}, {operations: [write], paths: [*], mode: deny} # 默认拒绝其他路径写入 ] ) # 现在你可以让 Agent 安全地执行“获取天气 - 分析 - 写入文件”的复杂流程了。在这个例子里你不仅获得了智能体还获得了安全的文件操作能力和权限控制而这些在 LangChain 或 LangGraph 中都需要大量额外代码来实现。5. 进阶理解Deep Agents 如何封装了复杂性Deep Agents 之所以能如此简洁是因为它在底层做了大量集成和默认配置。理解这些能帮你更好地使用它。5.1 内置的“中间件栈”当你调用create_deep_agent时它背后自动组装了一个包含多个中间件的执行栈。这个栈大致处理以下流程请求/响应标准化处理不同模型的输入输出格式。工具调用循环管理 LLM 的“思考-行动-观察”循环。上下文管理自动处理对话历史、技能和记忆的加载。子智能体调度管理task工具的调用创建独立的子任务执行环境。文件系统与权限挂载虚拟文件系统并执行权限检查。人类介入点在配置的工具调用前插入中断点。流式与可观测性生成结构化的事件流方便用 LangSmith 等工具调试。这意味着你用几行代码获得的是一个生产就绪的运行时环境。5.2 技能与记忆持久化知识的两种方式这是 Deep Agents 中非常实用的两个概念常被混淆记忆Memory通过AGENTS.md文件加载。它像是智能体的“长期人格和偏好设置”在智能体启动时就会被完整加载到上下文中。例如你可以在这里定义“本助手始终用中文回复代码风格遵循 PEP 8报告采用 Markdown 格式。”技能Skills通过包含SKILL.md的目录加载。它像是智能体的“技能手册库”采用按需加载渐进式披露。智能体启动时只知道这个技能的存在通过SKILL.md的元数据只有当任务需要时才会去读取技能的完整内容。这非常适合存放大量的 API 文档、公司规章制度等避免一次性撑爆上下文。5.3 子智能体应对复杂任务的“分治法”这是 Deep Agents 解决超长任务和复杂规划的核心。主智能体可以将一个任务拆分成多个子任务然后调用task工具创建子智能体去并行或串行执行。隔离性每个子智能体拥有全新的上下文独立运行解决了主智能体上下文被污染或耗尽的问题。专一性可以为子任务分配合适的模型和工具集比如让一个专用子智能体处理数学计算。效率多个子任务可以并行执行。使用子智能体本质上是在使用 LangGraph 的“图嵌套”能力但 Deep Agents 让你通过一个简单的task工具调用就能实现无需手动构建复杂的图。6. 从学习到生产一条清晰的路径基于以上的分析我为你规划一条从入门到精通再到生产应用的学习和实践路径阶段一理解基础1-2周核心目标理解 LLM 应用的基本范式Prompt、Chat、Completion和 LangChain 的核心抽象Model、Prompt、OutputParser、Chain、Agent。动手实践用 LangChain 连接 OpenAI API实现一个简单的问答。尝试添加一个自定义工具如计算器、搜索。使用ConversationBufferMemory让对话有记忆。关键收获明白“组件化”和“链式调用”的思想。阶段二掌握工作流2-3周核心目标理解“状态”和“工作流”的概念掌握 LangGraph 的基本用法。动手实践用 LangGraph 实现一个简单的、有分支的工作流例如根据用户问题类型路由到不同的处理节点。实现一个带循环的 Agent例如不断优化代码直到测试通过。将状态持久化实现跨会话的记忆。关键收获能够设计并实现非线性的、复杂的智能体逻辑。阶段三快速开发与深化1-2周核心目标利用 Deep Agents 快速构建功能复杂的应用并理解其底层机制。动手实践用create_deep_agent快速复现阶段一、二的功能。尝试 Deep Agents 的高级功能配置文件系统权限、创建一个使用子智能体的任务、为智能体添加自定义技能。使用 LangSmith 跟踪和调试 Deep Agents 的运行过程理解其内部事件流。关键收获认识到“开箱即用”的价值并能在需要时深入定制。阶段四工程化与生产部署核心目标关注性能、稳定性、成本和安全。核心工作可观测性全面使用 LangSmith 进行日志记录、追踪和评估。上下文优化合理使用 Deep Agents 的总结卸载、提示词缓存功能控制 Token 消耗。权限与安全严格配置文件系统、工具调用和网络访问的权限。充分利用“人类介入”功能审核高风险操作。子智能体策略设计合理的任务拆分策略平衡子智能体开销与执行效率。版本与测试对智能体的提示词、技能、配置进行版本管理并建立测试用例。7. 常见误区与避坑指南误区Deep Agents 是 LangChain 的替代品。纠正Deep Agents 是 LangChain 生态的上层应用框架。它内部重度依赖 LangChain 的组件和 LangGraph 的运行时。它们是互补关系而非竞争关系。误区学会了 LangChain 就会用 Deep Agents。部分正确理解 LangChain 有助于理解 Deep Agents 的底层原理。但 Deep Agents 有自己的一套 API 和概念如技能、记忆、子智能体。直接上手 Deep Agents 可能会觉得抽象建议先通过官方 Quickstart 跑通例子再回头理解概念。坑点不注意上下文消耗。建议即使 Deep Agents 有自动总结卸载对于超长对话或处理大量文档的任务要主动设计使用“技能”和“子智能体”来分割上下文。不要指望一个智能体处理无限长的内容。坑点忽视权限配置。建议只要涉及文件操作或代码执行务必配置permissions参数。从最严格的权限开始比如只允许读写特定临时目录再根据需求逐步放开。生产环境中结合沙箱使用。坑点过度依赖子智能体。建议创建子智能体有开销新的上下文、模型调用。对于简单、快速的任务优先让主智能体完成。子智能体更适合计算密集、逻辑独立或需要隔离上下文的“子项目”。最佳实践从 LangSmith 开始。强烈建议在开发任何 LangChain、LangGraph 或 Deep Agents 应用时第一时间集成 LangSmith。它能可视化整个调用链、工具使用、Token 消耗和状态变化是调试和优化不可或缺的利器。回到最初的问题LangChain、LangGraph、Deep Agents 还傻傻分不清吗希望现在你能清晰地看到它们是一个层层递进、各有侧重的技术栈。LangChain 提供了砖瓦LangGraph 提供了设计图纸和施工方法而 Deep Agents 则提供了一套精装样板间让你能拎包入住。对于大多数希望快速构建复杂、可靠 AI 应用的开发者来说Deep Agents 是目前最高效的起点。它封装了底层的复杂性让你能聚焦于业务逻辑。而当你需要突破其默认框架实现极其特殊的定制需求时你所学到的 LangChain 和 LangGraph 知识就是你深入底层进行改造的工具箱。技术的选择永远服务于你的目标。想清楚你要建的是一个小工具一座独特的地标建筑还是一个功能齐全的智能大厦答案自然就在其中。 30款热门AI模型一站整合DeepSeek/GLM/Claude 随心用限时 5 折。 点击领海量免费额度