Agentic AI新框架对比

我们都知道CrewAIAutoGen,但你知道吗?还有几十个开源的基于代理的框架存在——而且其中许多是在过去一年发布的。

我简要测试了一些更受欢迎的框架,以了解它们的工作原理以及上手的难易程度。所以请跟我一起看看每个框架带来了什么。

重点将放在LangGraphAgnoSmolAgentsMastraPydanticAIAtomic Agents上。我们将把它们与稍微老一些但更主流的CrewAI和AutoGen进行对比。

我们将探讨框架到底做了什么,不同的设计选择,它们之间的差异,以及背后的一些思想流派。

1、基于代理的AI

基于代理的AI(Agentic AI)基本上是围绕大型语言模型(LLMs)构建系统,使它们能够拥有准确的知识、访问数据并采取行动。你可以将其视为使用自然语言来自动化流程和任务。

在自动化中使用自然语言处理并不是新鲜事——多年来我们已经用它来提取和处理数据。新的是我们现在可以赋予语言模型更多的自由,允许它们处理模糊性并动态地做出决策。

但是,仅仅因为LLMs能理解语言并不意味着它们有自主权——甚至不理解你试图自动化的任务。这就是为什么构建可靠系统需要大量的工程工作。

如果你想了解更多关于基于代理的AI的内容,可以阅读我的文章这里这里,如果你对入门级概述感兴趣的话。

2、框架的作用是什么?

从根本上讲,基于代理的框架帮助你进行提示工程,并将数据路由到LLMs——但它也提供了额外的抽象,使你更容易上手。

如果你从头开始构建一个系统,其中LLM应该使用不同的API——工具——你需要在系统提示中定义这些。然后你请求LLM返回其响应以及想要调用的工具,这样系统就可以解析并执行API调用。

所以基本上,我们在谈论提示工程——这是任何框架的基础。

框架通常通过两种方式提供帮助:它正确地结构化提示,确保LLM以正确的格式响应,并将响应路由到正确的工具——或者API、文档等。

当我们设置知识时,框架可能允许始终包含它。这作为上下文添加到提示中,类似于我们构建标准RAG系统的方式。

框架还可以帮助处理错误处理、结构化输出、验证、可观察性、部署等问题——并且通常帮助你组织代码,以便构建更复杂的系统,如多代理设置。

尽管如此,很多人觉得使用完整的框架是多余的。

问题在于:如果LLM不能正确使用工具或出现问题,抽象会成为一个麻烦,因为你不容易调试它。这也可能是当你切换模型时的问题——系统提示可能针对一个模型进行了定制,而无法很好地转移到其他模型上。

这就是为什么一些开发人员最终会重写框架的一部分——比如LangGraph中的create_react_agent——以获得更好的控制。

有些框架较轻量级,有些则功能更丰富,但社区围绕它们可以帮助你快速上手。一旦你学会了一个框架(包括它的底层工作原理),学习其他框架就变得容易了。

3、不同的开源框架

我们依赖社区来了解框架在实际案例中的表现。然而,最受欢迎的框架并不总是理想的选择。

我们大家都听说过的是CrewAIAutoGen

CrewAI是一个高度抽象的框架,通过隐藏低级细节让你快速构建代理系统。AutoGen专注于自主、异步代理协作,代理可以根据自己的意愿进行协作——这可能更适合用于测试和研究。

LangGraph仍然是一个相当知名的系统,但值得强调为开发者的主要框架之一。它采用基于图的方法,通过节点构建并通过代理连接它们。与其他两个相比,它给你对工作流更严格的工程控制,并不假定代理应该有多大的自主权。

需要注意的是,许多人认为LangGraph在其抽象方面过于复杂且难以调试。想法是它有一个陡峭的学习曲线,但一旦掌握了基础知识,就会变得更容易。

现在,我还想在这里介绍几个较新的框架。

下一个就是Agno(之前叫Phi-Data),它专注于提供非常好的开发者体验。它也是我见过的文档最清晰的一个。它非常即插即用,帮助你快速上手,内置了许多功能,以逻辑、干净的抽象组织起来,意义明确。

SmolAgents是一个非常基础的框架,引入了一个代理——CodingAgent——它通过代码而不是JSON路由数据。它还让你直接访问Hugging Face模型库的所有内容。

至于不太常提到的开源框架:

PydanticAI基于Pydantic,抽象较少,提供了一个极简框架,透明度很高。当你需要严格的数据类型安全性和可预测、经过验证的输出时,它非常有用,便于细粒度的调试。

Atomic Agents是由一位独立代理构建者开发的,使用类似乐高的结构化构建块进行连接,重点在于结构和控制。它是作为一种对实践中缺乏良好替代方案的回应而创建的。

Mastra,由Gatsby团队创建,是一个JavaScript框架,旨在让前端开发者轻松在其生态系统内构建代理。

我们将逐一了解这些框架的特点及其区别。

4、它们共同具备的功能

大多数框架都具备相同的核建设块:支持不同的模型、工具、记忆和RAG。

大多数开源框架或多或少都是模型无关的。这意味着它们被设计为支持各种提供商。不过,正如前面提到的,每个框架都有自己的系统提示结构——这种结构可能对某些模型比其他模型更好。

这也是为什么你理想情况下需要访问系统提示并根据需要进行调整的原因。

所有基于代理的框架都支持工具,因为工具对于构建能够行动的系统至关重要。它们还通过简单的抽象轻松定义自己的自定义工具。如今,大多数框架都支持MCP,无论是官方支持还是通过社区解决方案。

