Agentic AI:8个开源框架对比
功能和学习曲线对比
我们都听说过CrewAI和AutoGen,但你知道吗,除此之外还有几十个开源的代理框架 - 其中很多都是在去年发布的。
简单测试了一些比较流行的框架,以便了解它们的工作方式以及开始使用的难易程度。下文就来进行详细的对比
我们将重点关注LangGraph、Agno、SmolAgents、Mastra、Pydantic AI和Atomic Agents。我们还会把它们和CrewAI以及AutoGen做个比较。
我们将看看一个框架实际上是做什么的,不同的设计选择,
它们之间有何不同,以及一些关于它们背后的思想流派的信息。
代理型 AI
Agentic AI 主要是围绕着大型语言模型(LLMs)构建系统,让它们能够拥有准确的知识、数据访问能力和行动能力。
你可以把它看作是使用自然语言来自动化流程和任务。
在自动化中使用自然语言处理并不是什么新鲜事 - 我们已经用 NLP 多年来提取和处理数据了。
新的是我们现在能给语言模型的自由度,允许它们处理模糊性并动态做出决策。没错,大模型的优势就是处理模糊性和有一定的规划能力。
但仅仅因为 LLMs 能理解语言,并不意味着它们就有代理性 - 甚至理解你想要自动化的任务。这就是为什么构建可靠系统需要大量的工程技术。
这些框架的作用
框架的核心,是帮你进行提示工程化和管理数据在大型语言模型(LLMs)之间的传输——但它们也提供了额外的抽象层,让你更容易上手。
如果你要从零开始构建一个系统,让一个LLM使用不同的API - 工具 - 你需要在系统提示中定义它。然后你会要求LLM返回它的响应,连同它想要调用的工具,这样系统就可以解析并执行API调用。
理论上来说,去手搓一个这样的框架也不太难。因为对于大模型来说,肯定输入都是文本,输出也是文本。只是你需要将输入构造成特定的格式,以便输出的时候能够让大模型输出准确的决策,而且你还是需要去解析这些决策,以便去调用工具或者去走不同的分支。简单,但没那么容易。
所以基本上,我们讨论的是提示工程化——这是任何框架的基础。
框架通常以两种方式帮助:它结构化地组织提示,确保LLM以正确的格式响应,然后解析响应,将其路由到正确的工具 - 或API、文档或其他你需要的东西。
当我们设置知识时,框架可能允许始终包含它。这就像我们构建标准RAG系统时一样,被添加到提示中作为上下文。
框架还可以帮助处理错误处理、结构化输出、验证、可观察性、部署 - 并通常帮助你组织代码,这样你就可以构建更复杂的系统,比如多代理设置。
不过,很多人觉得使用完整的框架有点小题大做。
问题是:如果LLM没有正确使用工具或者出了故障,抽象层就会变成痛苦,因为你无法轻松调试。如果你更换模型,这也可能成问题 - 系统提示可能是为一个模型量身定做的,而不适合其他模型。
这就是为什么一些开发者最终会重写框架的部分内容——比如在LangGraph中的create_react_agent
——以获得更好的控制。
是的,很多框架很重,包了很多层。
有些框架更轻量级,有些更重,提供额外的功能,但围绕它们有一个社区来帮助你上手。一旦你学会了一个(包括它的底层工作原理),就更容易上手其他的。
不同的开源框架
一般情况下在选择一个框架之前,我们确实会看社区来了解一个框架在实际案例中的表现如何。但是,最受欢迎的框架可能并不总是最理想的选择。
我们都听说过的有CrewAI和AutoGen。
CrewAI是一个非常高抽象的框架,它让你通过隐藏底层细节快速构建代理系统。AutoGen专注于自主的、异步的代理合作,代理可以根据自己的意愿自由合作 - 这可能使它更适合测试和研究。
LangGraph仍然是一个相当知名的系统,但值得作为开发者主要框架之一被突出显示。
它使用基于图的方法,你可以构建节点并通过代理连接它们。与其他两个相比,它让你对工作流程有更严格的工程控制,并不假设代理应该有很多自主权。
应该注意的是,许多人觉得 LangGraph 在抽象上过于复杂且难以调试。其想法是它有一个陡峭的学习曲线,但一旦你学会了基础知识,应该会变得更容易。
当然现在也出现了很多非常不错的框架。
下一个是Agno(之前叫 Phi-Data),它专注于提供非常好的开发者体验。它还拥有我见过的最清晰的文档之一。它非常即插即用,帮助你快速开始,拥有许多内置功能,组织成逻辑清晰、合理的抽象概念。
SmolAgents是一个非常基础的框架,它引入了一个代理 - CodingAgent - 它通过代码而不是 JSON 来路由数据。它还让你直接访问整个 Hugging Face 模型库。
至于那些不常被提及的开源框架:
PydanticAI在 Pydantic 的基础上构建,提供了最小抽象的基础框架,非常透明。当你需要严格的类型安全和可预测、经过验证的输出时,它很棒,用于精细控制,使调试变得更容易。
Atomic Agents是由一个独立的代理构建者开发的,使用你可以像乐高一样连接的基于模式的构建块,强调结构和控制。它是为了响应实践中缺乏有效工作的替代品而构建的。
PydanticAI 和 Atomic Agent 的目标都是远离独立行动的黑箱 AI。
Mastra,由 Gatsby 背后的团队创建,是一个为前端开发者设计的 JavaScript 框架,让他们能够轻松地在自己的生态系统内构建代理。
我们将介绍每个框架的特点,以及它们的不同之处。
这个框架共有的东西
大多数框架都带有相同的核心构建模块:支持不同的模型、工具、内存和RAG。
大多数开源框架或多或少都是模型不可知的。这意味着它们被构建为支持各种提供商。然而,正如前面提到的,每个框架都有自己的系统提示结构 - 而这个结构可能与某些模型比其他模型更匹配。
这也是为什么你理想中会希望能够访问系统提示,并在需要时对其进行调整。
所有具有代理性的框架都支持工具化,因为工具对于构建能够采取行动的系统至关重要。它们还使得通过简单的抽象定义自己的自定义工具变得容易。如今,大多数框架都支持MCP,无论是官方的还是通过社区解决方案的。
重要的是要理解,并不是所有的模型都是为函数调用构建的,而这对于使用工具是必要的。要弄清楚哪些模型最适合作为基础LLM,你可以查看Hugging Face的代理排行榜.
为了使代理能够在LLM调用之间保留短期记忆,所有框架都使用状态。状态帮助LLM记住在早期步骤或对话的部分中说过的内容。
大多数框架还提供简单的选项来设置RAG,与不同的数据库结合,为代理提供知识。
最后,几乎所有框架都支持异步调用、结构化输出、流式传输以及添加可观察性的能力。
有些框架缺少的东西
框架在某些领域会有所不同,比如支持多模态输入、记忆和多智能体系统。有些框架会帮你处理这些,而其他的则需要你自己来连线。
首先,有些框架有内置的多模态处理解决方案- 也就是文本、图像和声音。只要模型支持,你完全可以自己实现这一点。
就像之前说的,短期记忆(状态)总是包括在内的 - 没有它,你就无法构建一个使用工具的系统。然而,长期记忆更难实现,这也是框架之间的差异所在。有些提供内置解决方案,而其他的则需要你自己去连接其他解决方案。
**框架在处理多智能体能力方面也各不相同。**多智能体系统允许你构建协作或分层的设置,通过监督者连接智能体团队。
大多数框架建议保持智能体专注 - 范围狭窄且工具有限。这意味着你可能需要构建智能体团队来处理复杂的工作流程。所有框架都允许你构建一个团队,但有些在扩展到多层次系统时会变得复杂。
LangGraph 在这方面脱颖而出- 你可以构建节点,将它们连接到各种监督者,并可视化不同团队之间的互动。在大规模构建多智能体系统时,它显然是最灵活的。
Agno 最近增加了对团队的支持,无论是协作的还是分层的,但对于更复杂的多层次设置,目前还没有太多例子。
**SmolAgents 允许你将智能体连接到一个监督者,但随着系统的增长,它可能会变得复杂。**它让我想起了 CrewAI 如何构建智能体团队。Mastra 在这方面也类似。
使用 PydanticAI 和 Atomic Agents,你需要手动将你的智能体团队串联起来,所以编排工作落在了你身上。
我已经在这个谷歌表格中收集了很多我所做的研究,如果你需要更好的概览,你也可以在这个仓库中找到一个表格。
它们各有什么不同
框架在抽象程度、给予代理的控制权以及你需要编写多少代码才能让事情运行起来方面各不相同。
首先,有些框架的特点是包含了许多内置功能,这使得快速开始变得容易。
我会说 Mastra、CrewAI 和在某种程度上的 Agno 都是为即插即用而设计的。
LangGraph也有相当的抽象程度,但它使用基于图的系统,你需要手动连接节点。这给了你更多的控制权,但也意味着你必须自己设置和管理每个连接,这带来了更陡峭的学习曲线。
然后我们有低层次抽象的框架,比如 PydanticAI、SmolAgents 和 Atomic Agents。
**它们的特点是透明度高,但你通常需要自己构建编排。**这给了你完全的控制权,并有助于调试 - 但它也增加了构建时间。
另一个区别点是框架假设代理应该有多少自主权。**有些是建立在这样的想法上:LLMs 应该足够聪明,能够自己弄清楚如何完成任务。**其他的则倾向于严格控制 - 给代理一个任务,并一步一步指导它们。
AutoGen 和 SmolAgents 属于第一种类型。其余的更倾向于控制。
这里有一点需要考虑:当开发者构建专注于严格控制的框架时,通常是因为他们还没有找到让代理自己工作的方法 - 至少不是可靠的方法。
这个领域也开始越来越像工程学。
如果你要构建这些系统,你确实需要懂得如何编码。真正的问题是框架在你需要多技术化方面有多大差异。
如果你经验较少,选择 CrewAI、Agno 或 Mastra 可能是个好主意。
SmolAgents 对于简单的用例也相当直接。
至于 PydanticAI、Atomic Agents 和 LangGraph - 你将自己编写更多的逻辑。不过公平地说,构建一个代理来帮助你正确地构建代码结构也是可能的。
如果你完全不懂编程,那么你可以看看 Flowise 或 Dify。
最后,值得一提的是这些框架的开发者体验。
据我所见,大多数开发者发现 CrewAI 和 AutoGen 很难调试。SmolAgents 的 CodeAgent 引入了一种新颖的方法,代理输出代码来路由数据 - 这是个很酷的想法,但它并不总是按预期工作。
LangGraph,特别是与 LangChain 配对使用时,学习曲线陡峭,一些让人困惑的抽象可能最终需要你拆开重建。
PydanticAI 和 Atomic Agents 通常受到开发者的喜爱,但它们确实需要你自己构建编排。
Agno 和 Mastra 是坚实的选择,但你可能会遇到像循环调用这样难以调试的问题。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。