人工智能
AutoGen:下一代大型语言模型应用的动力源

大型语言模型 (LLMs) 目前是人工智能领域最热门的话题之一。全球的开发者都在探索LLMs的潜在应用。这些模型是利用深度学习技术和大量训练数据来理解、总结、预测和生成各种内容,包括文本、音频、图像、视频等。
大型语言模型是复杂的AI算法。开发这样的模型是一项艰巨的任务,构建一个利用LLM能力的应用程序同样具有挑战性。它需要大量的专业知识、努力和资源来设计、实现和优化一个能够发挥LLM全部潜力的工作流程。考虑到建立LLM应用程序工作流程所需的时间和资源,自动化这些过程具有巨大的价值。特别是随着开发者创建越来越复杂的LLM应用程序,工作流程预计将变得更加复杂。
AutoGen 是由微软团队开发的一个框架,旨在通过引入自动化来简化LLM工作流程的编排和优化。AutoGen框架提供了可对话和可定制的代理,这些代理利用了先进LLM如GPT-3和GPT-4的力量,同时通过使用自动聊天来启动多个代理之间的对话来解决这些LLM的当前局限性。
使用AutoGen框架时,开发一个复杂的多代理对话系统只需要两步。
步骤1:定义一组代理,每个代理都有其角色和能力。
步骤2:定义代理之间的交互行为,即代理应该如何响应来自其他代理的消息。
上述两个步骤都是模块化和直观的,使得这些代理变得可组合和可重用。下图展示了一个示例工作流程,用于优化供应链中的代码问题。如图所示,编写者首先编写代码和解释,安全代理确保代码的安全和隐私,命令执行者在获得必要的许可后执行代码。如果系统在运行时遇到任何问题,过程将重复直到完全解决。部署此框架可以将应用程序中的手动交互次数从3倍到10倍减少。此外,使用AutoGen还可以将编码工作量减少四倍。

AutoGen可能是游戏规则的改变者,因为它旨在改变利用LLM能力的复杂应用程序的开发过程。使用AutoGen不仅可以减少实现所需结果所需的手动交互次数,还可以减少创建这些复杂应用程序所需的编码工作量。使用AutoGen创建LLM应用程序不仅可以显著加快开发速度,还可以减少开发这些复杂应用程序所需的时间、努力和资源。
在本文中,我们将更深入地探讨AutoGen框架,并探索其基本组件和架构,以及其潜在应用。让我们开始吧。
AutoGen介绍:下一代大型语言模型应用的动力源
AutoGen是一个由微软团队开发的开源框架,旨在让开发者能够使用多个代理创建利用LLM能力的应用程序。这些代理可以相互对话以成功执行任务。开发者还可以使用AutoGen框架定义代理的交互行为,并使用计算机代码和自然语言编程灵活的对话模式。作为一个开源框架,AutoGen可以被认为是一个通用框架,开发者可以使用它来构建各种复杂度的应用程序和框架,利用LLM的力量。

大型语言模型在开发利用LLM框架来适应新观察、工具使用和推理的代理方面发挥着至关重要的作用。但是,开发能够利用LLM全部潜力的应用程序是一项复杂的任务,考虑到LLM的日益增长的需求和应用,以及任务复杂性的增加,使用多个代理来扩大这些代理的力量至关重要。这些代理可以协同工作。AutoGen框架试图通过使用多代理对话来回答这个问题。
AutoGen:组件和框架
为了减少开发者创建使用LLM能力的复杂应用程序所需的努力,AutoGen的基本原则是通过使用多代理对话来整合和简化多代理工作流程,从而最大限度地提高这些实现的代理的可重用性。AutoGen使用多个代理来相互对话以成功执行任务,框架建立在两个基本概念之上:可对话的代理和可对话的编程。
可对话的代理
AutoGen中的可对话代理是一个具有预定义角色的实体,可以向其他可对话代理发送和接收信息。可对话代理根据接收或发送的消息维护其内部上下文,开发者可以配置这些代理以具有独特的能力,如启用LLM工具或接受人类输入。
代理能力:由人类、工具和LLM提供支持
代理的能力直接关系到它如何处理和响应消息,这也是为什么AutoGen框架中的代理允许开发者赋予各种能力的主要原因。AutoGen支持多种常见的可组合能力,包括
- LLM:支持LLM的代理利用先进LLM框架的能力,例如隐式状态干预、角色扮演、提供反馈,甚至编码。开发者可以使用新颖的提示技术来组合这些能力,以增加代理的自主性或技能。
- 人类:一些应用程序需要或要求一定程度的人类参与,AutoGen框架允许LLM应用程序促进人类参与代理对话,使用支持人类输入的代理可以在对话的某些回合中根据代理的配置获取人类输入。
- 工具:支持工具的代理通常具有使用代码执行或函数执行来执行工具的能力。
代理合作和定制
根据应用程序的具体需求和要求,开发者可以配置个别代理以具有后端类型的组合来显示多代理对话中的复杂行为。AutoGen框架允许开发者轻松创建具有专用角色和能力的代理,通过扩展或重用内置代理。下图展示了AutoGen框架中内置代理的基本结构。ConversableAgent类可以使用人类、工具和LLM,因为它是最高级别的代理抽象。UserProxyAgent和AssistantAgent是ConversableAgent的预配置类,每一个代表一种常见的使用模式,即每一个代理都可以作为AI助手(当支持LLM时),并通过作为人类代理来获取人类输入或执行函数调用或代码(当支持工具和/或人类时)。

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

