摘要

AutoGen² 是一个开源框架,开发人员可借助该框架,通过多个智能体(Agent)相互对话来完成任务,进而构建基于大型语言模型(LLM)的应用程序。AutoGen 中的智能体具有可定制性和可对话性,能够在多种模式下运行,这些模式融合了大型语言模型、人类输入和工具的不同组合。

利用 AutoGen,开发人员还能灵活定义智能体之间的交互行为。无论是自然语言还是计算机代码,都可用于为不同应用程序设计灵活的对话模式。AutoGen 作为一个通用框架,可支持构建复杂度各异、适配不同大型语言模型能力的各类应用。实证研究表明,该框架在多个示例应用中均展现出良好的有效性,应用领域涵盖数学、编码、问答、运筹学、在线决策、娱乐等。

注:

  1. 通讯作者邮箱:auto-gen@outlook.com
  2. AutoGen 开源项目地址:https://github.com/microsoft/autogen
  3. 本文 arXiv 编号:arXiv:2308.08155v2 [cs.AI] 3 Oct 2023(arXiv 是一个免费分发学术论文的开放获取平台,[cs.AI] 表示该论文属于计算机科学领域下的人工智能方向,3 Oct 2023 为论文发布日期)

1 引言

大型语言模型(LLMs)正逐渐成为开发强大智能体(Agent)的关键基础组件。这类智能体可利用大型语言模型进行推理、使用工具,并能在众多现实任务中适应新的观测结果(Yao 等人,2022;Xi 等人,2023;Wang 等人,2023b)。随着可从大型语言模型中获益的任务不断增多,且任务复杂度持续提升,一种直观的智能体能力扩展方式便是采用多智能体协作模式。已有研究表明,多智能体协作有助于激发发散性思维(Liang 等人,2023)、提升事实准确性与推理能力(Du 等人,2023),并能提供结果验证功能(Wu 等人,2023)。

基于这一思路及已有的初步实践证据,一个值得深入探究的问题应运而生:如何基于多智能体方法,推动跨广泛领域、涵盖不同复杂度的大型语言模型应用开发?

我们的核心思路是通过多智能体对话来实现这一目标。得益于近年来大型语言模型的快速发展,至少有三方面原因可证明该思路在整体可行性与实用性上的优势:

  1. 经过对话优化的大型语言模型(如 GPT-4)具备整合反馈的能力,因此基于大型语言模型的智能体能够通过与其他智能体或人类的对话展开协作。例如,在对话过程中,智能体可提供推理过程、分享观测结果、提出批评意见并进行结果验证。
  2. 单个大型语言模型本身就具备广泛的能力(尤其是在配置合适的提示词与推理参数时),而不同配置的智能体之间的对话,能够以模块化且互补的方式整合这些广泛的能力。
  3. 研究已表明,当复杂任务被拆解为更简单的子任务时,大型语言模型能够更好地完成任务。多智能体对话可通过直观的方式实现这种任务拆解与结果整合。

那么,如何利用上述思路,为那些需要协调多智能体(可能由大型语言模型、人类或具备不同能力的工具提供支持)的各类应用提供支持呢?我们需要一个具备通用抽象能力与高效实现方案的多智能体对话框架,以灵活满足不同应用的需求。要实现这一目标,需解决两个关键问题

  1. 如何设计具备能力、可复用、可定制且能有效参与多智能体协作的独立智能体?
  2. 如何开发一种简洁、统一的接口,以适配各类智能体对话模式?

在实际应用中,不同复杂度的应用可能需要具备特定能力的不同智能体集合,同时也可能需要多样化的对话模式;,例如单轮或多轮对话、不同的人类参与模式,以及静态与动态对话等。此外,开发者可能希望灵活选择使用自然语言或代码来编写智能体交互逻辑。若无法妥善解决上述两个问题,框架的适用范围与通用性将受到极大限制。

尽管目前已有相关研究探索多智能体方法³,但本文仍将介绍 AutoGen——一个通用的多智能体对话框架(如图 1 所示),该框架基于以下新的核心概念构建而成。

³ 详见附录 A 中的详细讨论。

1 可定制且可对话的智能体

AutoGen 采用通用的智能体设计,智能体可利用大型语言模型、人类输入、工具或它们的组合来实现功能。这意味着开发者能够通过选择和配置内置功能的子集,轻松、快速地创建具备不同角色的智能体(例如,负责编写代码、执行代码、整合人类反馈、验证输出结果等的智能体)。同时,智能体的底层架构也可灵活扩展,以支持更多自定义行为

为确保这些智能体适用于多智能体对话场景,所有智能体均具备==“可对话”特性==——它们能够接收、响应消息并生成回复。在配置得当的情况下,一个智能体可自主与其他智能体进行多轮对话,或在特定对话轮次中主动请求人类输入,从而实现人类主导与自动化的结合。这种可对话智能体的设计,既充分利用了最先进大型语言模型在通过对话整合反馈、推进任务进展方面的强大能力,又能以模块化方式整合多个大型语言模型的能力(详见 2.1 节)。

