每周论文3-周四-多个agent构建 LLM 应用程序-AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation

论文题目:AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation

论文链接: https://arxiv.org/pdf/2308.08155.pdf

目录

摘要

1 Introduction

2 The AutoGen Framework

2.1 Conversable Agents

2.2 Conversation Programming

Applications of AutoGen

A1: Math Problem Solving

A2: Retrieval-Augmented Code Generation and Question Answering

A3: Decision Making in Text World Environments

A4: Multi-Agent Coding

 A5: Dynamic Group Chat

A6: Conversational Chess

Discussion


摘要

AutoGen 介绍:

        AutoGen是一个开源框架,允许开发人员通过多个代理构建LLM应用程序,这些代理可以相互交谈以完成任务。

        AutoGen代理是可定制的、可对话的,并且可以在使用llm、人工输入和工具组合的各种模式下操作.

AutoGen优势:

        在AutoGen中,开发人员还可以灵活地定义代理交互行为。自然语言和计算机代码都可以用来为不同的应用程序编写灵活的会话模式

AutoGen应用于不同的案例研究:

        AutoGen作为一个通用框架,用于构建各种复杂性和LLM能力的各种应用程序实证研究证明了该框架在许多示例应用中的有效性,应用领域包括数学、编码、问答、运筹学、在线决策、娱乐等。

1 Introduction

        大型语言模型(llm)正在成为开发强大代理的关键组成部分,这些代理利用llm进行推理、工具使用和适应新观察(Yao等人,2022;Xi et al., 2023;Wang et al., 2023b)在许多现实世界任务中。

        考虑到可以从LLM中受益的不断扩展的任务和不断增长的任务复杂性, 一种直观的扩大代理能力的方法是使用多个合作的代理。

之前诸多工作表明多代理协作激发多种优势,作者提出以下问题:

        how can we facilitate the development of LLM applications that could span a broad spectrum of domains and complexities based on the multi-agent approach? (我们如何促进LLM应用程序的开发,这些应用程序可以基于多智能体方法跨越广泛的领域和复杂性?)

使用多智能体对话来实现它。至少有三个原因证实了它的总体可行性和实用性:

        首先,聊天优化的LLM(例如,GPT-4)显示出整合反馈的能力,LLM代理可以通过彼此或人类的对话进行合作,例如:agent提供并寻求推理、观察、批评和验证的对话。

        其次,因为一个LLM可以展示一个广泛的能力范围(特别是当配置了正确的提示和推理设置时)不同配置的代理之间的对话可以帮助组合这些广泛的LLM功能以模块化和互补的方式。

        第三,LLM已经证明了解决复杂问题的能力当任务被分解成更简单的子任务时。多代理对话可以实现这一点以直观的方式划分和集成。

问题:

        我们如何利用上述见解并支持不同的应用程序,这些应用程序具有协调多个代理的共同要求,并可能得到LLM、人类或表现出不同能力的工具的支持?

需要一个多代理具有通用抽象和有效实现的会话框架,具有满足不同应用程序需求的灵活性。

实现这一目标需要解决两个关键问题:

        (1)怎样才能设计出能够胜任的、可重用的、可定制的和有效的个体代理参与多代理协作?

        (2)如何开发一个简单、统一的界面适应广泛的代理对话模式?

        在实践中,不同复杂性的应用程序可能需要具有特定功能的不同代理集,并且可能需要不同的对话模式,例如单轮或多轮对话、不同的人类参与模式以及静态与动态对话。

        此外,开发人员可能更喜欢程序代理的灵活性用自然语言或代码进行交互。

 作者提出方案解决上述问题:

        AutoGen,广义多代理对话框架,基于以下新概念:

(AutoGen 使用多代理对话支持各种基于 LLM 的应用程序。  (左)AutoGen代理是可对话的、可定制的,并且可以基于llm、工具、人,甚至它们的组合。  (中上)代理可以通过对话来解决任务。 (右)它们可以形成聊天,可能有人类参与。(下-中)框架支持灵活对话模式。)

