多Agent智能体

Multi-Agent

多智能体系统可以视为一个智能体社会,其中:多智能体 = 智能体 + 环境 + 流程(SOP) + 通信 + 经济。 这些组件各自发挥着重要的作用:

  • Agent智能体:在多智能体系统中的智能体协同工作,每个智能体都具备独特有的LLM、观察、思考、行动和记忆。
  • 环境:环境是智能体生存和互动的公共场所。智能体从环境中观察到重要信息,并发布行动的输出结果以供其他智能体使用。
  • 标准流程(SOP):这些是管理智能体行动和交互的既定程序,确保系统内部的有序和高效运作。例如,在汽车制造的SOP中,一个智能体焊接汽车零件,而另一个安装电缆,保持装配线的有序运作。
  • 通信:通信是智能体之间信息交流的过程。它对于系统内的协作、谈判和竞争至关重要。
  • 经济:这指的是多智能体环境中的价值交换系统,决定资源分配和任务优先级

multi-Agent系统可以提供的优势如下:

  • 根据分工原则,具备专业技能和领域知识的单个Agent可以从事特定的任务。
  • 通过分工,Agent处理特定任务的技能日益精进。
  • 将复杂任务分解为多个子任务,可以省去在不同流程之间切换的时间。

最终,多个Agent之间的高效分工可以完成比没有专业化分工时大得多的工作量,从而大大提高整个系统的效率和产出质量。

Multi-Agent环境中Agent之间的交互方式

根据目前的研究,这些交互方式大致可分为以下几类: 取长补短的合作式交互,以及互利共赢的对抗式交互。

在当前基于 LLM multi-Agent系统中,Agent之间的交流主要使用自然语言,这被认为是最自然、最易为人类理解的交互形式。我们将现有的multi-Agent合作应用分为两类:无序合作和有序合作。

合作式交互 —— 无序合作

当系统中有三个或三个以上的Agent时,每个Agent都可以自由地公开表达自己的观点和意见。他们可以提供反馈和建议,以修改与当前任务相关的反应。整个讨论过程不受控制,没有特定的顺序,也没有引入标准化的协作工作流程。我们把这种多Agent合作称为无序合作。 ChatLLM 网络是这一概念的典范代表。它模拟了神经网络中的前向和后向传播过程,将每个Agent视为一个单独的节点。后一层的Agent需要处理来自前面所有Agent的输入,并向前传播。 一个潜在的解决方案是在multi-Agent系统中引入一个专门的协调Agent,负责整合和组织所有Agent的响应,从而更新最终答案。然而,整合大量反馈数据并提取有价值的见解对协调Agent来说是一个巨大的挑战。此外,多数表决也可以作为做出适当决策的有效方法。

合作式交互 —— 有序合作

当系统中的Agent遵守特定规则时,例如按顺序逐一发表意见,下游Agent只需关注上游的产出。这样,任务完成效率就会大大提高,整个讨论过程也会变得井然有序。 CAMEL是双Agent合作系统的成功实施案例。在角色扮演交流框架内,Agent分别扮演人工智能用户(下达指令)和人工智能助手(通过提供具体解决方案来满足请求)的角色。 通过多轮对话,这些Agent自主合作完成用户指令。一些研究人员将双Agent合作的理念融入到单个Agent的操作中,交替使用快速和深思熟虑的思维过程,以在各自的专业领域发挥优势。

此外,AgentVerse 为群体Agent合作构建了一个多功能、多任务测试框架。它可以根据任务的复杂程度组建一个动态适应的Agent团队。

为了提高合作效率,研究人员希望Agent能从人类成功的合作案例中学习。MetaGPT从软件开发中的经典瀑布模型中汲取灵感,将Agent的输入/输出标准化为工程文档。 通过将先进的人类流程管理经验编码到Agent提示中,多个Agent之间的合作变得更有条理。 然而,在 MetaGPT 的实践探索中,我们发现了Multi-Agent合作的潜在威胁。如果不制定相应的规则,多个Agent之间的频繁互动会无限放大轻微的幻觉。

对抗式交互

传统上,合作方法在Multi-Agent系统中得到了广泛探索。不过,研究人员越来越认识到,将博弈论的概念引入系统可以带来更稳健、更高效的行为。 在竞争环境中,Agent可以通过动态互动迅速调整策略,努力选择最有利或最合理的行动来应对其他Agent引起的变化。 在基于非 LLM 的竞争领域,已经有成功的应用。例如,AlphaGo Zero 是一个围棋Agent,它通过自我对弈实现了重大突破。

同样,在基于 LLM 的多Agent系统中,通过竞争、争论和辩论,可以自然而然地促进Agent之间的变革。通过放弃僵化的信念和进行深思熟虑的反省,对抗性互动可以提高回应的质量。

ChatEval建立了一个基于角色扮演的多Agent裁判团队。通过自发的辩论,Agent对 LLM 生成的文本质量进行评估,达到与人类评估员相当的优秀水平。 多Agent对抗系统的性能已显示出相当大的前景。然而,该系统基本上依赖于 LLM 的力量,并面临着一些基本挑战:

  • 在长时间的辩论中,LLM 有限的语境无法处理整个输入。
  • 在多Agent环境中,计算开销大大增加。
  • 多Agent协商可能会收敛到不正确的共识,而所有Agent都坚信其准确性。多Agent系统的发展还远未成熟,也不可行。在适当的时候引入人类向导来弥补Agent的不足,是促进Agent进一步发展的良好选择。