2 对话编程

AutoGen 的一个核心洞见是:将复杂的大型语言模型应用工作流简化并统一为多智能体对话。因此,AutoGen 采用了以智能体间对话为核心的编程范式,我们将其称为==“对话编程”。该范式通过两个主要步骤==简化复杂应用的开发流程:

  1. 定义一组具备特定能力与角色的可对话智能体(如上文所述);
  2. 通过以对话为核心的计算与控制逻辑,编写智能体之间的交互行为

这两个步骤均可通过融合自然语言与编程语言来实现,从而构建出支持多种对话模式与智能体行为的应用。AutoGen 不仅提供了可直接使用的实现方案,还允许开发者对这两个步骤进行轻松扩展与实验(详见 2.2 节)。

此外,AutoGen 还提供了一系列基于可对话智能体与对话编程构建的多智能体应用案例。这些案例展示了 AutoGen 如何轻松支持不同复杂度的应用以及不同能力的大型语言模型。同时,我们还在基准测试集上进行了性能评估,并对新应用开展了初步研究。结果表明,AutoGen 有助于在众多任务中实现优异性能,为大型语言模型的创新应用提供支持,同时降低开发成本(详见 3 节与附录 D)。

2 AutoGen 框架

为降低开发者在不同领域创建复杂大型语言模型(LLM)应用的难度,AutoGen 的核心设计原则之一是:通过多智能体对话简化并整合多智能体工作流。该方法同时旨在最大限度提升已实现智能体的可复用性。本节将介绍 AutoGen 的两个关键概念:可对话智能体(Conversable Agents)与对话编程(Conversation Programming)。

2.1 可对话智能体

在 AutoGen 中,可对话智能体是具有特定角色的实体,能够与其他可对话智能体传递消息以发送和接收信息(例如发起或继续对话)。它会根据已发送和已接收的消息维护内部上下文,并且可通过配置具备一系列能力(例如由大型语言模型、工具或人类输入等提供支持)。智能体能够按照下文所述的预设行为模式开展行动。

由大型语言模型、人类与工具驱动的智能体能力

由于智能体的能力直接影响其处理和响应消息的方式,AutoGen 允许灵活地为智能体赋予各类能力。AutoGen 为智能体提供了多种常见的可组合能力,具体包括:

  1. 大型语言模型(LLMs):基于大型语言模型的智能体可充分利用先进大型语言模型的多种能力,例如角色扮演、基于对话历史的隐式状态推理与任务推进、提供反馈、根据反馈调整行为以及代码编写等。通过创新的提示词技术⁴,这些能力可以不同方式组合,从而提升智能体的技能水平与自主能力。此外,AutoGen 还通过增强型大型语言模型推理层,提供了结果缓存、错误处理、消息模板化等增强型推理功能
  2. 人类(Humans):在许多大型语言模型应用中,人类参与是必要的,甚至是不可或缺的。AutoGen 允许人类通过==“基于人类的智能体”参与智能体对话==,这类智能体可根据配置,在对话的特定轮次中请求人类输入。默认的用户代理智能体(User Proxy Agent)支持可配置的人类参与程度与模式,例如请求人类输入的频率、触发条件,以及人类可选择跳过输入的选项。
  3. 工具(Tools):基于工具的智能体具备通过代码执行或函数调用使用工具的能力。例如,AutoGen 中的默认用户代理智能体能够执行大型语言模型建议的代码,或调用大型语言模型推荐的函数。

⁴ 附录 C 展示了此类创新提示词技术的示例,该技术可增强 AutoGen 中默认基于大型语言模型的辅助智能体(Assistant Agent),使其能在多步骤问题解决过程中与其他智能体进行对话。

智能体的定制与协作

根据应用的特定需求,每个智能体都可配置多种基础底层类型,从而在多智能体对话中展现复杂行为。通过复用或扩展内置智能体,AutoGen 允许开发者轻松创建具备专业能力与特定角色的智能体。图 2 的黄色阴影区域简要展示了 AutoGen 中的内置智能体:ConversableAgent 类是最高层级的智能体抽象,默认情况下可使用大型语言模型、人类输入与工具;AssistantAgent(辅助智能体)和 UserProxyAgent(用户代理智能体)是两个预配置的 ConversableAgent 子类,分别对应两种常见使用模式——作为由大型语言模型支持的人工智能辅助工具,以及作为获取人类输入或执行代码/函数调用(由人类和/或工具支持)的人类代理。

在图 1 右侧的示例中,一个由大型语言模型支持的辅助智能体与一个由工具和人类支持的用户代理智能体协同工作以完成任务:辅助智能体借助大型语言模型生成解决方案,并将其传递给用户代理智能体;随后,用户代理智能体要么请求人类输入,要么执行辅助智能体提供的代码,并将结果作为反馈回传给辅助智能体。