可定制和可对话的代理:

                AutoGen使用代理的通用设计,可以利用llm、人工输入、工具或它们的组合

                开发人员可以通过选择和配置内置功能的子集,轻松快速地创建具有不同角色的代理(例如,编写代码、执行代码、输入人类反馈、验证输出等的代理)。

                代理的后端也可以很容易地扩展,以允许更多的自定义行为。为了使这些代理适合于多代理对话,每个代理都是可对话的,它们可以接收、反应和响应消息。

                如果配置正确,代理可以自主地与其他代理进行多轮对话,或者在某些轮次中请求人工输入,从而实现人工代理和自动化。

                可对话的代理设计利用了最先进的LLM在通过聊天获取反馈和取得进展方面的强大能力,并且还允许以模块化方式组合LLM的功能

会话式程序设计

         AutoGen的一个基本见解是将复杂的LLM应用程序工作流简化并统一为多代理对话。所以AutoGen采用了一种以这些智能体间对话为中心的编程范式

        这种范例称为对话编程,它通过两个主要步骤简化了复杂应用程序的开发:

        1. 定义一组具有特定功能和角色的可对话代理。

        2. 通过以对话为中心的计算和控制对代理之间的交互行为进行编程。

        这两个步骤都可以通过自然语言和编程语言的融合来实现,从而构建具有广泛对话模式和代理行为的应用程序

        AutoGen 还提供了一系列使用对话代理和对话编程创建的多代理应用程序。

        这些应用程序演示了AutoGen如何轻松支持各种复杂性的应用程序和各种能力的LLM。

2 The AutoGen Framework

        为了减少开发人员跨不同领域创建复杂的 LLM 应用程序所需的工作量,AutoGen 的核心设计原则是使用多代理对话来简化和整合多代理工作流程

2.1 Conversable Agents

        可对话代理是具有特定角色的实体,可以传递消息以向其他可对话代理发送信息以及从其他可对话代理接收信息,例如,开始或继续对话。

        它根据发送和接收的消息维护其内部上下文,并且可以配置为拥有一组功能,例如,由LLM、工具或人工输入等启用。代理可以根据接下来描述的编程行为模式进行操作。

Agent capabilities powered by LLMs, humans, and tools.

        由于代理的功能直接影响其处理和响应消息的方式,因此 AutoGen 可以灵活地赋予其代理各种功能

        LLM。LLM 支持的代理利用高级 LLM 的许多功能,例如角色扮演、隐式状态推理和根据对话历史记录取得进展、提供反馈、根据反馈进行调整和编码。这些功能可以通过新颖的prompt技术以不同的方式组合起来,以提高代理的技能和自主权。AutoGen还通过增强的LLM推理层提供增强的LLM推理功能,如结果缓存、错误处理、消息模板等。

        人类。在许多LLM申请中,人的参与是需要的,甚至是必不可少的。 AutoGen 允许人类通过人工支持的代理参与代理对话,这可以根据代理配置在对话的某些轮次中征求人类输入。默认用户代理允许可配置的人类参与级别和模式,例如请求人类输入的频率和条件,包括人类跳过提供输入的选项。        

        工具。工具支持的代理能够通过代码执行或函数执行来执行工具。例如,AutoGen 中的默认用户代理能够执行 LLM 建议的代码,或进行 LLM 建议的函数调用

代理定制与合作:

        根据特定于应用程序的需求,每个代理可以配置为具有基本后端类型的混合,以显示多代理对话中的复杂行为。

        AutoGen 允许通过重用或扩展内置代理来轻松创建具有专门功能和角色的代理。图2的黄色阴影区域提供了内置的草图。


