Connect with us

人工智能

AutoGen:赋予下一代大型语言模型应用的力量

mm
The AutoGen Framework

大型语言模型 (LLMs) 目前是人工智能领域最热门的话题之一。全球的开发人员正在探索 LLMs 的潜在应用。这些模型是利用深度学习技术和大量训练数据来理解、总结、预测和生成广泛的内容,包括文本、音频、图像、视频等。

大型语言模型是复杂的 AI 算法。开发这样的模型是一项艰巨的任务,构建一个利用 LLMs 能力的应用程序同样具有挑战性。它需要大量的专业知识、努力和资源来设计、实施和最终优化一个工作流,以便充分发挥大型语言模型的潜力并获得最佳结果。考虑到为利用 LLMs 力量的应用程序建立工作流所需的巨大时间和资源,自动化这些过程具有巨大的价值。这在开发人员创建越来越复杂的基于 LLMs 的应用程序时尤其如此,例如 基于 LLMs 的应用程序。此外,用于这些工作流的设计空间既复杂又广泛,从而进一步增加了创建满足性能期望的最佳、健壮工作流的挑战。

AutoGen 是微软团队开发的一个框架,旨在通过将自动化引入工作流管道来简化 LLMs 工作流的编排和优化。AutoGen 框架提供了可对话和可定制的代理,可以利用高级 LLMs 如 GPT-3 和 GPT-4 的力量,同时通过使用自动聊天来启动多个代理之间的对话来解决这些模型的当前局限性,方法是将 LLMs 与工具和人类输入集成在一起。

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

步骤 1:定义一组代理,每个代理都有其角色和能力。

步骤 2:定义代理之间的交互行为,即代理应该知道如何响应来自其他代理的消息。

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

AutoGen 可能是游戏规则的改变者,因为它旨在通过利用 LLMs 的力量来转变复杂应用程序的开发过程。使用 AutoGen 不仅可以减少实现所需结果所需的手动交互次数,还可以减少创建此类复杂应用程序所需的编码工作量。使用 AutoGen 创建 基于 LLMs 的应用程序 不仅可以显著加快该过程,还可以帮助减少开发这些复杂应用程序所需的时间、精力和资源。

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

AutoGen 介绍:赋予下一代大型语言模型应用的力量

AutoGen 是微软团队开发的一个开源框架,旨在让开发人员能够使用多个代理来创建利用 LLMs 力量的应用程序,这些代理可以相互对话以成功执行所需的任务。AutoGen 框架中的代理是可对话和可定制的,可以以不同的模式运行,这些模式结合了工具、人类输入和 LLMs。开发人员还可以使用 AutoGen 框架来定义代理的交互行为,开发人员可以使用计算机代码和自然语言来编程灵活的对话模式,并将其部署在各种应用程序中。作为一个开源框架,AutoGen 可以被认为是一个通用框架,开发人员可以使用它来构建各种复杂度的应用程序和框架,这些应用程序和框架都利用了 LLMs 的力量。

大型语言模型在开发利用 LLMs 框架进行新观察、工具使用和推理的代理方面发挥着至关重要的作用。然而,开发能够利用 LLMs 全部潜力的应用程序是一件复杂的事情,考虑到 LLMs 的需求和应用不断增加,以及任务复杂性的增加,使用多个代理来扩大这些代理的力量至关重要。那么,如何使用多代理方法来开发可以应用于具有不同复杂度的广泛领域的基于 LLMs 的应用程序?AutoGen 框架试图通过使用多代理对话来回答上述问题。

AutoGen:组件和框架

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

可对话代理

AutoGen 中的可对话代理是一个具有预定义角色的实体,可以向其他可对话代理发送和接收消息。可对话代理根据收到或发送的消息维护其内部上下文,开发人员可以配置这些代理以具有独特的能力,例如启用 LLMs 工具或接受人类输入。

代理能力由人类、工具和 LLMs 提供

代理的能力直接与其处理和响应消息的方式有关,这也是 AutoGen 框架中的代理允许开发人员赋予其代理各种能力的主要原因。AutoGen 支持代理的多种常见可组合能力,包括

  1. LLMs:支持 LLMs 的代理利用高级 LLMs 框架的能力,例如隐式状态干预、角色扮演、提供反馈,甚至编码。开发人员可以使用新颖的提示技术来组合这些能力,以增加代理的自主性或技能。
  2. 人类:一些应用程序需要或需要一定程度的人类参与,AutoGen 框架允许基于 LLMs 的应用程序通过使用人类支持的代理来促进人类在代理对话中的参与,方法是使用自动聊天来在对话的某些轮次中根据代理的配置来获取人类输入。
  3. 工具:工具支持的代理通常具有使用代码执行或函数执行来执行工具的能力。

代理合作和定制