通过支持可自定义且能相互对话的智能体,AutoGen 中的可对话智能体成为了构建应用的实用基础组件。然而,要开发能让智能体有效推进任务进展的应用,开发者还需要能够指定和塑造这些多智能体对话的过程。

2.2 对话编程

为解决上述问题,AutoGen 采用了“对话编程”这一范式。该范式包含两个核心概念:一是计算(computation),即智能体在多智能体对话中为生成响应所采取的行动;二是控制流(control flow),即这些计算行动发生的顺序(或触发条件)。正如我们将在应用部分展示的,通过编写计算与控制流逻辑,能够实现多种灵活的多智能体对话模式

在 AutoGen 中,这些计算以“对话为核心”:智能体采取的行动均与其参与的对话相关且行动的结果会促成后续对话的消息传递(除非满足终止条件)。同样,控制流以“对话为驱动”:参与对话的智能体决定向哪些智能体发送消息,以及计算的执行流程,均取决于智能体间的对话内容。这种范式有助于将复杂工作流直观地理解为智能体的行动执行与智能体间的对话消息传递过程

图 2 对此进行了简单说明:下方子图展示了各个智能体如何执行特定角色的、以对话为核心的计算(例如通过大型语言模型推理调用和代码执行)来生成响应;任务通过对话框中展示的对话逐步推进。中间子图展示了基于对话的控制流:当辅助智能体收到消息时,用户代理智能体通常会将人类输入作为回复发送;若没有人类输入,则会执行辅助智能体消息中的代码。

AutoGen 通过以下设计模式为对话编程提供支持:

  1. 用于自动化智能体对话的统一接口与自动回复机制
    AutoGen 中的智能体具备统一的对话接口,用于执行相应的以对话为核心的计算,包括发送/接收消息的 send/receive 函数,以及根据接收消息采取行动并生成响应的 generate_reply 函数。AutoGen 还引入并默认采用了“智能体自动回复机制”,以实现对话驱动的控制:一旦智能体收到来自另一个智能体的消息,除非满足终止条件,否则它会自动调用 generate_reply 生成回复,并将回复发送回消息发送方。
    AutoGen 提供了基于大型语言模型推理、代码或函数执行、人类输入的内置回复函数。开发者也可注册自定义回复函数,以定制智能体的行为模式(例如在回复发送方智能体前,先与另一个智能体进行对话)。在该机制下,一旦注册了回复函数并初始化对话,对话流会自然形成,智能体对话无需额外控制层(即专门控制对话流的特殊模块)即可自主推进。例如,通过图 2 蓝色阴影区域(标注为“开发者代码”)中的代码,开发者可直接触发智能体间的对话,且对话会如灰色阴影区域(标注为“程序执行”)的对话框所示,自动进行。这种自动回复机制为工作流定义提供了去中心化、模块化且统一的方式。

  2. 通过融合编程语言与自然语言实现控制
    AutoGen 允许在多种控制流管理模式中结合使用编程语言与自然语言:

  • 基于大型语言模型的自然语言控制:在 AutoGen 中,可通过向基于大型语言模型的智能体发送自然语言提示词来控制对话流。例如,AutoGen 内置 AssistantAgent 的默认系统消息会使用自然语言指示智能体:若前一次结果存在错误,则修正错误并重新生成代码;同时引导智能体将输出限制在特定结构内,以便其他基于工具的智能体使用(例如指示智能体在所有任务完成时回复“TERMINATE”以终止程序)。更多自然语言控制的具体示例可参见附录 C。
  • 编程语言控制:在 AutoGen 中,可使用 Python 代码指定终止条件、人类输入模式与工具执行逻辑(例如自动回复的最大轮次)。开发者也可如“对话驱动控制流”代码块(图 2 所示)那样,注册通过 Python 代码编写的自动回复函数,以控制对话流。
  • 自然语言与编程语言间的控制转换:AutoGen 还支持自然语言与编程语言之间灵活的控制转换。通过在自定义回复函数中调用包含特定控制逻辑的大型语言模型推理,可实现从代码控制到自然语言控制的转换;通过大型语言模型建议的函数调用(Eleti 等人,2023),可实现从自然语言控制到代码控制的转换。

在对话编程范式中,可实现多种模式的多智能体对话。除了具有预设流程的静态对话外,AutoGen 还支持多智能体参与的动态对话流,并提供两种通用实现方式:

  1. 自定义 generate_reply 函数:在自定义的 generate_reply 函数中,某个智能体可在进行当前对话的同时,根据当前消息内容与上下文,调用其他智能体参与对话
  2. 函数调用:通过该方式,大型语言模型会根据对话状态决定是否调用特定函数;通过在被调用函数中向其他智能体发送消息,大型语言模型可驱动动态多智能体对话。
    此外,AutoGen 还通过内置的 GroupChatManager(群组对话管理器)支持更复杂的动态群组对话,该管理器可动态选择下一个发言的智能体,并将其响应广播给其他智能体。我们将在第 3 节详细阐述该功能及其应用,并提供已实现的工作系统以展示所有这些不同模式,其中部分模式在图 3 中进行了可视化呈现。

