1. 模块化(Modular): MoFA提供原子化的智能体模块,Agent开发者可以在基础模块上进一步定制和再开发模块;memory、planning、tooling、knowledge等智能体服务,本身也可以通过智能体提供。
2. 可组合(Compositional): 如乐高积木玩具,MoFA Agents是可以简单组合的。Agent开发者可以把多个Agent模块连接在一起,组成能够完成更加复杂功能的Super Agents。
3. 可编程(Programmable): MoFA框架面向程序员用户而设计。程序员可以通过Python或XLang等语言动态地构建智能体。
什么是AI 智能体(AI Agent)
AI Agent已经是一个在人工智能领域人尽皆知的概念了。其相关技术迅速发展。关于它的定义尚未成埃落定。我们来看一看不同机构对智能体的定义。
Amazon (https://aws.amazon.com/what-is/ai-agents/):
很多人把Agent一词翻译成为代理。亚马逊则将AI Agent称为人工智能座席。
人工智能座席是一种软件程序,它可以与环境互动,收集数据,并利用数据执行自决任务,以实现预定目标。人类设定目标,但人工智能座席会独立选择实现这些目标所需的最佳行动。例如,联络中心的人工智能座席需要解决客户的疑问。该座席会自动向客户提出不同的问题,查找内部文件中的信息,并给出解决方案。根据客户的回复,它可以决定是自己解决查询,还是将查询转给人工处理。
人工智能座席是基于理性的座席。它们根据自己的感知和数据做出理性决策,以产生最佳性能和结果。人工智能座席通过物理或软件接口感知环境。
例如,机器人座席会收集传感器数据,聊天机器人会将客户的询问作为输入。然后,人工智能座席采用这些数据做出可靠的决定。它通过分析收集到的数据来预测支持预定目标的最佳结果。人工智能座席还利用这些结果制定下一步应采取的行动。例如,自动驾驶汽车会根据来自多个传感器的数据绕过道路上的障碍物。
IBM (https://www.ibm.com/think/topics/ai-agents):
AI Agent是指一种能够自主代表用户或其他系统执行任务的系统或程序,它通过设计工作流程并利用可用工具来完成任务。
AI 代理的功能远不止自然语言处理,还包括决策制定、问题解决、与外部环境交互以及执行操作。
这些代理可以部署在各种应用中,解决企业环境中的复杂任务,从软件设计、IT 自动化到代码生成工具和对话助手等领域。它们利用大语言模型(LLM)的先进自然语言处理技术,逐步理解并响应用户输入,并根据需要调用外部工具。
Microsoft (https://learn.microsoft.com/en-us/azure/cosmos-db/ai-agents):
人工智能(AI)代理旨在为用户执行特定任务、回答问题并自动化流程。这些代理的复杂性差异很大,从简单的聊天机器人、助手,到能够自主运行复杂工作流程的高级 AI 助手(数字或机器人系统形式)。
与独立的大型语言模型(LLM)或基于规则的软件/硬件系统不同,AI 代理具备以下共同特征:
规划:AI 代理能够计划和排序行动以实现特定目标。LLM 的集成革命性地提升了其规划能力。
工具使用:高级 AI 代理可以使用各种工具,如代码执行、搜索和计算功能,以有效完成任务。AI 代理通常通过函数调用使用工具。
感知:AI 代理能够感知并处理来自环境的信息,使其更具互动性和上下文感知能力。这些信息包括视觉、听觉及其他感官数据。
记忆:AI 代理具备记住过去交互(工具使用和感知)和行为(工具使用和规划)的能力。他们存储这些经验,甚至进行自我反思,以指导未来的行动。此记忆功能使代理的性能随时间的推移保持连续性并得到改进。
Andrew Ng的定义更加具体一些,也跟接近于程序员的语言。他用了Workflow, design pattern等与程序员们相对亲切的语言来定义:
他提出,使用Agentic Workflow的概念更加准确。而Agentic Workflow区别于一般Workflow的特点是,它能够自主地思考和迭代改进它的答案。
他认为,Agentic Workflow往往有四种设计模式。反思,工具使用,规划和多智能体写作。
可以看到,以上各家的定义可以说大同小异,而侧重点各有不同,MoFA并不准备给智能体下一个权威性的定义。MoFA认为智能体(Agent)是一个能够完成某个或某些任务的计算机软件程序。在人工智能时代,AI 智能体往往指由大语言模型推理驱动,可以根据周遭环境并作出行动以达致目标的,表现出自主特性的软件程序。
MoFA认为,AI Agent程序执行的任务与大语言模型推理是一致的。因为AI Agents的机制既使用大语言模型推理,又结合了workflow,环境观察和外部信息、知识和工具使用等功能,所以,比大语言模型推理更显强大。而进一步说,在相对较小能力较弱的(开源)LLM上结合外部环境和复杂设计模式的AI智能体,在执行某些特定任务时,有可能达到或超过更大规模的(商业)LLM的能力。
MoFA框架特性
MoFa 与 "魔法" 谐音,也可以理解为 "模法",代表模块化大模型应用的方法。
模法1: AI智能体可嵌套的设计模式(The Nesting Design Patterns of AI Agents)
AI智能体就是有智能特点的计算机软件。随着大语言模型和应用的迅速发展,如面向对象编程有多种设计模式一般,基于LLM的AI智能体的设计也有多种模式。常用的模式包括但不限于:
大语言模型推理模式(LLM Inference):大语言模型本身就是最简单的智能体,根据用户的提示,LLM就可以通过推理给出智能化的响应。
提示定制模式(Customized Prompt):通过对大语言模型的系统提示进行定制化所形成的智能体。
反思模式(Reflection):让Agent 能够审视和修正自己的输出的模式。
工具使用模式(Actor):这种模式赋予 Agent 使用外部工具和资源的能力,如生成代码、调用 API、搜索网页等。
多智能体协作模式:这种模式涉及多个 Agent 扮演不同的专家角色,协同完成任务。通过团队合作,多个 Agent 可以共同解决复杂问题。
一般而言,复杂的智能体设计模式可以通过嵌套在比较简单的设计模式的智能体上构成。所以,在MoFA中,我们提供了一些实现基础的(简单的)智能体设计模式的智能体模版。使用这些模版,应用开发者能够构建原子智能体,并与其它的智能体进行组合,形成功能完善,符合复杂需求的超级智能体。
模法2:智能体核心服务 (Agent Kernel Services)
有如一个传统计算机操作系统为传统软件应用提供系统服务,MoFA为AI智能体提供智能体核心服务,包括记忆和存储(Memory), 任务规划(Planning),知识库和RAG以及行动(Action)等。因此,根据用户不同的需求,这些核心服务可以模块化地提供给任何一个用户Agent。
模法3: 智能体组合(Composition)
组合是将各元素拼接形成新事物的方法和过程,在组合的过程中,不涉及元素的实际结合或变化。组合是松耦合的,具有可逆行和可叠加的特性,比如乐高玩具,可以将形状不同的乐高积木通过组合的方式构建成各式各样的物体。这些物体还可以通过进一步的组合形成更加复杂的物体。组合的物体也可以通过拆解的过程,还原成各元素。
为了更好地理解组合,我们还可以对比一下事物形成的方法,比如:
化合(Compound):化合是多种元素发生了变化和进行了实际的结合,形成一种新的物质的方法和过程。过程中,元素发生了变化,紧密耦合的(我中有你,你中有我),复合过程不具备可逆性和可叠加性。比如蛋糕烘焙,面粉、糖、奶油,鸡蛋等元素,经过一个烘焙的复合过程成为蛋糕。而用几个小蛋糕烘焙成更大蛋糕或将蛋糕中的糖,鸡蛋等元素分解还原出来,是非常困难的。
图:组合,化合和混合的比较
混合(Mix):混合是将多种元素通过物理方式放在一起。虽然混合的过程也存在可逆星河可叠加性,但这种方法,各元素之间并没有发生联系,并没有产生新的事物,而是形成了元素的集合。比如:将苹果和橙子放到了一起,我们得到的是苹果和橙子的集合。
通过MoFA,基于组合的方法和过程,AI应用开发者可以构建AI智能体,也可以将现有的智能体进行创造性的组合,从而形成具有新功能或更加强大的智能体。因为MoFA,智能体的开发变得过程简单,模块化,逻辑清晰,可扩展,可重用。
模法4: 数据流驱动(Dataflow Driven)
与基于工作流(Workflow)的方法不同,MoFa选择基于数据流(Dataflow)的方法。工作流的方法的重心在于对任务的流程和各操作步骤之间业务规则的抽象,而数据流的方法主要是确定任务之间的数据依赖性就可以了。
在各成员智能体之间搭建数据流是MoFA中组合的核心方法。MoFA并不特别关心复杂的业务规则和流程的编排。基本的业务规则在原子智能体模版里就获得了实现,而更复杂的业务规则是成员智能体内部维护,并不暴露在节点和节点之间的流程配置中。流程的编排并不强调管理业务之间顺序,而是数据流动的顺序。正是由于简单和不具“侵入”性的数据流驱动,保障了组合的可叠加和可逆性。在构建复杂应用的过程中,更具备可管理和可调试性。
采用Dataflow而不是Workflow,也是MoFA“模块化”原则和“组合”逻辑的体现。
XLang
文章的最后,更要重点介绍一下XLang开源项目(http://https://xlangfoundation.org/)。XLang是一门专门为AI和IoT应用而设计的高效编程语言。事实上,MoFA团队与XLang核心团队合作构建的xMind框架,使得MoFA成为了一个真正的可编程Agent框架。我们不但可以静态编程生成Agents,我们正努力实现程序动态生成Agents,以及Agents生成Agents等,由于XLang/xMind所带来的Agent可编程能力。关于XLang和MoFA协作的详情,稍后将专文描述。
MoFA将在GOSIM China 2024会议上发布,并进行Super Agent黑客松大赛,欢迎大家来观摩或展示魔法。