根据应用程序的具体需求和要求,开发人员可以配置个别代理以具有基本后端类型的组合,以显示多代理对话中的复杂行为。AutoGen 框架允许开发人员通过扩展或重用内置代理轻松创建具有专用角色和能力的代理。下图演示了 AutoGen 框架中内置代理的基本结构。ConversableAgent 类可以使用人类、工具和 LLMs,默认情况下,因为它是最高级别的代理抽象。UserProxyAgent 和 AssistantAgent 是 ConversableAgent 的预配置类,每个都代表一种常见的使用模式,即每个代理都可以作为 AI 助手(当支持 LLMs 时),并通过作为人类代理来执行函数调用或代码(当支持工具和/或人类时)。

下图演示了开发人员如何使用 AutoGen 框架来开发一个具有自定义回复函数的双代理系统,以及使用双代理系统在程序执行期间生成的自动代理聊天的插图。

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

对话编程

为了解决上述问题,AutoGen 框架使用对话编程,这是一种计算范式,建立在两个基本概念之上:计算,即多代理对话中代理采取的行动来计算其响应,以及 控制流,即这些计算发生的条件或序列。能够编程这些使开发人员能够实现各种灵活的多代理对话模式。此外,在 AutoGen 框架中,计算是对话中心的。代理采取的行动与代理参与的对话相关,代理采取的行动然后导致消息的传递,直到满足终止条件。另外,AutoGen 框架中的控制流由对话驱动,因为它是参与代理决定哪些代理将向哪些代理发送和接收消息的结果。

上图演示了一个简单的示例,说明如何个别代理执行其特定操作和对话中心计算以生成所需的响应,例如代码执行和 LLMs 干预调用。任务通过对话的帮助推进,显示在对话框中。

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

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

AutoGen 框架具有一个统一的接口,用于执行对话中心计算,包括一个 “接收或发送函数”,用于接收或发送消息,以及一个 “generate_reply” 函数,根据接收到的消息生成响应并采取必要的操作。AutoGen 框架还引入和部署了 “agent-auto reply” 机制,默认情况下实现对话驱动的控制。

  • 通过自然语言和编程的组合来控制

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

继续,除了通常伴随预定义流程的静态对话外,AutoGen 框架还支持使用多个代理的动态对话流程,并为开发人员提供两种选择来实现这一点

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

AutoGen 的应用

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

AutoGen 框架的六个应用是

  1. 数学问题解决。
  2. 检索增强聊天。
  3. ALF 聊天。
  4. 多代理编码。
  5. 动态群聊。
  6. 对话式国际象棋。

AutoGen 框架的应用

应用 1:数学问题解决

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

上图演示了 AutoGen 框架在解决数学问题方面的应用,实现了具有竞争力的性能。

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

最近几个月,检索增强代码生成已经成为克服 LLMs 限制的一种有效且实用的方法,尤其是在整合外部文档方面。下图演示了 AutoGen 框架在检索增强和 Q&A 任务上的性能提升的应用。

应用 3:基于文本的世界环境中的决策

AutoGen 框架可以用于创建与在线或交互式决策合作的应用程序。下图演示了开发人员如何使用 AutoGen 框架来设计一个具有接地代理的三代理对话系统,以显著提高性能。

应用 4:多代理编码

使用 AutoGen 框架的开发人员可以使用 OptiGuide 框架来构建一个多代理编码系统,能够编写代码来实现优化解决方案,并回答用户问题。下图演示了使用 AutoGen 框架创建多代理设计如何显著提高性能,尤其是在执行需要安全保障的编码任务时。

应用 5:动态群聊

AutoGen 框架提供了对动态群聊的支持,这是一种通信模式,其中多个代理共享上下文,并且不遵循一组预定义的顺序,而是以动态的方式相互对话。这些动态群聊依赖于持续的对话来指导代理内的交互流程。

上图演示了 AutoGen 框架如何使用 “GroupChatManager”(一个特殊的代理)来支持代理之间的动态群聊。

应用 6:对话式国际象棋

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

结论

在本文中,我们讨论了 AutoGen,这是一个开源框架,使用对话编程和可对话代理的概念,旨在通过将自动化引入工作流管道来简化 LLMs 工作流的编排和优化。AutoGen 框架提供了可对话和可定制的代理,利用了高级 LLMs 如 GPT-3 和 GPT-4 的力量,同时通过使用自动聊天来启动多个代理之间的对话来解决这些模型的当前局限性,方法是将 LLMs 与工具和人类输入集成在一起。

尽管 AutoGen 框架仍处于早期实验阶段,但它为未来的探索和研究机会铺平了道路,AutoGen 可能是帮助提高利用 LLMs 功能的应用程序开发速度、功能和开发便捷性的工具。

专业为工程师,心为作家。 Kunal是一名技术作家,对AI和ML有着深厚的热爱和理解,致力于通过其引人入胜和信息丰富的文档来简化这些领域中的复杂概念。