3 AutoGen 的应用案例

为阐明 AutoGen 在简化高性能多智能体应用开发方面的潜力,我们基于 AutoGen 构建了 6 个应用案例(见图 3)。这些案例的选取主要基于以下标准:实际应用相关性(A1、A2、A4、A5、A6)、问题难度与 AutoGen 所赋能的问题解决能力(A1、A2、A3、A4),以及创新潜力(A5、A6)。这些标准共同体现了 AutoGen 在推动大型语言模型(LLM)应用领域发展中的作用。

A1:数学问题求解

数学是一门基础学科,而借助大型语言模型辅助数学问题求解的思路,为众多应用与探索方向开辟了新可能,例如个性化人工智能辅导、人工智能科研辅助等。本节将展示 AutoGen 如何助力开发用于数学问题求解的大型语言模型应用,体现其在支持多种问题求解模式下的优异性能与灵活性。

场景 1:自主问题求解

我们直接复用 AutoGen 的两个内置智能体,构建了一个数学问题自主求解系统。在 MATH 数据集(Hendrycks 等人,2021)上,我们对该系统与多种对比方案进行了评估,对比方案包括开源方法(如 Multi-Agent Debate(Liang 等人,2023)、LangChain ReAct(LangChain,2023)、基础版 GPT-4)以及商业产品(ChatGPT + 代码解释器、ChatGPT + 插件(Wolfram Alpha)),评估结果汇总于图 4a。我们的评估涵盖了 120 道随机选取的 5 级难度题目,以及 MATH 数据集的全部测试集⁵。结果显示,即便不进行任何定制,AutoGen 的内置智能体也能实现优于其他对比方案(包括商业产品)的开箱即用性能。

场景 2:人机协同问题求解

我们还展示了借助 AutoGen 实现的“人机协同”问题求解流程。要在 AutoGen 中融入人类反馈,只需将场景 1 系统中 UserProxyAgent(用户代理智能体)的 == human_input_mode(人类输入模式)设置为“ALWAYS”==(始终启用)即可。实践表明,该系统能有效整合人类输入,解决无人类参与时无法完成的复杂问题。

场景 3:多用户参与问题求解

我们进一步展示了一种创新场景:在问题求解过程中,允许多名人类用户参与对话。针对上述三个场景的实验与案例研究表明,相较于我们测试过的其他方案,AutoGen 能带来更优的性能或全新的使用体验。由于篇幅限制,相关评估细节(包括三个场景的案例研究)可参见附录 D。

⁵ 由于 ChatGPT 需大量人工操作且存在每小时消息数量限制,我们未在完整数据集上对其进行评估;Multi-Agent Debate 与 LangChain ReAct 在小规模测试集中表现不及基础版 GPT-4,因此也未纳入完整数据集评估。

A2:检索增强型代码生成与问答

“检索增强”通过整合外部文档,已成为缓解大型语言模型固有局限性的实用有效方案。本节中,我们基于 AutoGen 构建了一个名为“检索增强型对话(Retrieval-augmented Chat)”的检索增强生成(RAG)系统(Lewis 等人,2020;Parvez 等人,2021)。该系统包含两个智能体:检索增强型用户代理智能体与检索增强型辅助智能体,二者均由 AutoGen 的内置智能体扩展而来。其中,检索增强型用户代理智能体集成了向量数据库(Chroma,2023)与 SentenceTransformers(Reimers & Gurevych,2019),作为上下文检索工具。检索增强型对话的详细工作流程可参见附录 D。

我们在问答与代码生成两个场景下对检索增强型对话进行了评估:

场景 1:自然问答评估

首先,我们在 Natural Questions 数据集(Kwiatkowski 等人,2019)上评估了该系统的自然问答性能,结果如图 4b 所示。此次评估参考现有评估方法⁶,将我们的系统与密集段落检索(DPR)进行对比。借助对话式设计与自然语言控制能力,AutoGen 为该应用引入了一项创新的“交互式检索”功能:当检索到的上下文不包含所需信息时,基于大型语言模型的辅助智能体不会终止对话,而是回复“抱歉,未找到关于……的信息。UPDATE CONTEXT.(更新上下文)”,触发进一步的检索尝试。我们还开展了一项消融实验:当未找到相关信息时,提示辅助智能体回复“我不知道”而非“UPDATE CONTEXT.”,结果同样如图 4b 所示。实验表明,交互式检索机制在整个问答过程中发挥了关键作用。关于该功能的具体示例与结果,可参见附录 D。

场景 2:基于代码库的代码生成

我们进一步展示了检索增强型对话如何基于特定代码库(包含未纳入 GPT-4 训练数据的代码)生成代码。两个场景的评估与演示细节均已收录于附录 D。

