主题
运行时、框架与 harness
了解 LangChain、LangGraph 和 Deep Agents 之间的差异以及各自何时使用
LangChain 维护了多个开源包来帮助你构建智能体。每个包在智能体开发栈中都有不同的用途。理解智能体框架、智能体运行时和智能体 harness之间的区别,有助于你选择适合自己需求的正确工具。
| 运行时 | 框架 | harness | |
|---|---|---|---|
| 增值点 |
|
|
|
| 何时使用 |
|
|
|
| 可选项 |
|
|
|
智能体框架(如 LangChain)
智能体框架提供抽象,使基于 LLM 构建时更容易上手。
LangChain 是一个智能体框架,提供诸如结构化内容块、智能体循环和 middleware 等抽象。
LangChain 的抽象旨在易于上手,同时仍为高级用例提供所需的灵活性。
虽然 LangChain 构建在 LangGraph 之上,但使用 LangChain 并不需要了解 LangGraph。
其他智能体框架示例包括 Vercel 的 AI SDK、CrewAI、OpenAI Agents SDK、Google ADK、LlamaIndex 等等。
何时使用 LangChain
在以下情况使用 LangChain:
- 你想要快速构建智能体和自主应用。
- 你需要针对模型、工具和智能体循环的标准抽象。
- 你想要一个易于使用且仍提供灵活性的框架。
- 你正在构建简单的智能体应用,没有复杂的编排需求。
智能体运行时(如 LangGraph)
智能体运行时提供在生产环境中运行智能体的工具。 受支持的工具可能包括:
- 持久化执行:智能体能够在故障中保持,并可长时间运行,从中断处恢复。
- 流式传输:支持流式传输工作流和响应。
- 人在回路:通过检查和修改智能体状态来纳入人工监督。
- 持久化:用于状态管理的线程级和跨线程持久化。
- 低层控制:无需高层抽象即可直接控制智能体编排。
LangGraph 是一个低层编排框架和运行时,用于构建、管理和部署长时间运行、有状态的智能体。
智能体框架通常层级更高,并运行在智能体运行时之上。 例如,LangChain 1.0 构建在 LangGraph 之上。
其他智能体运行时示例包括 Temporal、Inngest 以及其他持久化执行引擎。
何时使用 LangGraph
在以下情况使用 LangGraph:
- 你需要对智能体编排进行细粒度、低层的控制。
- 你需要为长时间运行、有状态的智能体提供持久化执行。
- 你正在构建将确定性步骤和智能体步骤结合的复杂工作流。
- 你需要用于智能体部署的生产级基础设施。
智能体 harness(如 Deep Agents SDK)
智能体 harness 是有主见、开箱即用的框架,内置用于构建复杂、长时间运行智能体的工具和功能。 受支持的工具可能包括:
- 规划能力:使用待办列表跟踪多个任务。
- 任务委派:使用子智能体委派工作并保持上下文整洁。
- 文件系统:对不同可插拔存储后端上的文件进行读写访问。
- token 管理:对话历史摘要化以及大型工具结果驱逐。
Deep Agents SDK 构建在 LangGraph 之上,并增加了规划能力、用于上下文管理的文件系统、生成子智能体的能力等。 Deep Agents 专为需要规划和分解的复杂、多步骤任务而设计。
示例任务包括处理搜索结果、脚本以及状态中的其他产物。
其他智能体 harness 示例包括 Claude Agent SDK、Manus 以及其他编码 CLI。
何时使用 Deep Agents SDK
在以下情况使用 Deep Agents SDK:
- 你正在构建长时间运行的智能体。
- 你正在构建需要处理复杂、多步骤任务的智能体。
- 你想要使用预定义工具,例如文件系统操作、bash 执行和自动化上下文工程。
- 你想要使用预定义的提示词和子智能体。
功能对比
虽然你可以用 LangChain、LangGraph 和 Deep Agents 完成类似的任务,但你集成它们的层级有所不同:
| 功能 | LangGraph | LangChain | Deep Agents |
|---|---|---|---|
| 短期记忆 | 短期记忆 | 短期记忆 | StateBackend |
| 长期记忆 | 长期记忆 | 长期记忆 | 长期记忆 |
| 技能 | - | 多智能体技能 | 技能 |
| 子智能体 | 子图 | 多智能体子智能体 | 子智能体 |
| 人在回路 | 中断 | 人在回路 middleware | interrupt_on 参数 |
| 流式传输 | 流式传输 | 智能体流式传输 | 流式传输 |