Press "Enter" to skip to content

AutoGen:为下一代大型语言模型应用赋能

大型语言模型(LLM)目前是主流人工智能领域中讨论最多的话题之一。全球的开发者们正在探索LLM的潜在应用。这些模型是利用深度学习技术和大量的训练数据来理解、总结、预测和生成各种内容(包括文本、音频、图片、视频等)的人工智能算法。

大型语言模型是复杂的人工智能算法。开发这样的模型是一项耗费精力的任务,构建一个能够利用LLM功能的应用同样具有挑战性。设计、实现和最终优化一个能够充分发挥大型语言模型潜力的工作流程需要极高的专业知识、努力和资源投入,以获得最佳结果。鉴于建立利用LLM强大能力的应用所需的大量时间和资源,将这些流程自动化具有巨大价值。这一点尤其适用于未来不久的工作流程预计将变得更加复杂,开发者们将构建越来越复杂的基于LLM的应用。此外,这些工作流程所需的设计空间既精细又广阔,进一步提高了构建满足性能期望的最佳、强大工作流程的挑战。

AutoGen 是微软团队开发的一个框架,旨在通过将自动化引入工作流程管道,简化LLM工作流程的编排和优化。AutoGen框架提供的可对话、可定制的代理利用了GPT-3和GPT-4等先进的LLM的能力,同时通过使用自动聊天来将LLM与工具和人的输入相结合,以启动多个代理之间的对话。

使用AutoGen框架,开发复杂的多代理对话系统只需两个步骤。

第1步:定义一组代理,每个代理具有自己的角色和能力。

第2步:定义代理之间的交互行为,即当一个代理接收到另一个代理的消息时,代理应该知道如何回复。

以上两个步骤都是模块化且直观的,使这些代理可组合和可重用。下图展示了一个示例工作流程,用于解决供应链优化中基于代码的问题回答。可以看到,作者首先编写代码和解释,Safeguard确保代码的隐私和安全性,代码在获得所需许可后由Commander执行。如果系统在运行时遇到任何问题,将重复该过程直到完全解决。部署下面的框架可以在供应链优化等应用中将手动交互量减少3倍到10倍。此外,使用AutoGen还可以将编码工作量减少多达四倍。

AutoGen:为下一代大型语言模型应用赋能 四海 第1张

AutoGen可能会改变游戏规则,因为它旨在改变利用LLM强大能力开发复杂应用的过程。使用AutoGen不仅可以减少实现所需的手动交互次数,还可以减少创建这些复杂应用所需的编码工作量。使用AutoGen创建基于LLM的应用不仅可以显著加快流程,还可以减少开发这些复杂应用所需的时间、努力和资源投入。

在本文中,我们将深入探讨AutoGen框架并探索其主要组件和架构,以及其潜在应用。让我们开始吧。

AutoGen简介:开启下一代大型语言模型应用

AutoGen是由微软团队开发的开源框架,赋予开发者使用多个代理之间可以对话的大型语言模型(LLM)能力来创建应用的能力。AutoGen中的代理可对话、可定制,并且可以在不同模式下操作,使用工具、人的输入和LLM的组合。开发者也可以使用AutoGen框架来定义代理的交互行为,并使用计算机代码和自然语言来编写在各种应用中部署的灵活对话模式。作为一个开源框架,AutoGen可被视为开发者可以利用LLM强大能力构建各种复杂应用和框架的通用框架。

AutoGen:为下一代大型语言模型应用赋能 四海 第2张

大型语言模型在开发利用LLM框架的代理程序中起着至关重要的作用,这些代理程序可以适应新观察、工具使用和推理等众多现实世界应用。但是,开发能够充分利用LLM潜力的应用程序是一项复杂的任务,并且随着LLM的需求和应用增加以及任务复杂性的增加,通过使用相互协作的多个代理来提升这些代理的能力至关重要。但是如何使用多代理方法来开发基于LLM的应用程序,然后将其应用于各种复杂度不同的领域? AutoGen框架通过使用多代理对话来回答上述问题。

AutoGen:组件和框架