⁶ 图 4b 中 DPR 与 GPT-3.5 结合的结果来自(Adlakha 等人,2023)。本文中“GPT-3.5”均指代“GPT-3.5-turbo”。

A3:文本世界环境中的决策制定

本节将展示 AutoGen 如何用于开发涉及交互式或在线决策的高效应用。我们以 ALFWorld 基准测试(Shridhar 等人,2021)为研究对象,该基准包含一系列基于语言的合成交互式决策任务,任务场景设定在家庭环境中。

基于 AutoGen,我们实现了一个双智能体系统来解决 ALFWorld 的任务:系统包含一个由大型语言模型支持的辅助智能体(负责提出任务执行计划),以及一个执行智能体(负责在 ALFWorld 环境中执行动作)。该系统集成了 ReAct 提示策略(Yao 等人,2022),能够实现与 ReAct 相近的性能。

ReAct 与 AutoGen 双智能体系统均面临一个共同挑战:偶尔无法利用关于物理世界的基础常识知识。这一缺陷可能导致系统因重复出错而陷入循环。幸运的是,AutoGen 的模块化设计为解决该问题提供了有效方案:我们引入了一个“基础常识智能体(Grounding Agent)”,当系统出现重复出错的早期迹象时,该智能体可提供关键的常识知识(例如“检查物体前必须先找到并拿起它;使用目标物体前必须先前往其所在位置”)。这一改进显著提升了系统避免陷入错误循环的能力

我们在 ALFWorld 的 134 个未见过的任务上,将该系统的两个版本(双智能体、三智能体)与 GPT-3.5-turbo 及 ReAct⁷ 的性能进行了对比,结果如图 4c 所示。结果表明,引入基础常识智能体后,系统的平均性能提升了 15%。对系统输出的分析显示,基础常识智能体通过在关键节点提供背景常识知识,有效减少了系统坚持错误计划的情况,从而避免了错误循环的产生。关于不同系统执行轨迹的对比示例,可参见附录 D 的图 10。

⁷ ReAct 的结果是通过运行其官方代码(默认设置)获得的。该代码使用 text-davinci-003 作为后端语言模型,不支持 GPT-3.5-turbo 或 GPT-4。

A4:多智能体编码

本节中,我们基于 AutoGen 构建了一个多智能体编码系统,该系统以 OptiGuide(Li 等人,2023a)为基础。OptiGuide 擅长编写代码来解读优化方案并回答用户问题,例如探索供应链决策变更的影响,或理解优化器做出特定选择的原因。图 3 的第二个子图展示了基于 AutoGen 的实现方案,其工作流程如下:

终端用户向“指挥智能体(Commander)”提出问题(如“若禁止从供应商 1 向烘焙厂 2 运输货物,会产生什么影响?”);指挥智能体协调两个辅助智能体——“编写智能体(Writer)”与“安全防护智能体(Safeguard)”——共同解答问题。编写智能体编写代码并将其发送给指挥智能体;指挥智能体收到代码后,会与安全防护智能体协作检查代码安全性;若代码通过安全检查,指挥智能体会使用外部工具(如 Python)执行代码,并请求编写智能体解读执行结果。例如,编写智能体可能会解读为“若禁止从供应商 1 向烘焙厂 2 运输货物,总成本将增加 10.5%”;最终,指挥智能体将该结论反馈给终端用户。

若在某一步骤中出现异常(如安全防护智能体标记安全风险、代码执行失败等),指挥智能体会将问题及调试信息反馈给编写智能体,上述流程可能重复多次,直至用户问题得到解答或超时终止。

借助 AutoGen,OptiGuide 的核心工作流程代码从 430 多行缩减至 100 行,开发效率显著提升。我们在附录 D 中详细对比了 ChatGPT + 代码解释器与基于 AutoGen 的 OptiGuide 的用户体验,结果显示,基于 AutoGen 的 OptiGuide 可节省约 3 倍的用户时间,且平均减少 3 - 5 次用户交互

我们还通过消融实验验证了多智能体架构的必要性:构建了一个“单智能体方案”,由单个智能体同时负责代码编写与安全检查。在包含 100 个编码任务(安全任务与不安全任务各占一半)的数据集上测试后发现(结果如图 4d 所示),多智能体设计使不安全代码识别的 F1 分数提升了 8%(使用 GPT-4 时)和 35%(使用 GPT-3.5-turbo 时)。

A5:动态群组对话

AutoGen 原生支持“动态群组对话”这一通信模式:参与对话的智能体共享同一上下文,以动态方式而非固定顺序与其他智能体交互。动态群组对话依赖实时对话引导智能体间的交互流程,因此非常适合无需严格通信顺序即可高效协作的场景。

