微信扫码
与创始人交个朋友
我要投稿
本文介绍了多个AI智能体框架的优劣势和适用场景,包括agentUniverse、AutoGPT、Flowise、MetaGPT、AutoGen、CrewAI和llama-agents,旨在为AI Agents选型提供参考借鉴意义。
作者:谢文,AI技术爱好者。此篇文章为征文投稿优秀作品,期待有更多的开发者朋友与我们分享洞见。
图一:AI Agent 图谱
我们选择其中一部分通用型的开源项目进行分析,先来看一下这些项目在Github上的Star数量。
图二:Github Stars 增长曲线对比
以上几个框架中,
⭐受关注数较多的有:AutoGPT(165k)、MetaGPT(42.1k)、AutoGen(29.2k)
⏱发布时间较早的有:AutoGPT(Mar, 2023)、BabyAGI(Apr, 2023)、Flowise(Apr, 2023)
?上升趋势较快的有:AutoGPT、MetaGPT、AutoGen
?发布时间较新的有:agentUniverse、llama-agents
以OpenAI为例,通常,我们通过在ChatGPT的文本窗口中输入措辞谨慎的提示与GPT-4进行交互,直到生成我们想要的输出。但是我们大多数人都缺乏技巧和耐心,无法坐下来一个接一个地写提示,引导大语言模型回答一个复杂的问题,例如“占领 20% 的美妆类电商服务市场的最佳商业计划是什么?”,很自然地,开发人员一直在想办法使大部分过程自动化,这就是智能体的用武之地。
大语言模型的出现,给智能体的发展带来了全新的想象力,世界各地的开发人员纷纷开始使用大语言模型构建智能体来解决复杂的问题。早在2023年的三、四月份,就有过一轮智能体的大爆发,短短几周时间内,AutoGPT、BabyAGI、斯坦福西部世界小镇等多个智能体如雨后春笋般冒出来,代表着大语言模型生产应用的一种未来。
agentUniverse 是一个基于大型语言模型的多智能体框架。 agentUniverse提供灵活易拓展的单智能体 构建能力;agentUniverse核心拥有丰富的多智能体协同模式组件(可视为一个协同模式工厂Pattern Factory),它能让智能体们各司其职在解决不同领域问题时发挥最大的能力;同时agentUniverse专注于领域经验的融合,轻松将领域经验融入到智能体的工作中。
图三:agentUniverse 多智能体框架架构图
agentUniverse核心提供了搭建单一智能体的全部关键组件、多智能体之间的协作机制、以及专家经验的注入机制,可以帮助开发者轻松构建具备专业KnowHow的智能应用。
AutoGPT是出现较早的具有代表性的项目,于2023年的3月底发布。
AutoGPT是到目前为止,上面列举的项目中Github Star数目最多的,达到了165k,其总量和上升趋势都很突出。
AutoGPT项目由以下主要组件组成:
Server:AutoGPT项目的支撑,为Agent提供了运行的基础架构,同时还提供了与Agent交互的UI。它与Forge、Agent和定制的UI集成,以提供无缝体验。
Agent:一个由大语言模型提供支持的半自治智能体,可以执行各种任务,它是AutoGPT的核心,由此启动一个项目。
Benchmark:即“agbenchmark”,用于衡量Agent的表现,可以与任何支持Agent协议的Agent一起使用,与项目CLI的集成使其更容易与AutoGPT和基于Forge的Agent一起使用。该基准测试提供了一个严格的测试环境。同时该框架允许进行自主、客观的绩效评估,确保用户的Agent为现实世界的行动做好准备。
Forge:直译为“锻造厂”,是一些现成的模板,用来打造属于用户自己的Agent。所有的样板代码都已经处理好了,开发人员可以将创造力投入到使他们的Agent与众不同的事情当中去。
Frontend:易于使用的开源前端,适用于任何符合Agent协议的Agent。
为了将这些组件联系在一起,在项目的根目录下还有一个命令行界面。
目前AutoGPT已经发布到v0.5.1版本,最新的主干分支对UI部分进行了重大重构,将用React取代原来基于Flutter的Frontend组件,新的UI叫做AutoGPT Builder。
AutoGPT项目意在打造AGI平台级应用,功能强大但架构复杂。作为对构建AGI平台应用的尝试,这些框架尚不成熟,针对我们的场景,使用类似于agentUniverse这样的轻量级框架更合适。
Flowise发布于2023年4月。
Flowise是一个开源低代码工具,专为LangChain打造,基于React Flow技术。它提供一个无缝平台,用于构建定制化的大语言模型流程和智能体,支持拖放式UI操作,提升了用户体验。Flowise简化了流程实验和原型设计,支持快速迭代,帮助开发人员更高效地从测试到生产。
以下是Flowise的一个工作流程示意,这种方式就很直观。
Flowise的Agentflows部分提供了一个平台,用于构建与外部工具和数据源交互的Agent系统。当前,Flowise提供了两种设计方法:Multi-Agents和Sequential Agents。用户可以根据需求选择合适的方法,以实现不同级别的控制和复杂性。
图四:Flowise Agents 界面
Sequential Agents
Sequential Agents架构,基于LangGraph构建,通过将工作流程构建为有向循环图(DCG),促进了对话式智能系统的开发,从而实现受控的循环和迭代过程。此架构为开发人员提供了对底层工作流结构的直接访问,从而实现了对对话流程每一步的精细控制,并为构建高度定制的对话应用程序提供了最大的灵活性。
Sequential Agents架构的核心概念包括:
基于节点的处理:图中的每个节点代表一个独立的处理单元,封装了语言处理、工具执行或条件逻辑等功能。目前,Flowise引入了10个专用节点。
图五:Sequential Agents架构处理节点
数据流作为连接:图中的边表示节点之间的数据流动,其中一个节点的输出成为下一个节点的输入,实现了处理步骤的链式操作。
状态管理:状态作为共享对象进行管理,并在整个对话过程中保持不变。这使得节点可以在工作流程进展中访问和更新相关信息。
Multi-Agents
Multi-Agents建立在Sequential Agents架构之上,特点是以一个Supervisor AI为中心,将任务委派给专业Worker AI的层级结构,擅长通过将复杂的工作流程分解为可管理的子任务来处理复杂的工作流程。这种任务分解是通过预配置核心系统元素(如条件节点)实现的,这些元素在Sequential Agents中需要手动设置。因此,用户可以更轻松地构建和管理智能体团队。
用户:用户作为系统的起点,提供初始输入或请求。虽然多智能体系统可以设计为处理各种请求,但这些用户请求必须与系统的预期目的相一致。任何超出这一范围的请求可能导致结果不准确、出现意外循环或系统错误。因此,用户交互虽然灵活,但应始终与系统的核心功能保持一致,以确保最佳性能。
Supervisor AI:Supervisor AI作为系统的协调者,负责监督整个工作流程。它分析用户请求,将请求分解为一系列子任务,分配这些子任务给专业的工作智能体,汇总结果,最终将处理后的输出呈现给用户。
Worker AI Team:该团队由专门的AI智能体(或称Workers)组成,每个Worker通过提示消息被指派处理工作流程中的特定任务。这些Workers独立操作,从Supervisor AI处接收指令和数据,执行其专业功能,必要时使用工具,并将结果返回给Supervisor AI。
以Flowise为代表的低代码工具,虽然具有直观的界面,方便进行可视化流程设计,但是在学习曲线、性能问题、管理复杂度和定制化方面存在挑战。目前暂不推荐这类框架。
MetaGPT由国内的一名开发者于2023年6月底发布。
MetaGPT的官方介绍通过一个软件公司示例展示了其功能:它可以将GPT以软件公司的形式运作,协作处理复杂任务。根据演示视频,用户只需提供一个简单的需求,MetaGPT就能利用GPT-4完成最终的产品开发。下图展示了MetaGPT如何通过prompt在内部构建一个完整的软件开发团队。
图六:MetaGPT运行虚拟公司架构
这个示例定义了多种角色,为每个角色配备了目标和prompt模板,指导角色解决特定问题。主要角色包括:
角色 | 目标 | 动作 | 观察的输入 |
产品经理 | 目标是创造一个成功的产品 | 写产品需求文档 | 观察老板是否有新的需求 |
架构师 | 根据产品需求文档设计系统架构 | 设计文档 | 产品经理是否有新需求 |
项目经理 | 目标是提升团队效率 | 根据设计文档完成任务分解 | 观察是否有新的设计任务 |
工程师 | 根据项目经理分解的任务完成代码和评审 | 写代码/代码评审 | 项目经理分解的任务 |
QA工程师 | 根据代码的输出和测试代码输出以及运行结果输出测试方案 | 写测试用例 | 代码结果和代码运行结果 |
总的入口就是老板的需求,接下来各个角色会根据这个原始需求按照上述步骤进行处理。
MetaGPT的一个有趣设定是为每个角色定义一个独立的“进程”运行。每个角色在运行时等待特定输入,一旦接收到相关输入,就会根据目标使用大模型解决问题,并将结果返回系统。系统中的其他角色会在监听到与自己相关的任务输入后,开始执行任务。这种机制与当前的开发流程和组织架构非常相似。
此外,为增强系统的能力,MetaGPT还设置了额外的辅助角色,如搜索角色和prompt分解角色,帮助完成任务。
MetaGPT从软件公司开始,但它的能力并不局限于此。用户可以在自己的场景里使用这个框架来搭建属于自己的应用,比如:数据解释器、调研员、教程文案助手等等。
在MetaGPT看来,可以将智能体想象成环境中的数字人,其中
智能体 = 大语言模型(LLM) + 观察 + 思考 + 行动 + 记忆
这个公式概括了智能体的功能本质。为了理解每个组成部分,让我们将其与人类进行类比:
1. 大语言模型(LLM):LLM作为智能体的“大脑”部分,使其能够处理信息,从交互中学习,做出决策并执行行动。
2. 观察:这是智能体的感知机制,使其能够感知其环境。智能体可能会接收来自另一个智能体的文本消息、来自监视摄像头的视觉数据或来自客户服务录音的音频等一系列信号。这些观察构成了所有后续行动的基础。
3. 思考:思考过程涉及分析观察结果和记忆内容并考虑可能的行动。这是智能体内部的决策过程,其可能由LLM进行驱动。
4. 行动:这些是智能体对其思考和观察的显式响应。行动可以是利用 LLM 生成代码,或是手动预定义的操作,如阅读本地文件。此外,智能体还可以执行使用工具的操作,包括在互联网上搜索天气,使用计算器进行数学计算等。
5. 记忆:智能体的记忆存储过去的经验。这对学习至关重要,因为它允许智能体参考先前的结果并据此调整未来的行动。
多智能体系统可以视为一个智能体社会,其中
多智能体 = 智能体 + 环境 + 标准流程(SOP) + 通信 + 经济
这些组件各自发挥着重要的作用:
1. 智能体:在上面单独定义的基础上,在多智能体系统中的智能体协同工作,每个智能体都具备独特有的LLM、观察、思考、行动和记忆。
2. 环境:环境是智能体生存和互动的公共场所。智能体从环境中观察到重要信息,并发布行动的输出结果以供其他智能体使用。
3. 标准流程(SOP):这些是管理智能体行动和交互的既定程序,确保系统内部的有序和高效运作。例如,在汽车制造的SOP中,一个智能体焊接汽车零件,而另一个安装电缆,保持装配线的有序运作。
4. 通信:通信是智能体之间信息交流的过程。它对于系统内的协作、谈判和竞争至关重要。
5. 经济:这指的是多智能体环境中的价值交换系统,决定资源分配和任务优先级。
这是一个简单的例子,展示了智能体如何工作:
图七:智能体工作流程示意图
在环境中,存在三个智能体Alice、Bob和Charlie,它们相互作用。
他们可以将消息或行动的输出结果发布到环境中,同时也会被其他智能体观察到。
下面将揭示智能体Charlie的内部过程,该过程同样适用于Alice和Bob。
在内部,智能体Charlie具备我们上述所介绍的部分组件,如LLM、观察、思考、行动。Charlie思考和行动的过程可以由LLM驱动,并且还能在行动的过程中使用工具。
Charlie观察来自Alice的相关文件和来自Bob的需求,获取有帮助的记忆,思考如何编写代码,执行写代码的行动,最终发布结果。
Charlie通过将结果发布到环境中以通知Bob。Bob在接收后回复了一句赞美的话。
智能体
使用MetaGPT开发智能体包括两种方式:
1. 使用现成的智能体
2. 开发一个能够执行单一动作或多个动作的智能体
而定义一个智能体又包括两个步骤:定义动作和定义角色,在MetaGPT中,分别通过继承Action和Role类来实现。
多智能体
更复杂的任务通常需要协作和团队合作。在MetaGPT框架下,用户可以通过少量代码实现智能体之间的交互。
总的来说,我们需要三个步骤来建立团队并使其运作:
1. 定义每个角色能够执行的预期动作。
2. 基于标准作业程序(SOP)确保每个角色遵守它。通过使每个角色观察上游的相应输出结果,并为下游发布自己的输出结果,可以实现这一点。
3. 初始化所有角色,创建一个带有环境的智能体团队,并使它们之间能够进行交互。
记忆
在MetaGPT中,Memory类是智能体的记忆的抽象。当初始化时,Role初始化一个Memory对象作为self.rc.memory属性,它将在之后的_observe中存储每个Message,以便后续的检索。简而言之,Role的记忆是一个含有Message的列表。
工具
在 MetaGPT 中创建工具是一个直接的过程,涉及创建自己的函数或类,并将它们放在 metagpt/tools/libs 目录下。
集成开源大模型
MetaGPT支持接入开源大模型。使用推理仓库比如:LLaMA-Factory、FastChat、ollama等进行对应大模型的部署。
为角色和动作配置不同大模型
MetaGPT允许你为团队中的不同Role和Action使用不同的LLM,这极大地增强了团队互动的灵活性和现实性,使得每个Role可以根据其特定的需求和背景,以及每个Action的特点,选择最合适的LLM。通过这种方式,你可以更精细地控制对话的质量和方向,从而创造出更加丰富和真实的交互体验。
MetaGPT与下文将要介绍的CrewAI一样都是基于角色扮演的智能体系统,使用这样的框架在角色定义、上下文管理、任务分配、维护和更新等方面都存在一定挑战。相比于角色扮演系统可能带来的复杂性,agentUniverse的任务编排和管理方式更加直接,减少了定义和维护角色的复杂度,是更合适的选择。
AutoGen由微软于2023年8月与宾夕法尼亚州立大学和华盛顿大学的团队合作发布。
AutoGen旨在构建智能体并促进它们之间的协作以解决任务。类似于PyTorch在深度学习中的作用,AutoGen提供了一个易于使用且灵活的框架,加速智能体的开发和研究。它的主要功能包括:智能体间对话、大语言模型和工具的支持、自动化和人机协作工作流程,以及多智能体对话模式。
简化大模型应用:AutoGen使基于多智能体对话构建下一代大模型应用变得轻松。它简化了复杂大模型工作流程的协调、自动化和优化,提升了大模型的性能并克服了其局限性。
多样对话模式:支持多种对话模式以适应复杂工作流程。开发者可以利用可定制和可交互的智能体,构建涉及对话自主性、智能体数量和对话拓扑结构的多样化对话模式。
系统集合:提供了不同复杂度的系统集合,涵盖各领域应用,展示了对多样化对话模式的支持能力。
增强推理能力:提高了大模型的推理能力,提供API统一、缓存等工具,并支持高级用法,如错误处理、多配置推理和上下文编程。
下图展示了一个使用AutoGen的对话流程示例。
此用例的特点包括:
多智能体对话:AutoGen智能体可以相互沟通以解决任务,实现比单一大模型更复杂和精细的应用。
定制化:智能体可根据应用需求定制,包括选择大模型、允许的人工输入类型和使用的工具。
人工参与:支持无缝的人工参与,用户可以根据需要向智能体提供输入和反馈。
AutoGen支持的会话模式包括:
双智能体聊天模式:这是最简单的模式,涉及两个智能体,通常是一个UserProxyAgent和一个AssistantAgent。
顺序聊天模式:为每个任务分配两个智能体,类似于一连串对话,每次对话都以对前一次对话内容的总结概要开始。
群聊模式:涉及一组智能体,由名为GroupChatManager的特殊“管理器”智能体负责协调何时以及由哪个智能体处理消息。管理器支持以下策略:
自动(Auto)
手动(Manual)
随机(Random)
轮询(Round robin)
嵌套聊天模式:可以将其视为一个“子对话”或处理问题中特定问题的独立流程,然后将子对话的总结返回给发起者。
AutoGen智能体使用工具执行操作。尽管智能体可以利用大模型生成代码,但通常情况下,尤其是当用户已经知道如何处理特定任务(如发送电子邮件)时,可以直接为智能体提供自定义代码(即工具)。例如,如果需要一个智能体来发送电子邮件,可以注册一个send_email函数,并让智能体使用它,这个函数将包括SMTP和其他相关设置。
AutoGen支持丰富的会话模式和管理策略,AutoGen的会话模式包括双智能体聊天、顺序聊天、群聊和嵌套聊天。agentUniverse提供了多智能体协作编排组件“PEER”,相当于一个模式工厂,允许开发者对多智能体协作模式进行开发定制,同时附带了搭建单一智能体的全部关键组件。agentUniverse框架预置了各种已在真实产业中验证有效的多智能体协作模式组件,开发者可以基于本框架轻松构建多智能体应用。两者对比推荐使用agentUniverse。
CrewAI由João Moura于2023年11月发布。
CrewAI的设计目的是让智能体能够扮演不同的角色、分配任务并共享目标,就像现实世界中的团队成员一样。无论是构建智能助手平台、自动化客服团队,还是多智能体研究团队,它都为复杂的多智能体协作提供了坚实的基础。
CrewAI的主要特点包括:
基于角色的智能体设计:定义具备特定角色、目标和背景故事的智能体,让LLM在生成回答前有更丰富的上下文。
灵活的任务管理方式:通过可定制化工具定义任务,并能够动态地分配给不同的智能体。
智能体间的自主委派机制:智能体能够自行决定任务分配并相互协作,这大大提高了解决问题的效率。
流程驱动策略:目前系统只支持按顺序执行任务和按层级组织流程,但正在开发更为复杂的流程管理方式,比如基于共识和自主决策的流程。
保存任务输出:可以将任务产生的数据保存为文件,便于后续使用。
输出解析功能:根据需要,可以将任务输出解析成Pydantic模型或Json格式。
支持开源模型集成:可以利用Open AI或其他开源模型。
CrewAI能够与LangChain生态系统无缝集成。这意味着我们可以利用LangChain提供的工具和大语言模型的集成功能,与CrewAI一起工作。
CrewAI是一个旨在增强智能体协作的最先进框架。这种创新方法通过营造一个让智能体作为一个统一团队更有效地运作的环境,解决了Autogen和ChatDev等现有解决方案的局限性。
作为对比,AutoGen在促进创建协同工作的对话智能体方面发挥了重要作用。然而,当涉及到协调智能体之间的交互时,尤其是对于较大的任务,它会遇到困难。另一方面,ChatDev引入了进程的概念,尽管缺乏灵活性和可扩展性,使其不太适合实际应用。CrewAI克服了这些挑战,并为智能体协作树立了新标准。
在CrewAI的背后,每个智能体在核心上都是基于LangChain的智能体,但它们被赋予了特殊的能力,通过ReActSingleInputOutputParser进行增强。这种特别设计的解析器不仅优化了角色扮演功能,还添加了用于增强上下文关注点的绑定停止词,并通过LangChain的会话摘要记忆机制实现了任务连续性。
由于这些智能体是构建在LangChain之上的,它们自然而然地带来了所谓的“飞轮效应”,最直接的好处就是可以无缝接入所有LangChain提供的工具和工具包,极大地拓宽了应用场景。
目前版本的智能体能够独立自主运作,它们通过内部对话来选择合适的工具。不过,CrewAI计划在未来版本中加入更多样化的流程类型,这将支持在不同的团队配置中进行协作,实现在运行时动态分配任务的能力。
任务从一开始就指定给智能体,并且可以根据需要调整智能体可用的工具,这样既可以灵活地指导智能体完成不同的任务,又避免了给它们分配过多工具造成的负担。
Crew本质上是一个框架,它包含了智能体和任务,并促进了它们按顺序完成工作。在实践中,采用多个独立Crew的模块化部署方式往往更加高效,每个Crew包含少量智能体。这种方式不仅使每个Crew能够达到不同的成果,而且避免了单一大型Crew处理众多任务和智能体时可能出现的瓶颈。
CrewAI与MetaGPT一样都是基于角色扮演的智能体系统,使用这样的框架在角色定义、上下文管理、任务分配、维护和更新等方面都存在一定挑战。相比于角色扮演系统可能带来的复杂性,agentUniverse的任务编排和管理方式更加直接,减少了定义和维护角色的复杂度,是更合适的选择。
llama-agents由LlamaIndex于2024年6月发布。
llama-agents是一个异步优先框架,用于构建、迭代和生产化多智能体系统,涵盖多智能体通信、分布式工具执行、人机协作等功能。在该框架中,每个智能体都是一个服务,持续处理不断传入的任务,并从消息队列中拉取和发布消息。框架的顶层是控制面,负责跟踪任务进度、管理网络中的服务,并通过编排器决定任务的下一步由哪个服务处理。框架整体布局如下图所示。
llama-agents由以下关键组件构成:
消息队列(Message Queue):作为所有服务和控制面的队列,提供将消息发布到命名队列的功能,并将消息分发给消费者。
控制面(Control Plane):控制面是llama-agents系统的中央网关。它跟踪当前的任务以及系统中注册的服务,并持有编排器。
编排器(Orchestrator):编排器模块处理传入的任务,决定将其发送到哪个服务,并处理服务返回的结果。编排器可以是代理式的(通过LLM做决策)、显式的(通过查询管道定义流程)、两者的混合,或者完全自定义的。
服务(Services):服务是实际工作的地方。服务接收某个传入的任务和上下文,处理它,并发布结果。
工具服务(Tool Service):工具服务是一种特殊的服务,用于卸载智能体工具的计算。智能体可以配备一个调用工具服务的元工具。
llama-index的特点之一是其异步特性。目前该框架集成了多种常用消息队列的支持,可以结合实际情况进行选择,也可以根据需求进行扩展。
SimpleMessageQueue:内存消息队列。
KafkaMessageQueue:基于Kafka的消息队列。
RabbitMQMessageQueue:基于RabbitMQ的消息队列。
RedisMessageQueue:基于Redis的消息队列。
在构建复杂智能体应用的过程中,通过引入llama-agents,可以将实现复杂功能的单一智能体分解成更多专业的智能体,使每个智能体更加专注于一个特定的领域或任务,符合分而治之的思想。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-12-21
基于AI智能助理的软件开源组件安全检查
2024-12-21
Llama2024年度要点总结
2024-12-21
重磅! Github Copilot 免费了
2024-12-20
微软开源的 Markitdown 可将任意文件转换为 Markdown 格式,PDF 解析咋样?
2024-12-20
Claude的MCP(模型上下文协议)简介
2024-12-20
历时2年,华人团队力作,震撼开源生成式物理引擎Genesis,可模拟世界万物
2024-12-19
开源!轻量!AI 代码助手插件 Continue 使用体验如何?
2024-12-19
硅基流动 x 深度求索:SiliconCloud首发上线加速版DeepSeek-VL2
2024-05-06
2024-07-25
2024-08-13
2024-06-12
2024-07-11
2024-06-16
2024-07-20
2024-09-20
2024-06-15
2024-07-25
2024-12-20
2024-12-19
2024-11-22
2024-11-19
2024-11-13
2024-11-13
2024-10-07
2024-09-22