(图2: 最上面的子图说明了AutoGen提供的内置代理,它们具有统一的会话接口并可定制。

        中间子图显示了使用 AutoGen 开发具有自定义回复功能的双代理系统的示例。

        底部子图说明了在程序执行期间从两个代理系统生成的自动代理聊天结果。)

        ConversableAgent 类是最高级别的代理抽象,默认情况下,可以使用 LLM、人类和工具。

        AssistantAgent UserProxyAgent 是两个预先配置的 ConversableAgent 子类,每个子类代表一种常见的使用模式,即充当 AI 助手(由 LLM 支持)并充当人类代理来请求人类输入或执行代码/函数调用(由 LLM 人和/或工具支持)。

        案例展示:

                在图 1 右侧的示例中,LLM 支持的助理代理AssistantAgent)和工具,人支持的用户代理UserProxyAgent)被部署在一起来处理任务。

                在这里,助理代理在 LLM 的帮助下生成一个解决方案,并将该解决方案传递给用户代理。然后,用户代理请求人工输入或执行助理的代码,并将结果作为反馈传递给助理代理。

                通过允许自定义代理可以相互对话,AutoGen 中的可对话代理可以作为有用的构建块。

        然而,为了开发代理在任务上取得有意义进展的应用程序,开发人员还需要能够指定和塑造这些多代理对话

2.2 Conversation Programming

考虑两个概念:

        computation– 代理在多代理对话中计算响应所采取的操作。

        control flow– 这些计算发生的顺序(或条件)。

computations are conversation-centric

        代理采取与其所涉及的对话相关的操作,并且其操作导致后续对话的消息传递(除非满足终止条件)。

control flow is conversation-driven

        参与代理关于向哪些代理发送消息的决定,以及计算过程是代理间对话的函数

        这种范例有助于直观地推理复杂的工作流程,如代理采取行动和代理之间的对话消息传递

例子:(框架图解释)

        图2 底部子图显示了各个代理如何执行特定于角色的、以对话为中心的计算来生成响应(例如,通过 LLM 推理调用和代码执行)。

        任务通过对话框中显示的对话进行。

        中间的子图演示了基于会话的控制流程。当助理收到消息时,用户代理通常会发送人工输入作为回复。如果没有输入,而是执行助手消息中的任何代码。

AutoGen 采用以下设计模式来促进对话编程:

        用于自动代理聊天的统一接口和自动回复机制。

        AutoGen 中的代理具有统一的会话接口,用于执行相应的以会话为中心的计算,包括用于发送/接收消息的发送/接收函数,以及用于根据接收到的消息采取操作并生成响应的生成回复函数

        AutoGen还引入并默认采用代理自动回复机制来实现会话驱动的控制:一旦代理收到来自另一个代理的消息,它会自动调用生成回复并将回复发送回发送者,除非满足终止条件。 AutoGen 提供基于 LLM 推理、代码或函数执行或人工输入的内置回复功能。人们还可以注册自定义回复功能来自定义代理的行为模式,例如,在回复发送者代理之前与另一代理聊天。在这种机制下,一旦注册了回复函数,并且初始化了会话,自然会引发会话流程,从而代理会话自然地进行,而不需要任何额外的控制平面,即控制会话流程的特殊模块。

采用程序设计与自然语言的融合控制。

        Naturallanguage control via LLMs.

        例如,AutoGen中内置的AssistantAgent的默认系统消息使用自然语言指示代理修复错误,如果先前的结果表明存在错误,则重新生成代码。

        它还指导代理将LLM输出限制为特定的结构,使其他工具支持的代理更容易使用它。例如,当所有任务完成时,指示代理回复“TERMINATE”以终止程序。

 (图5:AutoGen (v0.1.1)中内置助理代理的默认系统消息。这是一个通过自然语言进行对话编程的例子。它包含不同类型的指令,包括角色扮演、控制流程、输出限制、方便自动化)

Programming-language control.
        Python代码可以用来指定终止条件,人工输入模式和工具执行逻辑,例如,自动回复的最大数量。
        
        还可以注册程序的自动回复函数,用Python代码控制会话流,如图2中标识为“ConversationDriven control flow”的代码块所示。
        
Control transition between natural and programming language.
        AutoGen还支持在 自然语言和编程语言之间灵活的控制转换。通过调用在自定义 回复函数中包含某些控制逻辑的LLM推理,可以实现从代码到自然语言控制的转换; 或者通过llm提出的函数调用从自然语言过渡到代码控制。