人类与Agent之间的互动

随着Agent能力的增强,人类的参与变得越来越重要,以便有效地指导和监督Agent的行动,确保它们符合人类的要求和目标。 人类的参与可以作为弥补数据不足的重要手段,从而促进更顺利、更安全的协作过程。

人类与Agent之间的互动可分为两种模式:

  1. 不平等互动(即指导者-执行者范式):人类是指令的发布者,而Agent则是执行者,基本上是作为人类的助手参与协作。
  2. 平等互动(即平等伙伴关系范式):Agent达到人类的水平,与人类平等地参与互动。

人类与Agent之间的互动-不平等互动:指导者-执行者范式

最简单的方法是人类全程指导:人类直接提供明确而具体的指令,而Agent的作用是理解人类的自然语言指令,并将其转化为相应的行动。 考虑到语言的交互性,假设人类与Agent之间的对话也是交互式的。借助 LLM,Agent能够以对话的方式与人类互动:Agent对人类的每条指令做出回应,通过交替迭代完善其行动,最终满足人类的要求。

虽然这种方法确实实现了人机交互的目标,但却对人类提出了很高的要求。它需要人类付出大量的努力,在某些任务中,甚至可能需要高水平的专业知识。 为了缓解这一问题,可以授权Agent自主完成任务,而人类只需在特定情况下提供反馈。反馈大致分为两种类型:定量反馈和定性反馈。

人类与Agent之间的互动-平等互动:平等伙伴关系范式

在平等伙伴关系范式中,Agent可以作为富有同情心的交流者,或者人类层面的参与者。Agent还能在其他涉及人际互动的场景中展现人类水平的能力,展示战略制定、谈判等技能。

Agent可以与一个或多个人类合作,确定合作伙伴之间的共享知识,识别哪些信息与决策相关,提出问题并进行推理,以完成分配、规划和调度等任务。 此外,Agent还具有说服能力,能在各种交互场景中动态地影响人类的观点。

人机交互领域的目标是学习和理解人类,根据人类需求开发技术和工具,最终实现人类与Agent之间舒适、高效和安全的交互。目前,该领域在可用性方面已取得重大突破。 未来,人类与Agent的互动将继续以提升用户体验为重点,使Agent能够更好地协助人类完成各个领域更复杂的任务。我们的最终目标不是让Agent变得更加强大,而是让人类更好地掌握Agent

Multi-Agent设计

  1. 分析langgraph的设计
  2. 分析autogen的设计
  3. 如何基于现有的Agent来设计Agent通讯

整体的方案应该是websocket进行通信。 支持多种Agent框架的通用multi-Agent框架:基于配置来驱动整体架构

  • 统一的Agent描述:profile解决了Agent身份信息;基于配置驱动的Agent描述,解析成一张图。
  • 统一的Agent交互框架:分层架构+树形结构;线性结构。路由节点用条件表达式来描述。多个Agent可以构成一张图。
  • 统一的Agent通信语义:Agent之间进行conversation。基于队列的同步通信,可支持RPC通信
  • 可扩展的

Agent与AgentExecutor之间的区别 Agent定制了LLM的表现能力:输入以及输出的格式化 AgentExecutor负责编排Agent的输出以及执行工具

先解决多Agent之间的编排问题

业务场景

需要multi-Agent来解决的场景:

  • Agent同时支持编排、会话、多模态大模型Agent
  • Agent之间的交互
  • 标准的SOP场景是什么?单输入,端到端的自动化
  1. 自动化交互
  2. 人类参与
  3. 高效的协同以及通信效率
  4. 流程清晰

应用场景

Agent有一个是核心的,负责调度其他Agent进行会话。

从调用角度来看,一定存在一个发起的Agent和接收Agent。

规划的任务流向:Tool、其他Agent、Finish

使用langgraph来解决通信问题,以及multi-Agent之间的编排问题。

Agent与另外一个Agent需要进行通信:后期扩展为Agent与多个Agent之间的通信

重点:研究langgraph如何解决通信问题的;langgraph如何编排AgentExecutor(Runnable)

multi-Agent 解决多Agent之间的会话问题,内置:多模态Agent、通用Agent会话,Agent会话。

Agent(任务识别, 通用的LLM) -> Agent(LLM Agent, multi-modal Agent) LLM Agent -> multi-modal Agent, RAG Agent

需要加 条件边。来进行任务分发

重新设计上层Agent的communications

Graph: 组合 CompileGraph -> CompileStateGraph MessageGraph StateGraph:组合 CompiledStateGraph

CompileGraph 继承了 Pregel Channel的实现没看懂

Pregel解决了通信的问题,

multi-Agent设计

Agent编排整体任务。

  1. 定义Agent节点:
  • LLM Agent: 通用的LLM
  • 业务 Agent
  • multi-modal Agent
  1. Agent边:路由规则
    • 条件节点,控制数据的流转
  2. 共享数据:
  3. 流程能够正确退出: