引言
在过去的几年里,大规模预训练模型(简称“大模型”)经历了从百花齐放到逐步成熟的过程。随着模型规模的不断扩大和技术的不断精进,大模型的能力得到了显著提升,特别是在语言理解和生成方面取得了突破性进展。
诚然,大模型的能力足够强大,但它依旧是被动的响应用户的指令,并且生成的效果取决于使用者如何使用它。为了克服这一局限性,研究人员开始探索一种新的范式——智能体(AI agent)。这种智能体不仅能够理解复杂的指令,还能自主地规划行动步骤,甚至在特定任务领域内自我学习和改进。
然而,单一智能体在面对复杂多变的环境时仍存在局限性。例如,在需要跨领域知识整合、多任务协同处理的情况下,单一智能体可能难以同时优化多个目标。为了解决这些问题,研究者们又进一步提出了多智能体(Multi-Agent)。在这种架构中,多个智能体可以相互协作、交流信息、共享资源,共同完成更为复杂和精细的任务。通过这种方式,多智能体能够展现出超越单个智能体的能力,更好地模拟现实世界的交互与决策过程。
本文旨在探讨如何利用阿里云的通义星尘来实现基础的多智能体协同工作。
AI agent
在正式步入主题多智能体之前,我想先聊一下普通智能体,即:AI agent。
最近两年真的是被 AI agent 这个词给刷屏了,几乎每家企业都推出了自己的 AI agent 开发平台,有很多人或许就会疑惑了,Agent 这个东西看起来跟 LLM 也没差得那么远,那为啥最近突然那么火,为什么不叫 LLM-Application 或者其他的词呢?
这里周周还是认真的查阅了很多资料,其实,Agent 是个很古老的术语,甚至可以追溯至亚里士多德和休谟等人的言论。从哲学意义上讲,“代理人”是指具有行动能力的实体,而 “代理” 一词则表示这种能力的行使或体现。而从狭义上讲,“代理”通常是指有意行动的表现;相应地,“代理人” 一词表示拥有欲望、信念、意图和行动能力的实体。需要注意的是,代理人不仅包括人类个体,还包括物理世界和虚拟世界中的其他实体。重要的是,“代理” 的概念涉及个人的自主性,赋予他们行使意志、做出选择和采取行动的能力,而不是被动地对外部刺激做出反应。
所以说,这里起名为AI agent 的原因我想大概是要突出它的自主性吧。
顺带一提的是,现在 AI Agent 似乎也没有完全统一的名称,比如 “AI 代理”、“智能代理”、“智能体” 等等叫法,但是你只要明白是这个东西就OK了。
弄清了名字的由来,接下来我们就来好好的了解一下什么是 AI Agent、为什么我们需要 AI Agent 以及 单一AI Agent 的局限性。
什么是 AI Agent ?
在我去年撰写的一篇文章里,已经谈过了AI Agent的基本概念。时过一年,这些概念随着技术的发展变得更加成熟且应用更为广泛,但也有部分出现了迭代和更新。文章如下:
从千问Agent看AI Agent——我们很强,但还有很长的路要走
AI Agent 是一种能够感知环境、进行决策和执行动作的智能实体。 不同于传统的人工智能, AI Agent 具备通过独立思考、调用工具去逐步完成给定目标的能力。比如,告诉 AI Agent 帮忙下单一份外卖,它就可以直接调用 APP 选择外卖,再调用支付程序下单支付,无需人类去指定每一步的操作。 但苦于数据和算力限制, 想要实现真正智能的 AI Agent 缺乏必要的现实条件。
目前,OpenAI公司的安全系统主管Lilian Weng提出了一个由大模型驱动的自主Agent系统的架构如下:
一个基于大模型的 AI Agent 系统可以拆分为大模型、规划、记忆与工具使用四个组件部分( Agent=LLM + 规划技能 + 记忆 + 工具 )。
在这个架构中,Agent位于中心位置,它通过协同各种组件来处理复杂的任务和决策过程。
规划:Agent需要具备规划(同时也包含决策)能力,以有效地执行复杂任务。这涉及子目标的分解(Subgoal decomposition)、连续的思考(即思维链,Chain of thoughts)、自我反思和批评(Self-critics),以及对过去行动的反思(Reflection)。
记忆: 包含了短期记忆和长期记忆两部分。短期记忆与上下文学习有关,属于提示工程的一部分,而长期记忆涉及信息的长时间保留和检索,通常是通过利用外部向量存储和快速检索。
工具:这包括了Agent可能调用的各种工具,如日历、计算器、代码解释器和搜索功能,以及其他可能的工具。由于大模型一旦完成预训练,其内部能力和知识边界基本固定下来,而且难以拓展,那么这些工具显得异常重要。它们扩展了Agent的能力,使其能够执行超出其核心功能的任务。
执行(或称行动):Agent基于规划和记忆来执行具体的行动。这可能包括与外部世界互动,或者通过工具的调用来完成一个动作(任务)。
围绕着这个架构,一系列的Agent认知框架开始落地。
结合该框架以及吴恩达教授在红杉资本的人工智能峰会(AI Ascent)上谈到的自己对于AI Agent认知框架设计模式的四种分类,包括反思、工具使用、规划、多智能体协作。
反思(Reflection):Agent通过交互学习和反思来优化决策。
工具使用(Tool use):Agent 在这个模式下能调用多种工具来完成任务。
规划(Planning):在规划模式中,Agent 需要规划出一系列行动步骤来达到目标。
多Agent协作(Multiagent collaboration):涉及多个Agent之间的协作。
本文后面也将按照这一框架继续展开讨论。
为什么需要 AI Agent ?
AI Agent拥有一些目前基础大模型和现有RPA都无法企及的好处!
与大模型LLM相比,AI Agent的优势在于能够独立思考并做出行动。
普通大模型与人类之间的交互是基于 prompt 实现的,用户 prompt 是否清晰明确会影响大模型回答的效果,例如 ChatGPT 和这些 Copilot 都需要明确任务才能得到有用的回答。但采用AI Agent 的工作仅需给定一个目标,它就能够针对目标独立思考并做出行动,它会根据给定任务详细拆解出每一步的计划步骤,依靠来自外界的反馈和自主思考,自己给自己创建 prompt,来实现目标。
比如让 通义千问 买一杯咖啡,通义千问 给出的反馈一般类似 “无法购买咖啡,我只是一个文字 AI 助手” 之类的回答。但你要告知基于 通义千问 的 AI Agent 工具让它买一杯咖啡,它会首先拆解如何才能为你购买一杯咖啡并拟定代用某 APP 下单以及支付等若干步骤,然后按照这些步骤调用 APP 选择外卖,再调用支付程序下单支付,过程无需人类去指定每一步操作。这就是 AI Agent 的用武之地,它可以利用外部工具来克服这些限制。
总而言之,AI Agent 就是结合大模型能去自动思考、规划、效验和执行的一个计算体,以完成特定的任务目标,如果把大模型比作大脑,那 AI Agent 可以理解为小脑 + 手脚。
与RPA相比,AI Agent的优势在于能够处理未知环境信息。
RPA 只能在给定的情况条件下,根据程序内预设好的流程来进行工作的处理,在出现大量未知信息、难以预测的环境中时, RPA 是无法进行工作的, AI Agent 则可以通过和环境进行交互,感知信息并做出对应的思考和行动。我们看见的 AI Agent 往往以问答机器人作为交互入口,通过自然语言触发全自动的工作流,中间没有人工介入,人只负责发送指令,并不参与对 AI 结果的反馈。
单一AI Agent 的局限性
综合上文来看,单一AI Agent已经能够在特定任务中表现出色,例如执行高效的数据分析、提供精准的决策支持或是自动化日常操作等,但在面对复杂多变的真实世界场景时,单一智能体的能力就显得有些捉襟见肘了。比如,在处理需要跨领域知识的任务、应对突发事件或是在高度动态的环境中进行优化时,单个智能体往往难以全面掌握所有相关信息并做出最优决策。
跨领域知识的缺乏:单一智能体不具备处理涉及多个领域的复杂问题所需的全面知识。
应对突发事件的能力有限:在面对未曾预料到的情况时,单一智能体可能无法迅速调整策略以作出有效响应。
无法适应高度动态环境:在快速变化的环境中,单一智能体可能难以及时获取并处理新的信息,从而影响决策的质量。
为了更好的解决这些问题,多智能体(Multi-agent)协作成为了一种重要的解决方案被提出。
Multi-agent
Multi-Agent(多智能体) 是指由多个自主个体组成的群体系统,其目标是通过个体间的相互信息通信和交互作用。
在 Multi-Agent 系统架构中,由众多独立自治的智能体代理组成,它们拥有各自独特的领域知识、功能算法和工具资源,可以通过灵活的交互协作,共同完成错综复杂的决策任务。与单一代理系统将所有职责高度集中在一个代理身上不同, Multi-Agent 系统则实现了职责和工作的模块化分工,允许各个代理按照自身的特长和专长,承担不同的子任务角色,进行高度专业化的分工协作。这种方式不仅能够大幅提升整体工作效率,更重要的是赋予了系统更强大的处理复杂多样化任务的能力。
此外, Multi-Agent 系统具有天然的开放性和可扩展性。当系统面临任务需求的不断扩展和功能的持续迭代时,通过引入新的专门代理就可以无缝扩展和升级整体能力,而无需对现有架构进行大规模的重构改造。这与单一代理系统由于其封闭集中式设计,每次功能扩展都需要对整体架构做根本性的修改形成鲜明对比。 Multi-Agent 系统灵活可扩展的特性,使其可以更容易地适应不断变化的复杂业务环境和需求。
Multi-Agent 系统系统固有的分布式特征还赋予了它天然的容错性和健壮性。由于存在多个代理的冗余和备份,即使某些代理发生故障或受到攻击,只要其他代理能够按照事先商定的协作机制继续运转,整个系统仍将保持正常工作,从而最大程度地确保了关键任务的连续性和可靠性,这是单点故障高风险的单一代理系统所无法企及的。
Multi-agent的系统分类和特点
Multi-Agent 系统(MAS) 主要可以分成以下类别:
根据目前主流的分类方法,Multi-Agent主要分为独立型和协作型两种类型。
其中,独立型是指多智能体系统中各智能体之间没有直接的交互或依赖关系,每个智能体都是相对独立地执行任务或解决问题。在这种情况下,每个智能体都可以根据自己的目标和策略进行决策,而不受其他智能体的影响。
协作性是指多智能体系统中各智能体之间存在着一定的合作关系,共同完成某个任务或解决某个问题。在这种情况下,智能体之间需要进行沟通和协调,以实现整体最优的结果。
讲到这里,相信大家对Multi-agent已经具备基本的了解了,下面,我们首先以通义星尘为例,来讲一讲如何实现协作型的多智能体。
基于阿里云通义星尘构建协作型Multi-agent
说到通义星尘大家可能很陌生,甚至有的人都没有听说过,目前也不太清楚阿里下一步的计划,不过通义星尘在官网上的快捷方式确实是被删除掉了。
目前仅能通过百度来搜索到:
有的人就好奇了,这不是一个角色对话智能体吗,专门用来玩角色扮演的,这咋能实现Multi-agent呢?
这里,我就要介绍目前整个通义大模型下面,通义星尘内置的,唯一一个能在线使用的、支持多个AI agent同时相互通讯对话的功能了————群聊。
废话不多说,先上效果图:
上图是我创建的一个IT项目群聊,我的角色是项目经理,群内添加了IT项目需求分析师、IT项目概要设计师以及达芬奇编程(编程助手,没找到通义灵码)。
最终实现的效果是,我只需要告知系统名称,通过群内的自动聊天,就可以得出该系统的模块需求、页面设计方案、页面设计代码初稿等资料,已经算是初步构建了一个高效的IT项目协作模型。
可能大家也都没想到,通义星尘还能这么玩吧!哈哈!
由于IT项目内涉及的分工较多,已经算是比较复杂了,而在此处我也仅使用了提示词来创建角色,并未添加知识库,严格来说这其实连半成品都算不上,足以见得Multi-agent的强大了。
对比去年Create@AI创客松的一等奖作品,大佬是利用阿里云百炼平台打造虚拟童话世界,通过多智能体构建不同的童话故事角色并进行儿童故事创作,实现从文本到语音的全方位故事体验。
假使利用通义星尘,除了语音生成之外,剧情构建、分镜构建、文生图等,都可以在通义星尘中通过一个群聊来搞定!
当然,目前通义星尘确实也存在一些局限性,由于采用的是网页配置的方式,在可自定义程度上是远远比不上百炼平台的,所以在生成的效果上比较靠抽卡,无法形成一套完全稳定的workflow流程,这也算是他的致命缺陷之一了。
下面来详细介绍一下构建思路及方法。
这里我们还是以Create@AI创客松一等奖的项目主题为例,来一步步创建一个Multi-agent儿童故事创作。
在拿到主题的第一个步骤,就是要分析细化并拆分成多个单一功能的角色,也可以理解成拆分为单智能体(AI Agent),每个智能体(AI Agent)负责处理特定的任务或功能。
这里,我们可以借助通义千问来实现一个基础角色的分工划分:
想创建一个儿童故事绘本团队,里面会从头到尾会涉及到哪几个角色分工呢?请给出最小分工,删除不必要的角色。
所以,目前最必要的角色其实只有两个,作者和插画师,而使用者(即我)对应的角色是项目经理。
进入通义星尘界面,点击创建角色:
命名为【儿童绘本故事作者】,头像直接采用通义万相生成:
在详细信息处,我们点击由AI自动生成:
再回到通义千问,接着上面的问题,让其帮忙创建一个儿童故事绘本agent的角色简介:
我想创建一个儿童故事绘本作者agent,请帮我设计出他的详细角色信息。
复制并粘贴回通义星尘的设计界面,如下:
聊天开场白设置为:
你好,我是一位专注于创作高质量儿童故事绘本的专业作者,你有什么灵感需要我帮忙实现的吗?
下面一个比较重要的,是添加对话示例,这里我几乎每次都添加满了,能够对后续聊天时的回复形式起到很好的保持作用。
同样,示例对话也可以依靠通义千问来辅助生成,如下所示:
请帮我以白雪公主和七个小矮人为主题,编写一段儿童故事
回到通义星尘中,我们仅粘贴自己需要的内容即可:
同理,后续继续添加类似对话,直到字数上限:
强制要求处暂时不填,后续根据实际效果再进行填写:
点击记忆,默认保持100轮。
在知识栏中,关闭时间同步,启用实时信息获取,如有知识库还可以上传私有知识库。
在技能处,暂且不勾选能力。
模型及发散度保持默认即可:
此时,点击发布,如有字数超过限制会提示如下:
发布成功后如下图所示,需要等审核之后才可使用:
点击去聊天,选择调试模式:
提问测试,效果保持依旧不错,所以这个Agent暂且不需要进一步调优了。
我们重复上述操作,创建一个儿童绘本故事画师:
在技能处,添加文生图:
编辑插件如下:
创建完成后可以进行测试,这里就碰到了一个奇怪的问题,居然反馈无法生成图片,不过,虽然没有给出现成的图片,倒也是给出了分镜构建:
这里我也意识到了问题,角色的分工处其实少增加了一个分镜构建师,毕竟,光给一大段故事给AI,它是没有办法直接生成一套完整的绘本的。
所以我将其从画师改成了【儿童绘本故事画面构建师】。
回到主页,我们创建一个群聊,群名设置为【儿童绘本创作群】,在群聊信息中,说明工作流顺序:
添加3个角色如下:
编写完成后提交,开始体验:
从上面体验过程可以看出,我们仅需要提供一个主题,在群聊内通过多智能体(Multi-agent)协同工作就可以构建一个完整的故事,并且根据文本生成对应的绘图。
当然,由于网页版调参的限制,文生图主体一致性没有保持的很好,这也是缺陷之一。
但是,不管如何,此处已经初步实现了最基础的协作通讯型Multi-agent。
写在结尾的话
目前,主流的Multi-agent框架其实也很多,比如阿里于24年2月开源的多Agent开发平台 AgentScope、多Agent框架MuAgent等。这些框架为开发者提供了构建复杂多智能体系统的工具和环境,极大地促进了该领域的发展。
本文使用的通义星尘据说也是基于阿里云AgentScope开发完成的,也算是多智能体系统技术在实际应用中的一个典型案例。
目前来看,Multi-agent是未来发展的必然趋势,但周周始终认为它并不是Agent框架的终态,Multi-Agent框架是当前有限的LLM能力背景下的产物,更多还是为了解决当前LLM的能力缺陷,通过LLM多次迭代、弥补一些显而易见的错误不同框架间仍然存在着极高的学习和开发成本。
随着技术的进步,未来必定会出现更加成熟和高效的多智能体系统框架,同时,随着大语言模型本身能力的不断提升,未来的多智能体系统可能会呈现出全新的面貌,更好地服务于人类社会的各种需求。