动态对话:
         自定义生成回复功能: 一个代理可以保持当前对话,同时根据 当前消息和上下文的内容实现与其他代理的对话
         函数调用: LLM根据对话状态决定是否调用特定函数。通过消息传递在调用函数时,LLM可以驱动动态多代理对话。
        
                AutoGen通过内置的GroupChatManager支持更复杂的动态群聊, 可以动态选择下一个发言者,然后广播其响应到其他代理。提供实现的工作系统来展示所有这些不同的模式,其中一些如图3所示。

(图3 使用AutoGen构建的六个不同应用程序示例。他们的谈话模式展示AutoGen的灵活性和实力。)

Applications of AutoGen

作者演示使用AutoGen的六个应用程序(参见图3),以说明它在简化高性能多代理应用程序开发方面的潜力。

        这些应用程序的选择基于它们的现实相关性(A1, A2, A4, A5, A6), AutoGen支持的问题难度和解决能力(A1, A2, A3, A4)以及创新潜力(A5, A6)。

A1: Math Problem Solving

        数学是一门基础学科,利用LLM来帮助解决数学问题的前景为探索开辟了大量新的应用和途径,包括个性化的人工智能辅导、人工智能研究协助等。

(Scenario 1) 

        通过直接重用 AutoGen 的两个内置代理来构建一个用于自主数学问题解决的系统。评估了AutoGen系统和几种替代方法,包括开源方法,如

        Multi-Agent Debate (我们修改了多智能体辩论的代码来执行评估。默认有三个代理:肯定代理、否定代理和主持人);

        LangChain ReAct (使用LangChain的Python代理。为了处理解析错误,设置“handle parsing error=True”,并使用默认的零样本 ReAct 提示);

        vanilla GPT-4 和商业产品 ChatGPT + Code Interpreter (OpenAI Web 客户端的最新功能。请注意,ChatGPT 的上述两个高级功能需要付费订阅才能访问,并且是最具竞争力的商业系统);

        和 ChatGPT + 插件 (在OpenAI web客户端中启用Wolfram Alpha插件(一个数学计算引擎)),

        在 MATH(Hendrycks 等人,2021)数据集上,并总结图 4a 中的结果。

        对120个随机选择的5级问题和来自MATH的整个测试数据集进行评估 。结果表明,与替代方法(甚至包括商业方法)相比,AutoGen 的内置代理已经产生了更好的开箱即用性能。

        通过将目的设置为“解决数学问题”来初始化 AutoGPT,从而生成具有自动生成目标的“MathSolverGPT”

        对于定性评估,利用 MATH 数据集中的两个 5 级问题,每个问题测试三次。第一个问题涉及简化平方根分数,第二个问题涉及解决一个数论问题。正确性和失败的原因如下表:

(在自主解决问题的场景中对 MATH 数据集中的两个数学问题进行定性评估。每个基于LLM的系统针对每个问题都进行了三次测试。该表报告了问题解决的正确性并总结了失败的原因)

定量评估:

        为了定量评估,在 MATH 数据集上进行了两组实验来评估这些系统的正确性:(1)实验涉及 120 个 5 级(最具挑战性的级别)问题,其中包括 6 个类别的 20 个问题,不包括几何,(2) 对整个测试集进行实验,其中包括 5000 个问题。将 AutoGPT 排除在本次评估之外,因为它无法访问代码执行的结果,并且不能解决定性评估中的任何问题。对整个数据集的分析表明,AutoGen 的总体准确率为 69.48%,而 GPT-4 的准确率为 55.18%。从这些评估中,对这些系统的问题解决成功率和用户体验有以下观察: 

        • 问题解决成功率:定量评估结果表明,在所有比较方法中,AutoGen 可以帮助实现最高的问题解决成功率。定性评估阐明了几种替代方法的常见失败原因。 ChatGPT+Code Interpreter 未能解决第二个问题,而 ChatGPT+Plugin 则很难解决这两个问题。由于代码执行问题,AutoGPT 在这两个问题上都失败了。 LangChain 代理在这两个问题上也都失败了,生成的代码在所有试验中都导致错误的答案

        基于定性评估,分析了有关响应的详细程度以及基于 LLM 的系统在没有意外行为的情况下运行的能力的用户体验。 ChatGPT+Plugin 是最不冗长的,主要是因为 Wolfram 查询比 Python 代码短得多。 AutoGen、ChatGPT+Code Interpreter 和 LangChain 表现出类似的冗长,尽管 LangChain 由于更多的代码执行错误而稍微冗长一些。 AutoGPT 是最冗长的系统,因为它每次都会在回复中包含诸如想法、推理和计划等预定义步骤。总体而言,AutoGen 和 ChatGPT+Code Interpreter 运行顺利,没有异常。我们注意到其他基于 LLM 的系统出现了可能影响用户体验的不良行为:AutoGPT 始终输出没有 print' 语句的代码,并且无法纠正此问题,需要用户手动运行它们;使用 Wolfram Alpha 插件的 ChatGPT 有可能陷入必须手动停止的循环; Langchain ReAct 可能会因解析错误而退出,因此需要传递“处理解析错误”参数。

