首页 / 文章 / LangChain与LangGraph:包依赖关系究竟揭示了什么

LangChain与LangGraph:包依赖关系究竟揭示了什么

从依赖关系层面来看,LangGraph是LangChain的必需组件,这使得该框架的选择应视为三个包而非两个。

897 词

关于LangChain与LangGraph的争论在工程领域的讨论中屡见不鲜,而标准的答案几乎总是一样的:当需要链式处理和工具调用时选择LangChain,当需要具有循环功能的状态化智能体时选择LangGraph。这个答案并非错误,但它基于一个仔细审视后会发现并不成立的前提。

实际上,更准确的答案就隐藏在显而易见的地方——即包的元数据之中。

简单安装所揭示的内容

试着运行pip install langchain,然后查看实际下载到磁盘中的内容。

langchain-core==1.5.0
langgraph==1.2.9
pydantic==2.7.4

LangGraph 会自动随 LangChain 一起提供。它并非可以跳过的可选插件,而是必需的依赖项。查看 langchain 1.3.14 的清单,仅有三个包被列为强制要求,而 langgraph 因其版本需在 1.2.5 到 1.3.0 之间,也被包含在其中。

现在试试反着来:执行 pip install langgraph。这样会同时安装 langchain-core 以及 LangGraph 自带的子包,但 langchain 本身却不会被安装。

这意味着那种将二者视为非此即彼的选择方式的思路,实际上并不符合你的包管理器的限制。安装 LangChain 就意味着 LangGraph 也会一同被安装,反之则不成立。

三个包,而非两个

大多数对比都将此视为一个双向决策。实际上存在三个不同的组件,一旦正确命名它们,大部分困惑就会消失。

langchain-core是其他所有组件的共同基础。它包含了消息类型、Runnable抽象类、BaseTool以及RunnableConfig。无论是langchain还是langgraph都直接依赖于它——没有它,这两个组件中的任何功能都无法运行。

langgraph才是真正的执行引擎。它可以被视作由节点、条件边、共享状态对象以及检查点功能构成的状态机。该引擎专为处理循环结构而设计,而这正是智能体循环的核心所在。LangGraph自身的源文件中约有40.2%直接导入了langchain_core,这一事实表明它并非LangChain的竞争产品——而是建立在LangChain核心抽象之上的。

langchain则作为上层框架存在于两者之上。它集成了模型接口、提供者连接器以及便捷的封装工具,便于在前面提到的两个框架基础上构建智能体。如果你希望直接使用ChatOpenAIChatAnthropic而无需从头编写HTTP客户端,那就应该安装它。

将此称为“线性链与有状态图”的说法反映的是旧时的分类方式,而代码库中已不再存在这种划分。更准确的表述是:LangGraph才是执行实际工作的运行时,而LangChain则是一个便利层,它将该运行时与各种服务提供商的接口整合在一起。

你真正需要做出的选择

一旦明确了解依赖关系——LangChain建立在LangGraph之上,而非相反——你需要解答的问题也会随之改变。

问题不再是在“LangChain还是LangGraph?”之间选择,而是变成:你是想要完整的langchain生态系统,包括各种提供者集成、ChatOpenAI、智能体构建工具以及30多个可选的附加包?还是更愿意直接基于langchain-corelanggraph进行开发,从而避免那些额外的组件?

无论选择哪种方式,底层依然使用LangGraph。不同之处在于随之一起引入到你环境中的其他所有组件。

如果你正在构建用于生产环境的智能体镜像,并且希望依赖项范围严格、易于审计,那么安装 langgraph 以及实际所需的提供商客户端就能让镜像体积更小。如果你需要快速进行原型开发,且希望 ChatOpenAI 能直接使用而无需手动编写提供商封装代码,那么执行 pip install langchain[openai] 即可以更少的配置完成目标。

有一个细节需要特别说明:langchain-core 会将 LangChain 的追踪客户端 LangSmith 作为必需依赖项一并安装。除非你明确进行配置,否则它不会发送任何数据。但如果你要查看容器内的实际内容,无论是否启用该功能,LangSmith 都会存在其中。

为何选择此项不仅关乎安装大小

在四项任务中,使用 gpt-4o 对 LangGraph 1.2.9 和 Pydantic AI 2.13.0 进行了对照测试,共进行了 160 次运行。两个框架的准确率均为 100%。从实际耗时来看,LangGraph 的完成速度大约快 1.4 到 1.8 秒,这一差异源于 Pydantic AI 的异步转同步处理机制,但两者的准确率并无差别。

真正影响测试结果的是底层模型,而非框架选择。使用 gpt-4o-mini 执行相同的任务时,在涉及日期运算的某项任务中出现了全面失败的情况——20 次尝试全错,而更大规模的模型则能轻松处理这一边缘情况。

简而言之:在 LangChain 和 LangGraph 之间做选择,主要取决于你希望将多少 LangChain 生态系统中的组件引入自己的项目,因为两者都基于相同的底层引擎运行。而 LangGraph 与 Pydantic AI 之间的选择,则意味着要对比两个完全独立的库——上述测试结果表明,在 gpt-4o 模型上,两者的正确性并无明显优势,不过延迟差异确实存在,值得在自身环境中进行测量。

相关阅读

  • LangChain 1.x 实战应用:本地构建链、RAG、工具及智能代理 — 无需 API 密钥,只需使用免费的本地 Ollama 环境,即可学习如何利用 LangChain 1.x 构建链、检索增强生成系统、工具以及智能代理型 RAG 应用。