
一文说清楚分布式思维状态:由事件驱动的多智能体系统 原创
大语言模型的能力上限止步于聊天机器人、问答系统、翻译等特定语言,要想进一步展现潜力、解决更广泛的问题,就必须想办法让它根据洞察力采取行动。换言之,只有掌握了推理的武器,大语言模型才算真正的完全体。
这种推理智能体在AI研究领域有着悠久历史,他们能够对以往接触过的情况进行概括,再据此处理从未见过的情况。在此基础之上,只要能再建立起多智能体系统,大模型的全面爆发将指日可待。
多智能体系统的力量
这就像组建一支AI梦之队,每位队员都有自己的独特技能,围绕在同一个目标之下协同努力。多智能体系统依靠通信、上下文共享和行动协调的智能体网络来实现这种合作,因此能够解决任何单一智能体或个人都无法处理的复杂挑战。
当然,能力越大,面对的问题也就越困难。
但熟悉大规模团队项目的朋友可以想见,多个智能体必然也存在像人类同事中的沟通不畅、职责重叠和难以朝着共同目标迈进等问题。
为此,本文将深入探讨事件驱动设计(已经在微服务架构中得到验证)如何解决混乱问题,建立起高效、可扩展的多智能体系统。如果您的团队正在探索AI的未来应用,相信以下内容将带来有益的启发。
多智能体协作的挑战
多智能体系统的管理有着诸多独特难题:
- 上下文与数据共享:智能体间必须准确、高效地交换信息,避免重复、丢失或误解。
- 可扩展性与容错性:随着智能体数量的增长,系统必须处理复杂交互,并保证可从故障中优雅恢复。
- 集成复杂性:智能体往往很难与其他系统和工具轻松协作,需要额外设计无缝的互操作性。
- 及时准确的决策:智能体需要根据最新数据做出实时决策,以确保响应能力并避免不良结果。
- 安全与验证:建立护栏对于防止意外操作至关重要,特别是AI模型输出结果具有高随机性,更需要辅以严格的质量保证。
克服这些挑战不仅需要全面协调,还需要为多智能体系统量身定制经过验证的设计模式。接下来,我们将深入研究这些模式,演示如何使用事件驱动设计来建立可扩展、可靠且高效的多智能体架构。
多智能体设计模式
多智能体设计模式负责定义智能体间沟通、协作或竞争模式,从而解决问题的交互结构。通过关注问题域及智能体的交互性质,这些模式能够对各类场景下的自主实体做出协调。
本文主要探讨四大关键模式:协调器-工作者模式、分层智能体模式、黑板模式与基于市场模式。我们将展示如何将这些常见模式转化为事件驱动的分布式系统,在建立数据流应用的同时消除为智能体编排专门设置通信路径的需求。我们将使用Apache Kafka概念模型描述这些模式的事件驱动版本。
协调器-工作者模式
在此模式中,中央协调器将任务分配给工作者智能体并管理其执行。此模式类似于分布式计算中的主工作者模式,可实现高效的任务委派与集中协调,同时允许工作者专注于处理单一特定任务。
协调器-工作者模式
使用数据流,我们可以调整此模式以实现对智能体的事件驱动。Apache Kafka等数据流技术提供基于键的分区策略,协调器可使用键在单一主题的各分区间发送命令消息。之后,工作者智能体充当消费者组,从一个或多个分配区中提取事件以完成工作。接下来,各工作者智能体将输出消息发送至下一主题,由下游系统在主题之内继续使用。
整个模式如下图所示:
事件驱动的协调器-工作者模式
虽然此图看似复杂,但实际大大简化了系统操作。
协调器不再需要管理与工作者智能体的连接;相反,它使用一种键控策略来跨分区进行工作分配。对于需要由有状态工作者智能体作为上游消息进行处理的事件,亦可对序列中的各个事件使用相同的键。
工作者智能体会从一个或多个分区中提取数据,Kafka重新均衡协议可确保各工作者智能体的负载强度基本相当。而一旦工作者发生故障,则可从给定分区重播日志以获取保存的偏移量。协调器不再需要定制逻辑来管理各工作者;相反,它只需指定工作并使用合理的键控策略进行分配。同样的,工作者也继承了Kafka消费者组的功能,因此可利用公共机制实现协调、扩展与故障恢复。
分层智能体模式
在此模式中,各智能体被组织为层,其中较高级别的智能体负责监督或将任务委派给较低级别的智能体。通过将较大的复杂问题拆分成更小、更易于管理的部分,此模式在管理大型复杂问题方面表现尤佳。
分层多智能体模式
为了将分层模式转化为事件驱动的形式,我们在智能体层次中递归应用相同的技术以拆分协调器、工作者模式中的工作,以便各非叶节点均充当其各自子树的协调器。
在以上示例中,Mid Level Agent #1本身是其叶智能体的协调器,整个工作流则在功能层面被封装到由Top Level Agent负责协调的工作者角色当中。
上图所示的分层拓扑可转化为下图:
事件驱动的分层多智能体模式
通过对分层模式进行事件驱动式改造,我们实现了系统异步,大大简化了数据流的概念模型。整个运作体系更具弹性,因为拓扑不再以硬编码形式存在。我们可向同级组中添加或删除智能体,这就避免了额外安排智能体管理此类变更、或在通信路径中造成故障。
黑板模式
黑板模式代表一种共享知识库——各智能体利用“黑板”来发布并检索信息。此模式允许智能体异步协作且无需直接通信。这对于解决需要增量、多智能体贡献的复杂问题特别重要。
黑板模式
我们可以以一种直接的方式调整以模式,将其改造为事件驱动架构。
将黑板作为一个数据流主题,其由工作者生成并使用的消息组成。如果需要,可使用键控策略或有效负载字段来注释事件是由哪个智能体发起。
事件驱动版本如下图所示:
事件驱动型黑板模式
这同样大大简化了操作流程,也减少了在基础设施之外建立定制逻辑的需求。每个工作者只需生成并使用事件,即可与团队内的其他成员协作。
基于市场模式
此模式模拟一个分散的市场,各智能体在其中协商并竞争以分配任务或资源。
例如,解算器或投标智能体可相互交换响应以改进自身响应结果。此过程会重复固定轮数,其中聚合器智能体将根据所有智能体的响应结果编译出最终答案。
基于市场的模式
这是一种重要的简化手段,消除了解算器智能体间原本发生的二次连接,因此避免了在存在大量智能体或出现智能体添加/丢失时连接难以管理的问题。
事件驱动版本如下所示:
事件驱动型基于市场模式
那么,为什么我们坚信这些智能体能够以事件驱动为前提?
协调和通信的通用操作模型
这里的基本设计模式依赖于共享操作模型,以类似微服务的方式实现智能体间的无缝化协调。
该模型的核心是一种共享语言——或者说智能体交换信息、保持一致并有效协作的方式。这种语言和结构化更新均由事件来充当,确保智能体可以解释指令、共享上下文并协调任务。我们可以将其视为系统形式的群聊:保持各智能体同步并顺利集成新的智能体。
下面来看这种共享语言能够让智能体执行哪些操作:
- 解释命令:智能体接收清晰、标准化的指令(如JSON负载),用以指导其操作。
- 共享上下文:各智能体一致广播更新,避免重复并确保相互理解。
- 协调任务:智能体执行与共同目标一致的独立操作,即使在动态或不可预测的环境下也不受影响。
这就是接口的意义所在。我们必须通过设计确保智能体针对事件和命令做出反应,而非各自为战,确保它们能被无缝集成到更大的事件驱动生态系统当中。
为智能体指定接口
这里有一个关键假设,就是各智能体不会预测行动,而仅根据上游事件或命令做出反应。在动态且互联的环境下,我们可以使用三个组件对智能体进行建模:
- 输入:使用事件或命令。
- 处理:应用推理或收集其他数据。
- 输出:向下游消费者发送行动。
这种反应式设计的灵感源自微服务,可使用经过验证的设计模式实现高效、可扩展系统的开发。
从请求/响应到事件驱动的转变
传统上,系统的各个部分是通过请求/响应模型进行交互。这虽然更简单,但可扩展性和实时响应能力的上限始终不高。随着系统增长其会引入延迟和性能瓶颈,因为每项操作都须获得许可,进而拖慢操作速度。
向事件驱动架构的演进,标志着关键性的转变。
在此模型中,智能体被设计为自主发出并监听事件。事件充当一种触发信号,允许智能体直接据此做出响应。这种方式能够让系统更具敏捷性、可扩展性和高度动态性。
事件驱动系统中的智能体接口由它们发出和使用的具体事件来定义,被封装在简单且标准化的消息中,例如JSON负载。这样的结构化设计:
- 简化了智能体理解和响应事件的方式。
- 促进了智能体在不同工作流和系统中的可复用性。
- 实现了与动态、持续发展的环境的无缝集成。
例如,健康监测智能体可在触发阈值时发出警报,无需定制依赖项即可轻松被集成至工作流中。
确保一致性和协调性
为了让分布式系统运作顺畅,让各智能体间保持一致状态同样至关重要。这里就轮到不可变日志出场了——智能体处理的每个事件或命令,都将被记录在永久不可更改的日志当中。作为单一事件来源,日志可确保所有智能体均在相同的上下文中运行,从而实现:
- 可靠的协调和同步。
- 通过可重放事件实现系统弹性,获得故障恢复能力。
- 复杂的消费者模型,其中多个智能体可响应同一事件且不致发生混淆或重叠。
这种方法大大提高了系统可靠性,确保智能体即使在复杂或难以预测的环境下也能协同工作以实现共同目标。
要点总结
多智能体系统正在重新定义AI的可能性。但要充分发挥其潜力,我们必须克服可扩展性、容错性和实时决策等挑战。而事件驱动设计提供了一条清晰的前进道路。
随着AI应用变得愈发复杂,事件驱动的多智能体系统将成为解决复杂现实问题的利器。通过采用这种模型并实现智能体间的标准化通信,我们有望建立起一套具有弹性、效率极高且可灵活适应变化的基础设施,充分发挥架构的效能潜力。
原文标题:A distributed state of mind: Event-driven multi-agent systems,作者:Sean Falconer、Andrew Sellers