(Scenario 2) 

        在 AutoGen 的帮助下展示人机交互的问题解决流程。为了将人类反馈与 AutoGen 结合起来,只需在场景 1 中的系统 UserProxyAgent 中设置人类输入模式=‘ALWAYS’。证明该系统可以有效地结合人类输入来解决没有人类就无法解决的挑战性问题。

        选择了一个具有挑战性的问题,在三个试验中这些系统都无法自主解决。遵循下面概述的流程,为所有比较方法提供人工输入:

        观察到 AutoGen 在所有三个试验中始终如一地解决了这个问题。 ChatGPT+Code Interpreter 和 ChatGPT+Plugin 在 3 次尝试中成功解决了该问题,而 AutoGPT 在 3 次尝试中均未能解决该问题。在其不成功的尝试中,ChatGPT+代码解释器未能遵循人类提示。在失败的试验中,ChatGPT+Plugin 产生了几乎正确的解决方案,但最终答案存在符号差异。 AutoGPT 在任何试验中都无法产生正确的解决方案。在一次试验中,它得出了一个不正确的距离方程。在另外两次试验中,由于代码执行错误,最终答案不正确。 

(Scenario 3)

        演示一个新颖的场景,其中多个人类用户可以在解决问题的过程中参与对话。作者针对这些场景的实验和案例研究表明,与其他解决方案相比,AutoGen 可以实现更好的性能或新的体验。

A2: Retrieval-Augmented Code Generation and Question Answering

        检索增强已成为一种实用且有效的方法,通过合并外部文档来减轻法学硕士的内在局限性。在本节中,作者使用 AutoGen 构建检索增强生成(RAG)系统

        该系统由两个代理组成:检索增强的用户代理代理和检索增强的助理代理,这两个代理都是从 AutoGen 的内置代理扩展而来的。

        检索增强用户代理包括一个矢量数据库。

问答和代码生成场景。

问答场景:

        首先对 Natural Questions 数据集(Kwiatkowski et al., 2019)进行自然问答评估,并在图 4b 中报告结果。

        利用对话式设计和自然语言控制,AutoGen 在此应用程序中引入了一种新颖的交互式检索功能:每当检索到的上下文不包含信息时,基于 LLM 的助手不会终止,而是回复“抱歉,我找不到任何信息”关于……更新上下文。”这将调用更多的检索尝试。作者进行了一项消融研究,其中我们提示助理代理说“我不知道”而不是“更新上下文”。如果没有找到相关信息,则报告结果。 

代码生成场景:

        作者进一步演示了检索增强聊天如何帮助基于给定代码库生成代码,该代码库包含 GPT-4 训练数据中未包含的代码。

        利用代码库中的最新 API 生成代码。在这种情况下,问题是“如何使用 FLAML 执行分类任务并使用 Spark 进行并行训练?训练 30 秒,如果达到时间限制,则强制取消作业。”。 FLAML (v1)(Wang et al., 2021)是一个开源 Python 库,专为高效 AutoML 和调优而设计。它于2020年12月开源,并包含在GPT-4的训练数据中。然而,该问题需要使用 Spark 相关的 API,这些 API 于 2022 年 12 月添加,并且不包含在 GPT-4 训练数据中。因此,原始的 GPT-4 模型由于缺乏 Spark 相关 API 的知识,无法生成正确的代码。相反,它错误地创建了一个不存在的参数“spark”,并将其设置为“True”。尽管如此,通过检索增强聊天,提供了最新的参考文档作为上下文。然后,GPT-4 通过将 use Spark 和强制取消设置为 True 来生成正确的代码块。