为了减少开发人员在跨多个领域使用LLM功能创建复杂应用程序时所需的工作量,AutoGen的基本原则是通过使用多代理对话来整合和简化多代理工作流,从而最大限度地提高这些实施代理的可重用性。AutoGen使用多个代理程序可以相互对话以成功执行所需的任务,该框架基于两个基本概念构建: 可对话代理可对话编程。

可对话代理

在AutoGen中,可对话代理是指具有预定角色的实体,可以将消息传递给其他可对话代理以发送和接收信息。可对话代理基于接收或发送的消息维护其内部上下文,开发人员可以配置这些代理程序具有独特的功能集,如由LLM工具启用或接受人类输入。

由人类、工具和LLM提供支持的代理功能

代理程序的功能直接关系到其如何处理和响应消息,这是AutoGen框架中的代理程序允许开发人员根据需要赋予其各种功能的主要原因。AutoGen支持用于代理程序的多种常见可组合功能,包括:

  1. LLM:由LLM支持的代理利用先进的LLM框架的能力,如隐含状态干扰、角色扮演、提供反馈甚至编码。开发人员可以使用新颖的提示技术将这些能力组合在一起,以增加代理程序的自主性或技能。
  2. 人类:一些应用程序期望或需要一定程度的人类参与,AutoGen框架允许LLM-based应用程序通过使用备有人类支持的代理程序在对话中促进人类参与,这些代理程序可以根据配置在会话的某些轮次中征求人类输入。
  3. 工具:工具支持的代理通常具有使用代码执行或函数执行来执行工具的能力。

代理合作和自定义

根据应用程序的具体需求和要求,开发人员可以配置各个代理程序,以同时使用多种基本类型,以显示多代理对话中涉及的复杂行为。AutoGen框架允许开发人员通过扩展或重用内置代理程序轻松创建具有特殊角色和功能的代理程序。下面的图示演示了AutoGen框架中内置代理程序的基本结构。ConversableAgent类默认可以使用人类、工具和LLMs,因为它是最高级别的代理程序抽象。UserProxyAgent和AssistantAgent是事先配置好的ConversableAgent类,它们中的每一个都代表了一种常见的使用模式,即这两个代理程序在LLMs的支持下充当AI助手,并根据具体情况征求人类输入或执行函数调用或代码(当备有工具和/或人类支持时)。

AutoGen:为下一代大型语言模型应用赋能 四海 第3张

下图演示了开发人员如何使用AutoGen框架来开发一个具有自定义回复功能的双代理系统,同时说明程序执行过程中使用双代理系统的结果自动化代理聊天。

AutoGen:为下一代大型语言模型应用赋能 四海 第4张

通过允许使用可以相互交流的自定义代理,这些可对话的代理充当AutoGen框架中的基本构建块。然而,开发人员需要指定和塑造这些多代理对话,以便开发应用程序,其中这些代理能够在指定的任务上取得实质性进展。

对话编程

为解决上述问题,AutoGen框架使用对话编程,这是一种建立在两个基本概念上的计算范式:计算是多代理对话中代理执行的操作,用于计算其响应和控制流程是这些计算发生的条件或顺序。程序员可以通过这些功能来实现多种灵活的多代理对话模式。此外,在AutoGen框架中,计算是以对话为中心的。代理所采取的行动与代理参与的对话相关,并且代理所采取的行动导致后续对话中传递消息,直到满足终止条件为止。此外,AutoGen框架中的控制流程由对话驱动,因为参与代理决定哪些代理将发送消息到计算程序中。

AutoGen:为下一代大型语言模型应用赋能 四海 第5张

上图演示了个体代理执行其特定角色操作和以对话为中心的计算,以生成所需的响应,如代码执行和LLM干扰调用。通过在对话框中显示的对话来推进任务。

为了促进对话编程,AutoGen框架提供以下设计模式。

  • 自动回复机制和统一的自动化代理聊天界面

AutoGen框架具有用于执行对应于以对话为中心的计算的统一接口,包括一个“接收或发送函数”,用于接收或发送消息,以及一个“生成回复”函数,根据接收的消息生成响应并采取所需的操作。 AutoGen框架还默认引入和部署代理自动回复机制,以实现基于对话的控制。

  • 融合自然语言和编程的控制

