返回博客列表

Deep Agents vs LangChain vs LangGraph:三层 Agent 技术栈怎么选

2026-10-11T15:30:00+08:00
Deep AgentsLangChainLangGraphAI AgentHarness翻译

Deep Agents vs LangChain vs LangGraph:三层 Agent 技术栈怎么选

译者按:本文翻译自 LangChain 官方博客 Deep Agents vs LangChain vs LangGraph(作者 Sydney Runkle,2026 年 8 月 6 日发布)。为符合中文技术阅读习惯,harness、runtime、framework、middleware、context engineering 等术语保留英文原文。

核心要点

  • 三层各司其职:LangGraph 是 agent runtime,LangChain 是 agent framework,Deep Agents 是 agent harness。runtime 控制力最强、抽象最少;harness 恰好相反。
  • 三者可自由组合,不是三选一——你可以随时在层与层之间上下移动。
  • 经验法则:先上 Deep Agents;需要建模复杂工作流、或想完全掌控每一步时,再用 LangChain 和 LangGraph。

Deep Agents、LangChain和 LangGraph各自提供了不同的构建 agent 的方式。本文讲清我们这套开源框架之间的关键区别,以及各自该在什么时候登场。

Deep Agents、LangChain、LangGraph 是我们开源 agent 技术栈的三层,它们建立在同一个理念上:构建者应当能掌控 agent 的每一部分——自己选的模型、它看到的上下文、以及运行它的 harness。

每一层扮演不同角色,提供不同程度的控制力。LangGraph 是 agent runtime,LangChain 是 agent framework,Deep Agents 是 agent harness。runtime 提供最大的控制权和最少的抽象;harness 则相反。三者完全可组合,所以你可以在层与层之间移动,而不是只能挑一个。

每一层提供什么

Deep Agents 是一个开箱即用的 agent harness。agent harness 的职责,是通过 context engineering,在正确的时间把正确的上下文送到模型面前。Deep Agents 为此内置了一整套最佳实践,包括:

  • 一个文件系统,用来读写上下文(当你不想让它直接占着 LLM 的上下文窗口时)
  • Subagents,用来做专门的工作,又不撑爆主上下文窗口
  • Skills,让你能提供可按需加载的指令和脚本
  • Memory,让 agent 能跨多次运行学习、变强

它默认还带了很多其他部件。这些都是有主见的上下文管理最佳实践,我们的团队会持续审阅、不断更新。用 Deep Agents 的一个好处是:你可以信任我们持续扫视整个领域,把最佳实践带进来。

上手很简单,用 create_deep_agent即可:

from deepagents import create_deep_agent

agent = create_deep_agent(
    model="anthropic:claude-sonnet-5",
    tools=[web_search],
    system_prompt="you are a research agent...",
    # 带引用格式、来源评估的 skills 路径
    skills=["./skills/"],
)

LangChain 是 agent framework:抽象与集成层。它自带一个极为精简的 agent harness。Deep Agents 附带了围绕上下文管理的最佳实践,而 LangChain 的 agent 抽象则极其精简、不做预设。

核心 agent 抽象很简单:一个 LLM,跑在循环里,调用工具。

LangChain 核心 agent 循环:LLM 在循环中调用工具

这个循环简单到极致,却又极其强大。不过,有些时候你会想改这个循环。这些修改通常是为了加入更多确定性步骤——比如上下文快满时做摘要,或者在结尾跑一个验证器。LangChain 的 agent 最强大的部分之一,就是我们让你加这些修改的方式:LangChain middleware提供了一组 hook,能以各种方式改造这个循环。

middleware 提供的 hook 可以改造 agent 循环

冷知识:Deep Agents 其实就是 LangChain 核心 agent 加一堆 middleware!

你可以用 create_agent这个简洁的抽象来使用 LangChain agent:

from langchain.agents import create_agent

agent = create_agent(
    model="anthropic:claude-sonnet-5",
    tools=[send_email],
    prompt="you are my email assistant...",
    middleware=[...]
)

LangGraph 是 agent runtime:一个基于 graph 的框架,用来构建自定义 agent 工作流,背后是一台持久化引擎,把 human-in-the-loop、容错和每一步的可观测性都作为一等公民。把 agent 看成 graph 的一个好处是,你能把更多确定性编码进去,更精确地控制发生的每一步。

LangChain 和 Deep Agents 里的 agent 抽象(就是上面那些,画成 graph 的样子)都由 LangGraph 驱动。

什么时候该用哪一层

经验法则:从 Deep Agents 开始。它是一个功能齐全、相当强大的 agent harness。当你需要建模复杂工作流,或者想完全掌控每一步时,再去用 LangChain 和 LangGraph。

Deep Agents

当你想开箱得到一个能力强的 agent 时,用 Deep Agents。这是大多数构建者应该起步的地方,只有当你要对 harness 本身有更多控制时,才往下沉。

假设你要做一个 GTM agent。它需要按销售代表区分的记忆(比如邮件风格偏好、对客户关系的理解),需要处理 QBR 准备之类重复工作流的 skills,还需要 subagents 去跨通话记录、新闻和 CRM 历史,对一个 account 做深度调研。

这不只是玩具例子:我们的 GTM agent就是基于 deepagents 造的!它目前流量很高,每周近 1 万次请求,150+ 活跃用户。其中 26% 的流量由用户发起,剩下 74% 来自环境(ambient)agent 工作。我们用 LangSmith deployments部署它,既能扛住突发流量,又能跑定时/事件触发的 ambient run。

LangChain

