随着大模型的发展,我们的主要精力会放在创建复杂的智能体架构来直接实现人类的需求。从纯粹的聊天,发展到RAG类的增强应用,再到Agent智能体应用,现在,我门进入了多智能体MultiAgent的阶段。在Agents领域的投入,将可能带我们真正进入新的工业革命,让AI帮助人类进入下一阶段的文明。微软作为这个时代的重要参与力量,也确实很有诚意的为我们开放着大模型的一些基础建设。AutoGen是由微软开源的MultiAgent框架,可在github上查看它的源码。本文将简单介绍这一框架,希望给读者一些启发。
什么是Multi-Agent?
Multi-Agent(多智能体系统)与Single Agent(单智能体)的关系,可以理解为“单体应用”和“微服务架构应用”的关系。我们当前市面上的大部分Agent还在以Single Agent的思路进行开发,试图通过一个庞大的智能体解决所有事情。而Multi-Agent的思路,则是将智能体以系统的形式编排在一起,以更高效的将智能应用按不同功能进行效率提升和解耦复用。要理解这一点,我门需要先从单智能体出发。
Single Agent是当前大模型市场上的重要应用形式,openAI发布的GPTs就是此类应用的市场。但单智能体应用往往是以某个非常明确的目标为设计的,以LangChain为例,在LangChain中,我们把大模型比做大脑,以为各个部件提供执行指令,通过Chain来调用工具执行,最终实现一个单一目标。但是在LangChain中,我们只有LLM和ChatModel两个概念。这类应用只有一个大脑,指挥所有器官,这使得所有的理解、决策、反馈全都由一个大脑完成,所有的任务由一个人完成。我们会发现,Single Agent在开发时,智能完成特定目标任务,因此在大规模应用中总是会力不从心。
而Multi-Agent则是为实现一个目标的系统创建多个角色,让多个AI智能体像一个Team一样分角色完成不同任务。之所以这样设计,一方面是不同的智能体强项不同,另一方面是从技术上看,一个智能体专注做一件事实现成本更低,且效率和准度可能更高,在最后系统部署上,也可以做到像微服务那样方便部署和复用。当然,更重要的是,随着市场的不断演化,未来我们既可以发布单智能体,也可以发布多智能体系统,这样可以让不同的开发者在不同层面都可以有自己的创造,且形成良好的生态。
上图中,左侧最上方的虚线框内表示的就是我们常见的Single Agent,即单智能体,里面包含了LLM、用户、工具等,但是它们被统一在一个智能体中。这样的设计也并非不行,只是无法应对大规模任务需求。而Multi-Agent架构则是对它进行重新划分,抽象出功能明确的独立Agent之后,再让这些Agent协同起来,分配角色,在系统中不同阶段起到不同作用。
AutoGen内的基本概念
在理解Multi-Agent之后,我门再来看AutoGen。作为微软的重要开源项目,它在概念上并不复杂。首先,AutoGen是基于Multi-Agent架构的,它是完全开源的,也可以在许可协议范围内商用。我相信微软既然已经将其开源,意味着它希望能过在社区范围内赢得更多的开发者使用量,从而建立起它的生态,以在将来有更多的公司基于这一技术架构去实现自己的大模型应用,并且微软也可以卖更多的相关服务。
AutoGen中包含两种Agent一种Manager,即:UserProxyAgent、AssistantAgent、GroupChatManager。AssistantAgent的主要作用是作为中枢大脑提供理解、分析、决策,UserProxyAgent主要作为处理由中枢大脑给出的决策的执行者,GroupChatManager则是能够让多个Agent进行分组的管理者,类似于实际工作中把一个Manager下面的团队分为多个Team的情况。
与LangChain等不同,AutoGen的一个特点是,支持人在整个系统中发挥作用。类似AutoGPT之类的工具过于理想化,试图完全脱离人工来实现自动处理。而AutoGen允许人在整个系统运行过程中作为其中的一个要素参与工作,例如人提出具体的需求,在执行完结果之后,可以对系统的处理结果做出评价,让系统基于该反馈继续迭代出更好的结果。当然,这一特征也是可选的,如果你不需要要时,就可以选择完全自动的模式。
在工作流程上,AutoGen本质上和AutoGPT没有区别,都是靠调度来完成多阶段的任务,最终得到我们需要的结果。但是AutoGen有Multi-Agent的理念加持,在工作流上显得更加清晰和自如。
这张图阐述了用户看到的效果,用户可以参与结果反馈,从而让Agent可以对写出的代码进行微调,直到效果令人满意为止。
这张图阐述了系统内部的过程,通过一系列的流程,按照多个阶段来实现最终的需求。
另外,AutoGen还对LLM的交互进行了优化(主要是基于缓存),以提升整个系统的运行效率,当然,这样也就节省了资源,对于调用第三方AI接口的系统而言,也是省钱的一种设计。AutoGen对编程接口也进行了优化,让开发者可以更便捷的按照上述思路实现自己的想法。
这里有一些他们团队发表的论文,如果你是研究者,可以在这里找到相关论文。
实现多种多样的应用形式
正是因为Multi-Agent这种类似微服务的架构形式,可以让你更快捷的实现各种形式的智能应用。而且由于智能体是可以复用的,你甚至可以利用一套后端,搭建不同的智能应用给到你的用户。
上面是6种官方给的应用形式,包含数学问题解决、编程、检索、决策等等。
结语
本文简单介绍了AutoGen这个基于Multi-Agent架构的智能应用开发框架。不过该框架目前还比较新,官方文档也比较单薄,相信后续还会持续迭代。就我个人而言,已经在LangChain上进行过了开发,随着不断的深入,我们会发现,在大模型开发领域,应用架构、开发模式等等,都慢慢变得越来越完善和成熟,随着业界的发展,会有更多形式的智能应用出现。而且,我们可以想的再深远一点,现在我们面对的大多是软件应用的形态,但实际上,基于Multi-Agent的架构,我们只要做好接口,通过网络的形式控制硬件也未尝不可,例如一些智能硬件的领域,抑或我们可以直接将系统运行在机器人身上,以控制机器人的各个部件。另外,我还想到,既然我们需要通过写代码的形式来基于AutoGen构建智能应用,为什么我们不能写一个AutoGen的应用来专门帮助我们写其他的AutoGen应用呢?这样我们不就可以解放我们的双手,实现更快的智能应用开发了吗。
2024-01-23 2687