AutoGen框架促进在各种控制流管理模式中使用自然语言和编程,包括:使用LLM的自然语言控制、编程语言控制以及编程和自然语言之间的控制转换。

此外,除了通常伴随预定义流程的静态对话之外,AutoGen框架还支持使用多个代理进行动态对话流,该框架为开发人员提供了两种实现此目标的选择。

  1. 通过使用函数调用。
  2. 通过使用自定义生成回复函数。

AutoGen的应用

为了说明AutoGen框架在复杂多代理应用程序开发中的潜力,以下是六个潜在的AutoGen应用程序,这些应用程序是基于它们在现实世界中的相关性、AutoGen框架增强的问题解决能力和创新潜力进行选择的。

这六个AutoGen框架的应用程序是:

  1. 数学问题求解。
  2. 检索增强聊天。
  3. ALF聊天。
  4. 多代理编码。
  5. 动态群组聊天。
  6. 对话式国际象棋。
AutoGen框架的应用

应用1:数学问题求解

数学是利用LLM模型解决复杂数学问题的基础学科之一,这打开了一个全新的潜在应用领域,包括AI研究辅助和个性化AI辅导。

AutoGen:为下一代大型语言模型应用赋能 四海 第7张

上面附图展示了AutoGen框架在解决数学问题时实现竞争性表现的应用。

应用2:问答和检索增强代码生成

近几个月来,检索增强代码生成已成为一种有效且实用的方法,用于克服LLM在整合外部文档方面的局限性。下面的图展示了AutoGen框架在有效的检索增强和提升问答任务性能方面的应用。

AutoGen:为下一代大型语言模型应用赋能 四海 第8张

应用3:文本环境中的决策制定

AutoGen框架可以用于创建与在线或交互式决策制定相关的应用。下面的图展示了开发人员如何使用AutoGen框架设计一个包含三个代理系统和一个基础代理的对话系统,以显著提升性能。

AutoGen:为下一代大型语言模型应用赋能 四海 第9张

应用4:多代理编码

使用AutoGen框架的开发人员可以使用OptiGuide框架构建一个多代理编码系统,该系统能够编写代码以实现优化解决方案并回答用户问题。下面的图展示了使用AutoGen框架创建多代理设计有助于显著提升整体性能,特别是在需要保障的编码任务中。

AutoGen:为下一代大型语言模型应用赋能 四海 第10张

应用5:动态群聊

AutoGen框架支持围绕动态群聊而展开的通信模式,在其中参与的多个代理共享上下文,而不是按照一组预定义的顺序进行操作,它们以动态的方式相互交谈。这些动态群聊依赖于持续的对话来引导代理之间的互动流程。

AutoGen:为下一代大型语言模型应用赋能 四海 第11张

上图说明了AutoGen框架如何使用“GroupChatManager”,一个特殊代理,支持代理之间的动态群聊。

应用6:对话式国际象棋

AutoGen框架的开发人员使用它开发了一款对话式国际象棋应用,这是一款具有内置代理的自然干预游戏,可以是LLM或人类玩家,并且还有一个第三方代理,根据一组预定义的标准规则提供相关信息并验证棋盘上的移动。下图展示了使用AutoGen框架构建的对话式国际象棋,允许玩家使用笑话、角色扮演或甚至是表情包来创造性地表达他们的走棋,这使得国际象棋游戏不仅对玩家而言更加有趣,也对观众有吸引力。

AutoGen:为下一代大型语言模型应用赋能 四海 第12张

结论

在本文中,我们讨论了AutoGen,一个使用对话式编程和可对话代理概念的开源框架,旨在通过将自动化引入工作流程管道来简化LLM工作流程的编排和优化。AutoGen框架提供了可对话和可定制的代理,利用了高级LLM(如GPT-3和GPT-4)的强大功能,并同时通过使用自动化聊天在多个代理之间引发对话来解决当前的局限性。

尽管AutoGen框架仍处于早期实验阶段,但它为领域中的未来探索和研究机会铺平了道路,AutoGen可能成为改善应用开发速度、功能和开发LLM功能优势的工具。

Leave a Reply

Your email address will not be published. Required fields are marked *