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

Deep Agents、LangChain与LangGraph选型指南

图像

Deep Agents、LangChain 和 LangGraph 各自提供了构建 Agent 的不同方法。在本文中,我们将介绍这三个开源框架之间的主要区别,以及你何时应该选用哪一个。

Deep Agents、LangChain 和 LangGraph 是我们开源 Agent 技术栈的三层,它们建立在同一个理念之上:构建者应该能够掌控 Agent 的每一个部分:他们选择的模型、Agent 看到的上下文,以及驱动 Agent 的运行框架。

每一层扮演不同的角色,提供不同程度的控制力。LangGraph 是 Agent 运行时,LangChain 是 Agent 框架,Deep Agents 是 Agent 运行框架。运行时提供最大程度的控制和最少的抽象;运行框架则恰恰相反。三者完全可组合,因此你可以在各层之间切换,而不必只选其一。

每一层提供什么

Deep Agents

Deep Agents 是一个开箱即用的 Agent 运行框架:Agent 运行框架的职责,是通过上下文工程在正确的时间把正确的上下文交给模型。Deep Agents 开箱即用,内置了大量相关的最佳实践,包括:

  • 一个文件系统,用于读写上下文(当你不想把上下文直接放进 LLM 的上下文窗口时)
  • 子 Agent,适合完成专门的工作,而不会让主上下文窗口膨胀
  • 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

LangChain 是 Agent 框架,也就是抽象与集成层。它自带极简的 Agent 运行框架。Deep Agents 提供的是围绕上下文管理的最佳实践,而 LangChain 的 Agent 抽象则极其精简,不做任何预设。

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

图像

这个循环极其简单,却又非常强大。不过,有时你可能想要修改这个循环。这些修改通常是为了加入更多确定性步骤——比如在上下文接近满载时进行摘要,或在最后运行一个验证器。LangChain Agent 最强大的部分之一,就在于我们让你添加这些修改的方式。LangChain 中间件提供了一组 Hook,能够以多种方式修改这个循环。

图像

🧠 有趣的事实!

Deep Agents 实际上就是核心的 LangChain Agent 加上一堆中间件!

你可以通过简单的 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

LangGraph 是 Agent 运行时:一个基于图的框架,用于自定义 Agent 工作流,由持久化引擎支撑,并支持人在回路、容错,以及每一步的可观测性。把 Agent 视为图的一个好处是,你可以将更多的确定性编码进去,并更精细地控制发生的步骤。

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

何时选用哪一个

经验法则

从 Deep Agents 开始。它是一个非常强大的 Agent 运行框架,各种功能一应俱全。当你需要为复杂的工作流建模,或者想完全控制每一步时,再选用 LangChain 和 LangGraph。

Deep Agents

当你想要一个开箱即用的强大 Agent 时,选择 Deep Agents。大多数构建者应该从这里开始,只有当你需要对运行框架本身有更多控制时,才向下切换。

假设你在构建一个 GTM Agent。它需要每个销售代表各自的 Memory(例如邮件风格偏好和关系理解)、用于 QBR 准备等重复性工作流的 Skills,以及能够跨通话记录、新闻和 CRM 历史对某个客户进行深入研究的子 Agent。

这不仅仅是一个玩具示例:我们就是用 deepagents 构建了自己的 GTM Agent!它目前的流量很高:每周将近 1 万次请求,活跃用户超过 150 人。其中 26% 的流量由用户主动发起,其余 74% 由后台持续运行的 Agent 工作驱动。我们使用 LangSmith deployments 部署它,该服务同时支持突发流量和定时/事件触发的后台运行。

LangChain

当你想要核心构建模块,和/或计划在其之上组装自己的定制运行框架时,选择 LangChain。LangChain 的集成和抽象在任何层级都很有用:无论是在自定义图、create_agent 还是 create_deep_agent 中,都能派上用场。当你希望精细控制每一步中有哪些工具和上下文到达模型时,它也非常合适——延迟极度敏感的应用通常需要这种控制。

假设你在构建一个 RAG 文档问答机器人:给定一个问题,Agent 会在你的向量数据库中搜索相关页面。Agent 循环负责判断是否已得到满意的答案,并驱动机器人直到查询完成。这种类型的 Agent 不需要通过子 Agent 来委派任务,也不需要利用文件系统进行上下文管理。LangChain 的集成让你可以把任何向量数据库作为工具接入,并选择你想要的任何模型,create_agent 则提供了将它们串联起来的循环。

LangGraph

当你的 Agent 不适合标准循环,或者你需要在同一工作流中混合确定性和自主步骤时,选择 LangGraph。

假设你在构建一个租赁申请处理流水线。它包含几个步骤:

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

图像

只有步骤 1 涉及 LLM,其余都是固定代码。这个工作流利用 LLM 的能力从文档中提取信息,但不会向模型提供任何可以采取行动的工具。这是一条相对确定性的流水线。

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

三者皆可

三者都是可组合的:你可以将 create_agent 或 create_deep_agent 嵌入更大的 LangGraph 工作流中,也可以将自定义的 LangGraph 工作流作为子 Agent 嵌入 create_agent 或 create_deep_agent 中。

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

在确定性与自主性之间取得平衡

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

这三层处于这条光谱的不同位置。LangGraph 提供最大的确定性:它让你把领域知识直接编码到图的拓扑结构中,而不是让模型来做这种判断。LangChain 居于中间:核心 Agent 循环本质上是非确定性的,每一步都由模型决定接下来会发生什么。Deep Agents 提供最大的自主性:得益于摘要和子 Agent 等内置功能,它的 Agent 循环可以运行更长时间,并能够大规模展开。

图像

想与构建最佳 Agent 的团队进行更深入的对话,请收听我们的播客 Max Agency。

许多 Agent 运行在核心 Agent 循环之上,但仍然需要内置一些确定性步骤:审批步骤、合规检查,以及不应交由模型处理的业务规则。中间件为 Deep Agents 和 LangChain 解决了这个问题,让你可以围绕核心循环注入这些步骤和人在回路的环节。

如果你需要的灵活性或控制力超出了中间件通过内置 Hook 所提供的范围,LangGraph 就是那个逃生舱:你可以构建完全自定义的图,将工作流的特定逻辑直接编码进图的结构中,就像上面的扇出-汇总示例那样。

为什么是三层

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

随着模型变得更好,核心 Agent 循环——一个能够规划、调用工具并对结果做出反应的模型——已经强大到足以标准化。create_agent 成为 LangChain 极简运行框架,我们把它构建在 LangGraph 之上,因为生产级 Agent 需要它的原语(人在回路、可观测性、容错等)。

然后在 2025 年 7 月,我们又向前推进了一层,推出了 Deep Agents。它构建在相同的核心循环之上,但默认捆绑了上述组件(上下文管理、子 Agent 等)。受 Claude Code 和 Manus 的启发,我们相信构建者希望为自己的用例获得同样强大的 Agent,因此我们把 deepagents 构建为一个通用运行框架。

TL;DR

  • 如果你正在构建或重构 Agent,从 Deep Agents 的 create_deep_agent 开始——我们所有的内部 Agent(GTM、代码编写、文档编写等)都在使用它。
  • 当你想要更少的内置上下文管理,并希望对 Agent 循环有更精细的控制时,可以选择 LangChain 的 create_agent。
  • 当你在自定义工作流中需要更多控制力或确定性时,选择 LangGraph。

致谢

感谢 Harrison Chase、Hunter Lovell、Morgan Curtis 和 Sean Roche 的认真审阅!

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

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

发表评论:

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

热门