当你想要核心积木,或者计划在它之上组装自己的定制 harness 时,用 LangChain。LangChain 的集成与抽象在任何层级都有用:自定义 graph 里、create_agent 里、create_deep_agent 里。它同样适合你想对"每一步哪些工具和上下文到达模型"做细粒度控制的场景——对延迟极度敏感的应用往往需要这个。

假设你要做一个 RAG 文档问答 bot:给定一个问题,agent 在你的向量库里搜索相关页面。agent 循环负责判断是否已经得到满意答案,并驱动 bot 直到查询完成。这类 agent 不需要通过 subagents 做任务委派,也不需要文件系统做上下文管理。LangChain 的集成让你能把任意向量库当工具接进去、挑任意模型,而 create_agent 给你把它们串起来的循环。

LangGraph

当你的 agent 不适合标准的循环,或者需要在同一个工作流里混合确定性与 agentic 步骤时,用 LangGraph。

假设你要做一条租房申请处理流水线,它有几个步骤:

  1. 从每份申请里抽取收入、信用和租房历史
  2. 按房东的标准打分
  3. 明显合格就自动批准,明显不合格就拒绝,边界情况升级给人工

租房申请处理流水线:只有第一步接触 LLM,其余是固定代码

只有第 1 步用到了 LLM,其余都是固定代码。这个工作流用上了 LLM 从文档中抽取信息的能力,但不给模型任何可以采取行动的工具。它是一条相对确定性的流水线。

已经用上 LangGraph 了?如果价值在于 graph 的形状和它的确定性步骤,就留在 LangGraph。如果你的 LangGraph 流程高度 agentic,迁移到 Deep Agents 可能会让你受益。

三者结合

三者是可组合的:把 create_agent 或 create_deep_agent 放进一个更大的 LangGraph 工作流里,或者把一个自定义 LangGraph 工作流当成 subagent 放进 create_agent 或 create_deep_agent。

无论你用哪个包构建,都能用 LangSmith deployments部署,用 LangSmith observability观测。

在确定性与自主性之间权衡

自主性越高,agent 的潜在价值越大,代价是可靠性下降。对敏感的、预设的工作流,以及根本不需要 agentic 的重复性任务,确定性是更好的选择。而 agent 越动态,就越有能力、越有创造力。想看更多这类权衡在生产中的例子,可以听 Max Agency——我们关于团队如何设计、部署、迭代真实 agent 系统的播客。

三层处在这条光谱的不同位置。LangGraph 提供最大的确定性:它让你把领域知识直接编码进 graph 的拓扑结构,而不是把这个判断留给模型。LangChain 居中:核心 agent 循环本身是非确定性的,每一步都由模型决定接下来发生什么。Deep Agents 提供最大的自主性:借助摘要、subagents 这些内置特性,它的 agent 循环能跑得更久、更大规模地扇出。

确定性 vs 自主性:三层在光谱上的位置

想和打造顶尖 agent 的团队深入交流,听我们的播客 Max Agency。

很多 agent 跑在核心 agent 循环上,但仍需要内置几个确定性步骤:一个审批步骤、一道合规检查、一条不该交给模型的业务规则。middleware 为 Deep Agents 和 LangChain 解决了这个问题,让你能在核心循环周围注入这些步骤和 human-in-the-loop 时刻。

如果你需要的灵活性或控制力超出了 middleware 通过这些内置 hook 能提供的范围,LangGraph 就是那条逃生通道:它让你构建一个完全自定义的 graph,把工作流的特定逻辑直接编码进它的形状里,就像上面那个扇出再汇总的例子。

为什么会有三层

LangChain 于 2022 年 10 月发布,是当时让 LLM 应用跑起来最快的方式。随着 agent 越来越复杂,人们需要的控制力超出了 chain 能提供的,于是我们在 2024 年 1 月推出了 LangGraph:一个基于 graph 的 runtime,把持久化执行、流式输出和 human-in-the-loop 作为一等 primitives 内置。

随着模型变强,核心 agent 循环——一个能规划、调用工具、对结果做出反应的模型——强大到足以被标准化。create_agent 成了 LangChain 的最小 harness,我们把它建在 LangGraph 之上,因为生产级 agent 需要它的那些 primitives(human-in-the-loop、可观测性、容错等)。

然后在 2025 年 7 月,我们又往前走了一层,推出 Deep Agents——建在同一个核心循环上,但把前面提到的那些组件(上下文管理、subagents 等)默认打包进去。受 Claude Code 和 Manus 启发,我们押注构建者想要同等能力、又能用于自己场景的 agent,于是把 deepagents 做成了一个通用 harness。

TL;DR

如果你在建或改造一个 agent,从 Deep Agents 的 create_deep_agent开始——我们内部所有 agent(GTM、编程、文档写作等)都用它。

当你想要更少的内置上下文管理、对 agent 循环更细粒度的控制时,改用 LangChain 的 create_agent。

当你在自定义工作流里需要更多控制或确定性时,用 LangGraph。

致谢

感谢 Harrison Chase、Hunter Lovell、Morgan Curtis和 Sean Roche的细致审阅。

参考文档与链接

你现在用的是哪一层?有没有该下沉到 LangGraph、却还硬扛在高层的情况?评论区聊聊。觉得有用的话,点个赞让更多人看到。


作者: itech001
来源: 公众号:AI人工智能时代(the-ai-era)
网站: https://www.theaiera.top/ 关注每日最新AI新闻和技术博客,主页有更多的文章的AI 技术参考:https://www.theaiera.top

本文首发于 AI人工智能时代,转载请注明出处。

分享给朋友