重要的是要明白,并不是所有的模型都适合函数调用,这是使用工具所必需的。要确定哪些模型最适合作为基础LLM,你可以查看Hugging Face的代理排行榜

为了使代理能够在LLM调用之间保留短期记忆,所有框架都利用了状态。状态帮助LLM记住早期步骤或对话中的内容。

大多数框架还提供了简单的选项来设置RAG,与不同的数据库结合,为代理提供知识。

最后,几乎所有框架都支持异步调用、结构化输出、流式传输以及添加可观察性的能力。

我在这一Google表格中收集了大量的研究,你还会在这个存储库中找到一张表格。/主目录/README.md#os-agenticai-workflow)如果你需要更好的概述。

5、一些框架没有的东西

框架在某些方面会有所不同,比如支持多模态输入、记忆和多代理系统。有些会为你处理这些,而另一些则会让你自己进行连接。

首先,一些框架内置了解决多模态(即文本、图像和语音)的方法。只要你使用的模型支持,这些都是可以自行实现的。

如前所述,短期记忆(状态)总是包含在内的——没有它,你就无法构建一个使用工具的系统。然而,长期记忆的实现更为复杂,这也是框架之间差异所在。有些提供内置解决方案,而另一些则需要你自己连接其他解决方案。

框架在处理多代理能力方面也有所不同。多代理系统允许你通过监督者将代理团队连接起来,构建协作或层级设置。

大多数框架建议让代理专注于特定任务——狭窄的范围和有限的工具集。这意味着你可能需要构建代理团队来处理复杂的流程。所有框架都允许你构建一个团队,但当扩展到具有多个层次的多层级系统时,有些框架可能会变得复杂。

这就是LangGraph脱颖而出的地方——你可以构建节点,将它们连接到不同的监督者,并可视化不同团队如何互动。在构建大规模多代理系统时,它显然是最灵活的。

Agno最近添加了对协作和层级团队的支持,但目前还没有太多关于更复杂的多层级设置的例子。

SmolAgents允许你将代理连接到监督者,但随着系统的增长可能会变得复杂。它让我想起了CrewAI在组织代理团队方面的结构方式。Mastra在这方面也很相似。

对于PydanticAI和Atomic Agents,你需要手动链接你的代理团队,因此协调工作完全由你负责。

6、它们之间的区别

框架在抽象程度、给予代理的控制程度以及为了使某事物运行所需编写的代码量上各有不同。

首先,一些框架特别注重包含许多内置功能,这样可以快速轻松地开始使用。

我认为Mastra、CrewAI以及在某种程度上Agno都是为即插即用而设计的。

LangGraph也有相当多的抽象,但它使用基于图的系统,你需要手动连接节点。这给了你更多的控制权,但也意味着你需要自己设置和管理每一个连接,这带来了更陡的学习曲线。

然后是像PydanticAI、SmolAgents和Atomic Agents这样的低级抽象框架。

这些框架特别注重透明性,但你经常需要自己构建协调工作。这给你完全的控制权并有助于调试——但这也增加了构建的时间。

另一个区别点是框架假设代理应该有多少自主权。有些框架认为大型语言模型应该足够聪明,能够自己完成任务。而其他的则倾向于严格的控制——给代理一个任务并逐步指导它们。

AutoGen和SmolAgents属于第一类。其余的则更倾向于控制。

这里有一个要考虑的问题:当开发者构建强调严格控制的框架时,通常是因为他们还没有找到让代理自行工作的可靠方法。

这个领域也开始看起来越来越像工程学了。

如果你打算构建这些系统,确实需要了解如何编程。真正的问题是你需要具备多少技术知识才能使用这些框架。

如果你的经验较少,选择CrewAI、Agno或Mastra可能是个好主意。

SmolAgents对于简单的用例来说也相当直观。

至于PydanticAI、Atomic Agents和LangGraph——你需要编写更多的逻辑。不过公平地说,总是有可能构建一个代理来帮助你正确地组织代码。

如果你完全不熟悉编程,可以试试Flowise或Dify。

最后,值得一提的是这些框架的开发体验。

从我所看到的情况来看,大多数开发者发现CrewAI和AutoGen调试起来很棘手。SmolAgents的CodeAgent引入了一种新颖的方法,代理输出代码以路由数据——这是一个很酷的想法,但并不总是按预期工作。

LangGraph,尤其是与LangChain结合使用时,学习曲线陡峭且有一些令人困惑的抽象,你可能最终需要拆分并重新构建它们。

PydanticAI和Atomic Agents通常受到开发者的喜爱,但它们确实要求你自己构建协调工作。

Agno和Mastra是不错的选择,但你可能会遇到一些难以调试的问题,比如循环调用。

7、一些注意事项

最好的入门方式就是直接跳进去尝试一下。但我希望这能给你一个不错的开源框架概览——以及哪些可能适合你。

不过,这只是对每个框架的一个浅显的介绍,因为我没有深入探讨企业级可扩展性和操作稳健性等问题。如果你正在为此构建,就需要单独研究这些部分。

一些开发者说AI代理框架是最糟糕的形式之一——它们常常比直接使用官方LLM提供商的SDK更复杂。

我会把这个决定留给你。

记住,你可以在这里找到每个框架的完整功能列表这里,完整的代理框架存储库可以在这里找到。

我希望你喜欢这篇文章,如果喜欢的话,请务必分享。


原文链接:Agentic AI: Comparing New Open-Source Frameworks

汇智网翻译整理,转载请标明出处