A3: Decision Making in Text World Environments

        演示如何使用 AutoGen 开发涉及交互式或在线决策的有效应用程序。使用 ALFWorld(Shridhar 等人,2021)基准进行研究,其中包括家庭环境中基于合成语言的交互式决策任务的多样化集合

        实现了一个双代理系统来解决来自 ALFWorld 的任务。它由一个由 LLM 支持的助理代理(负责建议执行任务的计划)和一个执行代理(负责在 ALFWorld 环境中执行操作)组成。该系统集成了 ReAct 提示(Yao et al., 2022),并且能够实现类似的性能。 ReAct 和基于 AutoGen 的双智能体系统遇到的一个常见挑战是它们偶尔无法利用有关物理世界的基本常识知识。

        这种缺陷可能会导致系统因重复错误而陷入循环。幸运的是,AutoGen 的模块化设计能够有效地解决这个问题:通过 AutoGen,能够引入grounding代理,它提供了重要的常识知识,例如“您必须找到并拿走物体,然后才能检查它。您必须先到达目标对象所在的位置,然后才能使用它。”——每当系统出现重复错误的早期迹象时。它显着增强了系统避免陷入错误循环的能力。作者将系统的两个变体与 GPT-3.5-turbo 和 ReAct7 在 ALFWorld 的 134 个未见过的任务上的任务解决性能进行比较,并在图 4c 中报告结果。结果表明,引入grounding平均可以带来 15% 的性能提升。在检查系统的输出时,观察到grounding代理通过在正确的时刻提供背景常识知识,显着减轻了系统坚持有缺陷的计划的倾向,从而避免了错误循环的产生。

        图 10 举例说明了三代理设计如何消除故障案例的一个根本原因。大多数任务涉及拿起一个物体,然后用它执行特定的操作(例如,找到一个花瓶并将其放在橱柜上)。如果没有grounding,助理经常会将找到物体与拿走物体混为一谈,如图 10a) 所示。这导致了“挑选”和“查看”类型任务中的大多数失败案例。通过引入grounding代理,助理可以打破这个循环并成功完成任务 。

 (图 10:两种设计结果的比较:(a) 由助手和执行者组成的双智能体设计,(b) 添加了充当知识源的基础智能体的三智能体设计。为了简单起见,省略了上下文中的示例和部分探索轨迹,只显示导致尝试失败/成功的部分。)

A4: Multi-Agent Coding

        使用 AutoGen 构建基于 OptiGuide 的多智能体编码系统(Li et al., 2023a),该系统擅长编写代码来解释优化解决方案并回答用户问题,例如探索更改供应链决策的影响或了解优化器为何做出特定选择。图 3 的第二个子图显示了基于 AutoGen 的实现。

        工作流程如下:用户发送问题,例如“如果我们禁止从供应商 1 向烘焙厂 2 发货怎么办?”给指挥官特工。

        指挥官与包括作家和保护者在内的两名助理特工协调来回答这个问题。编写器将编写代码并将代码发送给指挥官。指挥官收到代码后,通过Safeguard检查代码安全;

        如果清除,Commander将使用外部工具(例如Python)执行代码,并请求Writer解释执行结果。

        例如,作家可能会说“如果我们禁止从供应商 1 向烘焙厂 2 发货,总成本将增加 10.5%。”然后指挥官向用户提供这个结论性答案。如果在特定步骤中出现异常,例如 Safeguard 发出安全红旗,Commander 会将问题重定向回带有调试信息的 Writer。该过程可能会重复多次,直到用户的问题得到解答或超时

        借助 AutoGen,OptiGuide 的核心工作流程代码从 430 多行减少到 100 行,从而显着提高了生产力。图 4d 中报告的评估结果表明,多智能体设计将识别不安全代码的 F-1 分数提高了 8%(使用 GPT-4)和 35%(使用 GPT-3.5-turbo)。

 A5: Dynamic Group Chat

        AutoGen 为动态群聊通信模式提供本机支持,其中参与的代理共享相同的上下文并以动态方式与其他人交谈,而不是遵循预定义的顺序。动态群聊依靠持续的对话来指导座席之间的交互流程。这些使得动态群聊非常适合无需严格通信顺序的协作的情况。在 AutoGen 中,GroupChatManager 类充当代理之间对话的指挥者,并重复以下三个步骤:

        动态选择发言者、收集所选发言者的响应以及广播消息(图 3-A5)。

        对于动态发言人选择组件,使用角色扮演风格的提示。

        通过对 12 项手动制作的复杂任务的试点研究,作者观察到,与纯粹基于任务的提示相比,利用角色扮演提示通常可以在解决问题时更有效地考虑对话上下文和角色对齐和演讲者选择过程。因此,这会带来更高的成功率和更少的LLM呼叫。