在 AutoGen 中,GroupChatManager(群组对话管理器)类充当智能体对话的“指挥者” ,重复执行以下三个步骤:动态选择发言智能体、收集该智能体的回复、将回复广播给其他所有智能体(图 3 - A5)。在动态发言者选择环节,我们采用了==“角色扮演式提示词(role-play style prompt)”==。通过对 12 个手动设计的复杂任务开展初步研究发现,与纯任务导向的提示词相比,角色扮演式提示词在问题求解与发言者选择过程中,能更有效地兼顾对话上下文与角色匹配度,最终实现更高的任务成功率、更少的大型语言模型调用次数(详细结果参见附录 D)。

A6:对话式国际象棋

基于 AutoGen,我们开发了“对话式国际象棋(Conversational Chess)”——一款支持自然语言交互的游戏(见图 3 最后一个子图)。该游戏包含内置的玩家智能体(可由人类或大型语言模型驱动),以及一个第三方“棋盘智能体(Board Agent)”。棋盘智能体负责提供棋盘信息,并依据标准规则验证落子的合法性。

借助 AutoGen,我们为该游戏实现了两项核心功能:

  1. 自然、灵活且具趣味性的游戏动态:得益于 AutoGen 中可定制的智能体设计,对话式国际象棋支持多种游戏模式(AI 对 AI、AI 对人类、人类对人类),且在单场游戏中可无缝切换模式。关于这种趣味游戏动态的示例,可参见附录 D 的图 15。
  2. 落子合法性校验(Grounding):这是保障游戏完整性的关键环节。游戏过程中,棋盘智能体会检查每一步提议落子的合法性;若落子无效,会返回错误信息,提示玩家智能体重新提议合法落子后再继续游戏。这一机制确保只有合法落子能被执行,维持了一致的游戏体验。

我们还开展了一项消融实验:移除棋盘智能体,仅通过提示词(“请确保你与对手的落子均合法”)来约束落子行为。结果显示,缺少棋盘智能体时,非法落子会导致游戏中断。而 AutoGen 的模块化设计提供了灵活性,可根据游戏规则的更新或国际象棋变种规则,快速调整棋盘智能体。该消融实验的完整演示可参见附录 D。

4 讨论

本文介绍了一个名为 AutoGen 的开源库,该库融合了可对话智能体(conversable agents)与对话编程(conversation programming)两种范式。该库采用具备多智能体协作能力的智能体,在智能体间构建了统一的对话接口与自动回复机制。这种设计不仅能充分发挥经对话优化的大语言模型(LLM)的广泛能力,还能适配各类应用场景,从而构建出高效的智能体交互接口。
AutoGen 作为一个通用框架,可用于创建和测试多智能体系统,能轻松满足多种实际需求,例如复用、定制和扩展现有智能体,以及对智能体间的对话流程进行编程设计
如第 3 节详细所示,我们的实验证明该方法具有诸多优势。采用 AutoGen 后,现有应用在性能上(相较于当前最先进的方法)得到显著提升,开发代码量大幅减少,人工操作负担也有所降低。同时,AutoGen 为开发者提供了高度灵活性,例如在应用 A1(场景 3)、A5 和 A6 中,AutoGen 支持多智能体对话采用动态模式,而非固定的双向交互模式;还能让人类以对话方式与多个 AI 智能体协同完成任务。
尽管这些应用场景复杂(多数涉及两个以上智能体或动态多轮智能体协作),但基于 AutoGen 的实现过程依然简洁直观。将任务分配给不同智能体的设计提升了系统的模块化程度,且每个智能体可独立开发、测试和维护,这一特性简化了整体开发流程与代码管理工作。
尽管目前这项研究仍处于早期实验阶段,但它为未来的研究方向开辟了广阔空间。例如,我们可探索如何将现有智能体实现有效集成到多智能体框架中,以及如何在多智能体工作流中平衡自动化与人工控制的关系。随着 AutoGen 的进一步开发与完善,我们还将研究智能体拓扑结构、对话模式等策略,探索何种策略能在优化整体效率等前提下,实现最高效的多智能体对话。
值得注意的是,增加智能体数量或其他自由度虽能为解决更复杂问题提供可能,但也可能引发新的安全挑战,这需要进一步研究和审慎应对。
更多相关讨论(包括 AutoGen 使用指南与未来工作方向)详见附录 B。我们期望 AutoGen 能在开发速度、实验便捷性以及整体有效性与安全性方面,为更多大语言模型应用提供助力,并热烈欢迎广大社区贡献力量。

伦理声明

