智能体:控制框架 vs. 开发框架
如果您经常听到“代理框架”(Agent Framework)和“代理控制”(Agent Harness)这两个词,却分不清它们的区别,那么这篇文章正是为您准备的。这两个词听起来似乎可以互换,但实际上并非如此。我曾在 @crewAIInc 工作过,它就是一个代理框架,所以我对它们的界限比较了解。
代理框架和代理控制在理念光谱上处于不同的位置。如果您正在构建代理,那么了解它们的位置至关重要,因为它会影响到您需要负责哪些工作,以及哪些工作由工具代劳。
如果将代理开发放在一条直线上,那么没有任何抽象的原始代码位于最左边。您需要直接调用 API,自行管理状态,从零开始构建每个组件。完全的灵活性,也意味着完全的责任。
代理框架则位于中间位置。它们为您提供结构和抽象,但您仍然需要做出很多决策。您需要选择内存系统,配置工具,定义编排逻辑。框架对组件之间的连接方式有一定的规范,但它是模块化的。您可以替换组件。
代理控制位于最右侧,它们预设了所有功能,所有细节都已预先设定。您只需添加 API 密钥,或许再指定几个工具,即可运行。内存管理、上下文管理、代理循环、安全检查,所有这些都已为您预先设定。
框架则为您提供构建代理的抽象层。您可以定义角色、任务和工具,并指定代理的协作方式,例如顺序执行还是层级执行。框架负责处理底层细节,例如调用 LLM、路由工具输出以及管理执行循环。但您仍然需要做出架构决策。
框架对构建模块的实现方式有预设,例如内存抽象、工具接口和任务结构。但这些组件是可以替换的。如果您不喜欢默认的内存实现,可以插入自己的实现。如果您想使用不同的 LLM 提供程序,也可以进行配置。框架提供了一个标准接口,但您仍然需要构建整个系统。
这种模块化正是关键所在。框架是为那些想要构建代理(而不仅仅是使用代理)的人而设计的。你需要理解各个组件是如何协同工作的,因为最终决定使用哪些组件的是你自己。
而代理控制提供的不是构建模块,而是一个完整的系统。
最近最好的例子是 @openclaw,它在几周前迅速走红。它就是一个利用。你下载它,添加你的 API 密钥,然后就能立即拥有一个可以在 WhatsApp、Telegram 和其他平台上聊天的代理。内存管理、上下文管理、代理循环、工具调用、权限管理、状态持久化等等,所有这些都已内置。
你无需配置内存系统,也无需决定如何注册工具或代理如何从错误中恢复。这些决策都由框架的开发者完成。你的任务是让它执行任务并运行。
这就是权衡之处。你得到的是一个可以立即使用的工具,但你无法更改其底层工作原理。这个工具对所有事情都有自己的见解,而当你使用它时,就意味着你接受了这些见解。
它的功能范围很重要,因为它对应着不同的问题。
如果你正在进行原型设计、实验或构建自定义功能,你需要一个框架。你需要灵活的组件切换、测试不同的方法以及控制细节。框架为你提供结构,但不会限制你的发挥。
如果你需要一个能够立即可靠运行、适用于特定用例的工具,你需要一个工具。你用控制权换取速度。工具已经解决了那些棘手的问题,例如上下文管理、持久执行和错误恢复。你只是在使用现成的解决方案。
框架是为构建者准备的,工具是为用户准备的。
这并不意味着哪个更好,而是意味着它们解决的是不同的问题。你需要解决的问题决定了你需要哪一个。两者之间的界限并不总是泾渭分明,而且我不确定它是否应该泾渭分明。
一些框架正在添加类似工具的功能。@LangChain 就是一个很好的例子。他们发布了 Deep Agents,并将其明确称为“代理框架”,它运行在 LangChain 框架之上。Deep Agents 内置了规划工具、用于上下文管理的文件系统访问、子代理生成和内存持久化功能。虽然底层仍然使用 LangChain,但 Deep Agents 提供了开箱即用的默认配置,无需您自行连接所有组件。
LangChain 实际上在其技术栈中区分了三个层。LangChain(原始库)是框架。LangGraph 是他们所谓的“代理运行时”,负责处理执行、状态管理和持久化。Deep Agents 是运行在两者之上的控制框架。这是一家公司,业务范围涵盖了所有方面:用于组合代理的框架、用于可靠执行代理的运行时、以及用于开箱即用的框架。
这是一家控制框架公司,业务发展迅猛。Deep Agents 仍然是模块化的,您可以更换代理组件。它会配置工具、调整提示,但无需你自行组装所有组件,就能为你提供一个可用的系统。
另一方面,控制框架并非像听起来那样封闭。以 OpenClaw 为例,它开箱即用时预设了多种方案,但如果你下载源代码,就可以替换实现。你可以更改内存使用方式、调整代理循环、修改工具处理。只是大多数人不会这么做,因为默认设置已经足够好用。
区别在于启动时哪些内容已经确定。控制框架内置了预设方案,而它则提供了多种选项。如果你使用控制框架,就意味着你接受了大部分预设方案,只需进行一些微调。如果你使用开发框架,则需要自行做出这些决策并组装系统。
你需要解决的问题决定了你需要哪种框架。有时(实际上大多数情况下),你需要完全绕过代理框架,直接使用模型端点构建一个简单的 ReAct 代理。
你希望有多少部分已经建成,这决定了你选择哪一个。
原文链接:Difference Between Agent Harnesses & Agent Frameworks
汇智网翻译整理,转载请标明出处