区块链 区块链技术 比特币公众号手机端

Deep Agents、LangChain、LangGraph选型指南:三层区别一次讲清

image.png

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 的职责是通过上下文工程,在正确的时间将正确的上下文提供给模型。Deep Agents 开箱即用,内置了一系列相关的最佳实践,包括:

  • 一个 filesystem,用于读写上下文(当你不想让它直接出现在 LLM 的上下文窗口中时)
  • Subagents,用于在不膨胀主上下文窗口的情况下完成专门的工作
  • Skills,以便你可以提供 agent 按需加载的指令和脚本
  • 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 路径,包含 citation-format、source-eval
    skills=["./skills/"],
)

LangChain 是 agent framework:抽象和集成层。它附带了一个极其简约的 agent harness。Deep Agents 附带的是围绕上下文管理的最佳实践,而 LangChain 的 agent 抽象则极其简约,且不预设任何立场。

核心 agent 抽象非常简单:一个 LLM,在循环中运行,调用工具。

这个循环极其简单,却非常强大。不过,有时你可能想要修改这个循环。这些修改通常是为了加入更具确定性的步骤——比如在上下文即将占满时做一次总结,或在最后运行一个验证器。LangChain agent 最强大的地方之一,正是它允许你修改循环的方式。LangChain middleware 提供了一组 hooks,可以以多种方式修改这个循环。

有意思的是: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:一个基于图的框架,用于自定义 agent 工作流,由持久化引擎提供支持,具备 human-in-the-loop、fault tolerance 以及每一步的可观测性。将 agent 视为图的好处之一是,你可以在其中编码更多确定性,并更精确地控制所发生的步骤。

LangGraph 为 LangChain 和 Deep Agents 中的 agent 抽象提供底层动力(如上所示,以图的形式呈现)。

何时选用哪一个

**经验法则
** 从 Deep Agents 开始。它是一个非常强大的 agent harness,包含了各种实用功能。当你需要对复杂工作流进行建模,或希望完全控制每一步时,请使用 LangChain 和 LangGraph。

Deep Agents

当你想要一个开箱即用的强大 agent 时,请使用 Deep Agents。这是大多数构建者应该开始的地方,只有在需要对 harness 本身进行更多控制时才下探。

假设你正在构建一个 GTM agent。它需要每个销售代表的 memory(包括电子邮件风格偏好和关系理解等)、用于重复性工作流(如 QBR 准备)的 skills,以及用于跨通话记录、新闻和 CRM 历史对账户进行深入研究的 subagents。

这不仅仅是一个玩具示例:我们在 deepagents 上构建了我们的 GTM agent!它目前承载着大量流量,每周近 10k 个请求,超过 150 个活跃用户。26% 的流量由用户发起,其余 74% 由后台的 agent 工作驱动。我们使用 LangSmith deployments 部署它,它同时支持突发流量和计划/事件触发的后台运行。

LangChain

当你需要核心构建模块,或计划在其之上组装自己的定制 harness 时,请使用 LangChain。LangChain 的集成和抽象在任何层级都很有用:在自定义图中、使用 create_agent、以及使用 create_deep_agent。当你希望对每一步到达模型的工具和上下文进行细粒度控制时,它也非常合适;对延迟极其敏感的应用通常就有这种需求。

假设你正在构建一个 RAG 文档问答机器人:给定一个问题,agent 在你的向量存储中搜索相关页面。Agent 循环负责判断是否已得到满意答案,并持续驱动机器人,直到查询完成。这类 agent 不需要借助 subagents 来委派任务,也不需要 filesystem 来管理上下文。LangChain 的集成让你可以将任何向量存储作为工具接入,并选择你想要的任何模型,而 create_agent 为你提供了将这些元素串联起来的循环。

LangGraph

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

假设你正在构建一个租赁申请处理管道。它有几个步骤:

  1. 从每份申请中提取收入、信用和租赁历史
  2. 根据房东的标准进行评分
  3. 自动批准明显合格者、拒绝明显不合格者,或将边界情况转给人工处理。

只有步骤 1 涉及 LLM,其余是固定代码。这个工作流利用 LLM 从文档中提取信息,但它不会给模型任何可用于采取行动的工具。这是一个相对确定性的管道。

已经在使用 LangGraph?如果价值在于图的结构及其确定性步骤,那就继续使用它。如果你的 LangGraph 流程是高度 agentic 的,迁移到 Deep Agents 可能会让你受益。

全部三层

这三者都是可组合的:将 create_agentcreate_deep_agent 放入更大的 LangGraph 工作流中,或者将自定义的 LangGraph 工作流作为 subagent 放入 create_agentcreate_deep_agent 中。

无论你使用哪个包进行构建,都可以使用 LangSmith deployments 部署,并使用 LangSmith observability 进行观测。

平衡确定性与自主性

更多的自主性给了 agent 更大的潜在价值,但代价是可靠性。对于敏感或预设的工作流,以及根本不需要 agentic 的重复性任务,确定性是更好的选择。Agent 越动态,它就越有能力、越有创造力。要了解更多生产环境中这些权衡的示例,请收听 Max Agency,这是我们关于团队如何设计、部署和迭代真实 agent 系统的播客。

这三个层次位于这一光谱上的不同位置。LangGraph 提供最大的确定性:它让你将领域知识直接编码到图的拓扑中,而不是把这个判断留给模型。LangChain 位于中间:核心 agent 循环本质上是不确定的,模型在每一步决定接下来发生什么。Deep Agents 提供最大的自主性:一个 agent 循环,由于内置总结和 subagents 等功能,可以运行更长时间并大规模扇出。

要与构建最佳 agent 的团队进行更深入的交流,请收听我们的播客 Max Agency

许多 agent 运行在核心 agent 循环之上,但仍需内置一些确定性步骤:审批步骤、合规检查,以及不应交由模型判断的业务规则。Middleware 为 Deep Agents 和 LangChain 解决了这个问题,让你可以围绕核心循环注入这些步骤和 human-in-the-loop 时刻。

如果你需要通过这些内置 hooks 获得比 middleware 提供的更多的灵活性或控制,LangGraph 就是逃生舱,让你构建一个完全自定义的图,将工作流的特定逻辑直接编码到图的结构中,比如上面的扇出与综合示例。

为什么是三层

LangChain 于 2022 年 10 月推出,是让 LLM 应用跑起来最快的方式。随着 agent 变得越来越复杂,人们需要比 chain 所能提供的更多控制,因此我们于 2024 年 1 月推出了 LangGraph:一个基于图的 runtime,将持久化执行、流式传输和 human-in-the-loop 作为一等原语内置其中。

随着模型变得更好,核心 agent 循环——一个负责规划、调用工具并对结果做出反应的模型——变得足够强大,可以标准化。create_agent 成为 LangChain 的极简 harness,我们将其构建在 LangGraph 之上,因为生产环境中的 agent 需要其原语(human-in-the-loop、可观测性、fault tolerance 等)。

随后在 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 的深思熟虑的评审!

  • 原文链接: langchain.com/blog/deep-...
  • 鸿途知科网 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
版权声明

本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门