论文题目:AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation
论文链接: https://arxiv.org/pdf/2308.08155.pdf
目录
A2: Retrieval-Augmented Code Generation and Question Answering
A3: Decision Making in Text World Environments
摘要
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. 通过以对话为中心的计算和控制对代理之间的交互行为进行编程。
这两个步骤都可以通过自然语言和编程语言的融合来实现,从而构建具有广泛对话模式和代理行为的应用程序。