AutoGen 框架的开发与使用可能涉及若干潜在的伦理问题,具体如下:

  • 隐私与数据保护:该框架允许人类参与智能体之间的对话。确保用户数据和对话内容得到保护,以及开发者采用适当措施保障隐私,是至关重要的。

  • 偏见与公平性:已有研究表明,大型语言模型(LLMs)会表现出其训练数据中存在的偏见(Navigli 等人,2023)。在 AutoGen 框架中使用大型语言模型时,必须解决并缓解智能体对话过程中可能出现的任何偏见。开发者应意识到潜在的偏见问题,并采取措施确保公平性与包容性。

  • 问责与透明度:如未来工作部分所述,由于该框架涉及多个智能体进行对话与协作,建立清晰的问责机制和透明度机制十分重要。用户应能够理解并追踪参与决策过程的智能体的行为,以确保问责到位,并应对任何潜在问题或偏见。

  • 信任与依赖:AutoGen 在通过智能体间对话实现自动化的同时,也依赖人类的理解与智能。需关注这种人机交互对用户体验、用户对人工智能系统的信任及依赖程度所产生的影响。清晰地向用户传达系统的能力与局限性,并开展用户教育,是必不可少的(Cai 等人,2019)。

  • 意外后果:如前所述,在复杂任务中使用多智能体对话与自动化可能会产生意外后果。特别是,允许基于大型语言模型的智能体通过代码执行或函数调用(例如安装软件包)对外部环境进行修改,可能存在风险。开发者应仔细考虑潜在风险,并确保采取适当的防护措施,以防止造成损害或不良后果。

论文附录D(AutoGen-0.pdf)内容总结

附录D作为论文“应用细节(Application Details)”的补充章节,围绕AutoGen框架在6个核心应用(A1-A6)及新增的A7(浏览器交互在线决策)中的具体实现、评估细节、案例分析展开,进一步验证了AutoGen在简化开发、提升性能、支持灵活交互等方面的优势,以下是分应用的详细总结:

A1:数学问题求解(Math Problem Solving)

场景1:自主问题求解(Autonomous Problem Solving)

  • 评估设计:以GPT-4为基础模型,预安装“sympy”包,对比AutoGen与AutoGPT、ChatGPT+插件(Wolfram Alpha)、ChatGPT+代码解释器、LangChain ReAct+Python、Multi-Agent Debate等方案,同时排除BabyAGI、CAMEL、MetaGPT(因开箱即用性能不适用)。
  • 定性评估:选取MATH数据集2道5级难度题目(平方根分数化简、数论问题),每道题测试3次。结果显示AutoGen正确率最高(如第一题3/3、第二题2/3),而其他方案存在代码无打印功能、选择错误结果、循环报错等问题(详见表2)。
  • 定量评估:在120道5级难题(6类各20道,不含几何)和5000道完整测试集上,AutoGen整体正确率达69.48%,显著高于基础版GPT-4的55.18%,且是所有对比方案中问题解决成功率最高的。
  • 用户体验分析:AutoGen与ChatGPT+代码解释器运行流畅无异常;AutoGPT最冗余(含固定THOUGHTS/REASONING等步骤)且代码无打印功能;ChatGPT+插件易陷入循环;LangChain ReAct易出解析错误。

场景2:人机协同问题求解(Human-in-the-loop Problem Solving)

  • 实现方式:将UserProxyAgent的human_input_mode设为“ALWAYS”,通过4步提示(建立距离方程、分情况去绝对值、代入点验证)引导系统解决复杂平面角平分线问题。
  • 评估结果:AutoGen在3次测试中均成功解题;ChatGPT+代码解释器、ChatGPT+插件各成功2次(前者偶不遵循提示,后者最终答案符号有误);AutoGPT 3次全失败(距离方程错误或代码执行问题)。

场景3:多用户问题求解(Multi-User Problem Solving)

  • 系统设计:构建“学生-专家”双用户系统,学生通过“学生代理智能体”与LLM辅助智能体交互,辅助智能体若无法满足需求,会自动调用“请求专家”函数,专家通过“专家代理智能体”与自身辅助智能体协作,将结果反馈给学生辅助智能体以继续对话(见图6)。
  • 开发优势:复用AutoGen内置的UserProxyAgent和AssistantAgent,仅需编写少量“请求专家”函数代码,即可扩展至多专家或多学生场景。

A2:检索增强型代码生成与问答(Retrieval-Augmented Code Generation and QA)

系统架构与工作流程

  • 核心组件:包含“检索增强型用户代理智能体”和“检索增强型辅助智能体”,前者负责文档处理(下载、分块、计算嵌入、存储到向量数据库Chroma)与上下文检索,后者基于LLM生成代码/文本答案(见图7)。
  • 交互逻辑:用户代理检索相关文档块并发送给辅助智能体;辅助智能体生成结果,若无法满足需求则回复“UPDATE CONTEXT”触发重新检索;用户代理执行代码(若有)、更新上下文或终止对话,支持人类主动反馈。

场景1:Natural Questions数据集问答评估

  • 实验设计:使用5332份非冗余文档和6775个查询,对比AutoGen(含交互式检索)、AutoGen无交互式检索(回复“不知道”)与DPR(密集段落检索)。
  • 关键结果:AutoGen的交互式检索功能显著提升性能——当首次检索无相关信息时,辅助智能体触发重新检索,最终在F1和召回率上优于DPR;约19.4%的问题需“UPDATE CONTEXT”,需额外LLM调用(见图8、4b)。