通过允许使用可以相互对话的自定义代理,这些可对话代理作为AutoGen框架中的基本构建块。然而,开发者需要指定和塑造这些多代理对话,以开发能够在指定任务上取得重大进展的应用程序。
对话编程
为了解决上述问题,AutoGen框架使用对话编程,这是一种计算范式,建立在两个基本概念之上:计算,即代理在多代理对话中采取的行动来计算其响应,以及控制流,即这些计算发生的条件或顺序。能够编程这些使得开发者能够实现多种灵活的多代理对话模式。此外,在AutoGen框架中,计算是对话中心的。代理采取的行动与代理参与的对话相关,代理采取的行动然后导致消息的传递,直到满足终止条件。此外,AutoGen框架中的控制流由对话驱动,因为它是参与代理决定哪些代理将发送和接收消息以及从计算过程中接收消息的决定。

上图展示了一个简单的示例,说明了如何个别代理执行其特定操作和对话中心计算以生成所需的响应,例如代码执行和LLM干预调用。任务通过对话进行,显示在对话框中。
为了促进对话编程,AutoGen框架具有以下设计模式。
- 自动回复机制和自动代理聊天的统一接口
AutoGen框架具有一个统一接口,用于执行对话中心计算,包括一个“接收或发送函数”用于接收或发送消息,以及一个“生成回复”函数,根据接收的消息生成响应并采取必要的行动。AutoGen框架还引入和部署了代理自动回复机制,以实现对话驱动的控制。
- 自然语言和编程的混合控制
AutoGen框架促进了自然语言和编程在各种控制流管理模式中的使用,包括使用LLM的自然语言控制、编程语言控制和编程语言与自然语言之间的控制转换。
继续,除了通常伴随着预定义流程的静态对话外,AutoGen框架还支持使用多个代理的动态对话流程,框架为开发者提供了两种选择来实现这一点
- 使用函数调用。
- 使用自定义生成回复函数。
AutoGen的应用
为了说明AutoGen框架在开发复杂多代理应用程序中的潜力,以下是六个AutoGen框架的潜在应用,根据其在现实世界中的相关性、解决问题的能力和创新潜力进行选择。这些六个应用是
- 数学问题解决。
- 增强式检索聊天。
- ALF聊天。
- 多代理编码。
- 动态群聊。
- 对话式国际象棋。

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

上图展示了使用AutoGen框架来实现竞争性性能的数学问题解决应用。
应用2:问题回答和增强式代码生成
最近几个月,增强式检索代码生成已经成为克服LLM局限性的有效和实用的方法。下图展示了使用AutoGen框架进行有效的增强式检索和在Q&A任务上提高性能的应用。

应用3:基于文本的世界环境中的决策
AutoGen框架可以用于创建与在线或交互式决策相关的应用。下图展示了如何使用AutoGen框架设计一个具有接地代理的三代理对话系统,以显著提高性能。

应用4:多代理编码
使用AutoGen框架的开发者可以使用OptiGuide框架来构建一个能够编写代码来实现优化解决方案和回答用户问题的多代理编码系统。下图展示了使用AutoGen框架创建多代理设计如何显著提高性能,特别是在需要安全保障的编码任务中。

应用5:动态群聊
AutoGen框架支持一种围绕动态群聊的通信模式,其中多个代理共享上下文,并且不是按照预定义的顺序进行,而是动态地相互对话。这些动态群聊依赖于持续的对话来引导代理之间的交互流程。

上图展示了AutoGen框架如何使用“GroupChatManager”(一个特殊的代理)来支持代理之间的动态群聊。
应用6:对话式国际象棋
AutoGen框架的开发者使用它来开发一个对话式国际象棋应用,这是一个自然干预游戏,具有内置的代理,可以是LLM或人类,并且有一个第三方代理提供相关信息,并根据一组预定义的标准规则验证棋盘上的移动。下图展示了使用AutoGen框架构建的对话式国际象棋,这是一种自然干预游戏,允许玩家使用笑话、角色扮演,甚至表情包引用来创造性地表达他们的移动,这不仅使游戏对玩家来说更加有趣,也使其对观众和观察者更加有趣。

结论
在本文中,我们讨论了AutoGen,一个开源框架,使用对话编程和可对话代理的概念,旨在通过引入自动化来简化LLM工作流程的编排和优化。AutoGen框架提供了可对话和可定制的代理,利用了先进LLM如GPT-3和GPT-4的力量,同时通过使用自动聊天来启动多个代理之间的对话来解决这些LLM的当前局限性。
虽然AutoGen框架仍处于早期实验阶段,但它为该领域的未来探索和研究机会铺平了道路,AutoGen可能是帮助提高利用LLM能力的应用程序开发速度、功能和易用性的工具。