A6: Conversational Chess

        使用 AutoGen们开发了 Conversational Chess,这是一种自然语言界面游戏,如图 3 的最后一个子图所示。它具有内置的玩家代理(可以是人类或 LLM),以及提供信息的第三方棋盘代理并根据标准规则验证动作

        通过 AutoGen,实现了两个基本功能:(1) 自然、灵活且引人入胜的游戏动态,由 AutoGen 中的可定制代理设计实现。对话象棋支持一系列游戏模式,包括人工智能-人工智能、人工智能-人类和人类-人类,并在单场游戏中在这些模式之间无缝切换。这些有趣的游戏动态的说明性示例可以在图 15中找到。

(2) 这是维持游戏完整性的关键方面。在游戏过程中,棋盘代理会检查每个提议的行动的合法性;如果移动无效,代理会返回错误,提示玩家代理在继续之前重新提出合法的移动。此过程可确保仅进行有效的动作,并有助于保持一致的游戏体验。作为一项消融研究,作者删除了board agent,而仅依靠相关提示“你应该确保你和对手都在采取合法的行动”来为他们的行动奠定基础。结果表明,如果没有棋局代理人,非法走棋会导致游戏中断。模块化设计提供了灵活性,允许棋盘代理快速调整,以响应不断变化的游戏规则或变化的国际象棋规则变体。

Discussion

        引入了一个开源库 AutoGen,它结合了可对话代理和对话编程的范例。该库使用非常适合多代理协作的功能强大的代理。它具有代理之间统一的对话界面以及自动回复机制,有助于建立代理交互界面,利用聊天优化的LLM的优势,具有广泛的功能,同时适应广泛的应用程序。 AutoGen 作为创建和试验多代理系统的通用框架,可以轻松满足各种实际需求,例如重用、定制和扩展现有代理,以及对它们之间的对话进行编程。

        案例实验表明,这种方法具有许多好处。 AutoGen 的采用提高了性能(相对于最先进的方法)、减少了开发代码并减轻了现有应用程序的手动负担。它为开发人员提供了灵活性,如 A1(场景 3)、A5 和 A6 中所示,其中 AutoGen 使多代理聊天能够遵循动态模式,而不是固定的来回交互。它允许人类以对话方式与多个人工智能代理一起参与活动。尽管这些应用程序很复杂(大多数涉及两个以上代理或动态多回合代理合作),但基于 AutoGen 的实现仍然很简单。在不同的代理之间划分任务可以促进模块化。此外,由于每个代理都可以单独开发、测试和维护,因此这种方法简化了整体开发和代码管理。

        尽管这项工作仍处于早期实验阶段,但它为许多未来的方向和研究机会铺平了道路。例如,可以探索将现有代理实现有效集成到多代理框架中,并研究多代理工作流程中自动化和人工控制之间的最佳平衡。随着进一步开发和完善 AutoGen,作者的目标是研究哪些策略(例如代理拓扑和对话模式)可以实现最有效的多代理对话,同时优化整体效率等因素。虽然增加代理数量和其他自由度为解决更复杂的问题提供了机会,但也可能带来新的安全挑战,需要额外的研究和仔细考虑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值