场景2:基于最新API的代码生成

  • 测试案例:需使用FLAML(v1)的Spark并行训练API(2022年12月新增,未纳入GPT-4训练数据),基础GPT-4因无相关知识生成错误代码(虚构“spark=True”参数)。
  • AutoGen优势:通过检索增强型对话提供最新文档上下文,GPT-4成功生成正确代码(设置use_spark=Trueforce_cancel=True)。

A3:文本世界环境中的决策制定(ALFWorld)

系统设计

  • 双智能体方案:“辅助智能体”(LLM支持)提执行计划,“执行智能体”(定制UserProxyAgent)在ALFWorld环境中执行动作并反馈结果,集成ReAct提示策略,性能与ReAct相当。
  • 三智能体方案:新增“基础常识智能体(Grounding Agent)”,当系统出现重复错误(如未拿物体就检查)时,提供物理常识(如“使用物体前需前往其位置”),避免陷入循环(见图9、10)。

评估结果

  • 对比对象:ReAct(text-davinci-003为后端)、双智能体ALFChat、三智能体ALFChat,在134个未见过的ALFWorld任务上测试。
  • 关键发现:三智能体方案平均性能提升15%,在“Pick”“Look”等任务上提升显著(如“Pick”任务成功率从61%→79%);基础常识智能体通过关键节点提供常识,减少错误循环(见表3、4c)。

A4:多智能体编码(OptiGuide)

工作流程优化

  • AutoGen实现:“指挥智能体(Commander)”接收用户问题,协调“编写智能体(Writer)”写代码、“安全防护智能体(Safeguard)”检查安全性,指挥智能体执行代码并让Writer解读结果,异常时反馈调试(见图11)。
  • 开发效率提升:OptiGuide核心代码从430多行缩减至100行,合并“编码者”与“解释者”为单个Writer智能体,维护更简洁。

评估与对比

  • 用户体验对比:在咖啡供应链场景中,AutoGen-based OptiGuide比ChatGPT+代码解释器节省3倍用户时间,减少3-5次用户交互(因后者需手动处理私有依赖如Gurobi、粘贴代码执行)。
  • 多智能体必要性验证:单智能体(同时负责编码与安全检查)在100个任务(安全/不安全各半)中,F1分数比多智能体低8%(GPT-4)和35%(GPT-3.5-turbo),证明多智能体架构在安全性上的优势(见图4d)。

A5:动态群组对话(Dynamic Group Chat)

系统机制

  • 核心组件GroupChatManager负责动态选出发言者、收集回复、广播消息,支持“角色扮演式提示词”选择发言者(而非纯任务提示词)。
  • 实验设计:4智能体系统(用户代理、工程师、评论者、代码执行者),对比双智能体系统、“任务导向提示词”群组对话,在12个复杂任务(如“AAPL股票买卖收益计算并存文件”)上测试。

关键结果

  • 性能优势:角色扮演式提示词的群组对话成功率更高(GPT-4达11/12)、LLM调用次数更少(GPT-3.5-turbo平均5.3次)、无终止失败;双智能体系统易陷入重复对话(见图13、表5、6)。

A6:对话式国际象棋(Conversational Chess)

系统设计

  • 智能体分工:“玩家智能体”(支持人类/LLM驱动,人类输入时提示用户含落子的消息)、“棋盘智能体”(定制回复函数,解析自然语言落子为UCI格式,验证合法性,非法则返回错误)。
  • 核心功能:支持AI-AI、AI-人类、人类-人类模式无缝切换;棋盘智能体保障落子合法,避免游戏中断(见图14、15)。

消融实验

  • 无棋盘智能体方案:仅通过提示词(“确保落子合法”)约束,导致非法落子频繁,游戏中断;而AutoGen的模块化设计可快速调整棋盘智能体适配规则变化(见图16)。

A7:浏览器交互在线决策(MiniWoB++)

新增应用补充

  • 系统设计:“辅助智能体”(内置AssistantAgent)提浏览器操作决策(如点击按钮),“执行智能体”(定制UserProxyAgent)与MiniWoB++环境交互(执行鼠标/键盘动作)、返回反馈(HTML状态、成功/失败)(见图17)。
  • 评估结果:在49个MiniWoB++任务上,AutoGen-based MiniWobChat成功率达52.8%,仅比专门优化的RCI(56.4%)低3.6%;若允许0.1成功率误差,二者在相同数量任务上表现相当(见图18、表7);AutoGPT因扩展性差,无法有效处理复杂规则任务。

附录D核心价值

附录D通过详细的实验设计、案例演示和对比评估,补充验证了AutoGen的核心优势:模块化设计降低开发难度(如新增智能体仅需少量代码)、多智能体协作提升性能与安全性(如A4的安全检查、A3的常识补充)、支持灵活交互模式(人机协同、多用户、动态对话),同时提供了可复现的实验细节与代码优化实例,为AutoGen的实际应用提供了参考。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