【论文通读】AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation

news2024/11/24 8:35:52

AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation

  • 前言
  • Abstract
  • Motivation
  • Framework
    • Conversable Agents
    • Conversation Programming
  • Application
  • A1: Math Problem Solving
  • A2: Retrieval-Augmented Code Generation and Question Answering
  • A3: Decision Making in Text World Environments
  • Conclusion

前言

微软在智能体方面的又一重大工作,通过对话式多智能体协作的方式构建智能体系统,以解决各种应用场景下的问题。相对于文章本身,我更希望读者关注其在github上项目的工作,毕竟智能体的工作本质上都是工程化的内容,只有实际参与了项目本身你才能真正理解AutoGen的意义并感受其实用性。

Paperhttps://arxiv.org/pdf/2308.08155.pdf
Codehttps://github.com/microsoft/autogen
FromICLR 2024 WorkShop

image.png

Abstract

AutoGen是允许开发者通过多智能体的形式构建LLM应用的开原框架,这些智能体通过对话完成任务。AutoGen可定制化、可对话,并且可以在各种LLMs、用户输入和工具组合的模式下运行。使用AutoGen,开发者可以灵活定义智能体交互行为。自然语言和计算机代码都可以用于为不同的应用程序编写灵活的对话形式。AutoGen是构建各种复杂且融合LLM能力的应用程序的通用框架,实验证明该框架在各种领域的有效性。

Motivation

  1. 多智能体合作的方式从直觉上可以更好完成复杂的任务。
  2. 为什么采取多智能体对话的形式?
    1. LLM本身基于对话,利于通过彼此或人类对话的形式合作。
    2. 多智能体对话可以取长补短。
    3. LLM可以解决被分解为子任务的复杂任务。
  3. 如何灵活实现不同应用程序的需求?
    1. 如何设计有能力、可重用、可定制且有效进行多智能体协作的单个智能体?
    2. 如何开发一个简单、统一的界面来适应各种智能体对话模式?

AutoGen通过如下方法的实现解决上面的问题:

  1. 定制化和可对话的智能体。
  2. 对话式编程。角色特定 + 对话为中心。

Framework

image.png
AutoGen的核心原则是使用多智能体对话来简化和整合多智能体工作流程。AutoGen具有两个关键概念:可对话智能体对话编程

Conversable Agents

  1. 支持常见的智能体组合功能,比如LLMs,人类和工具。
  2. 根据特定应用程序的需求,每个智能体可以通过多个组件的混合来展现复杂的行为。AutoGen允许通过重用或者跨站来创建专门的功能或角色的智能体。

虽然可对话智能体是有用的构建块,但是为了智能体在任务上取得有意义的进展,开发人员还需要指定和塑造这些多智能体对话。

Conversation Programming

对话编程可以解决“有意义”的问题。它考虑了两个概念:

  1. 计算:智能体在多智能体对话中计算自己响应的动作。
  2. 控制流:计算发生的顺序或者条件。在此基础上设计了统一的接口、自动回复、编程和自然语言融合等设计模式。

对话式编程的设计模式允许在编程和自然语言之间进行控制,一方面,可以让智能体通过自然语言来控制对话流程,另一个方面可以用Python代码来终止条件、人类输入和工具执行逻辑,甚至可以调用自动回复函数来控制对话流程。
此外,对话编程可以根据当前上下文同时执行当前对话以及调用其它智能体的对话。总的来说,这种对话式编程,可以让复杂的多智能体对话实现更简单直观。

Application

image.png
作者在六个应用上使用AutoGen以展示其在简化高性能多智能体应用程序开发中的潜力。

A1: Math Problem Solving

自动化解决数学问题的系统通过直接复用两个内置的智能体完成,并与LangChain ReAct、原始GPT-4等在MATH数据集上进行评估。研究者随机选取了120个随机的level 5的问题,解决表明AutoGen仅用内置的智能体就有最好的表现。
image.png
为了研究人机协同解决问题的有效性,作者在系统中融入了人类反馈,实验证实系统可以借助人类输入来解决那些没有人类介入无法解决的问题。

A2: Retrieval-Augmented Code Generation and Question Answering

image.png
RAG已被证明缓解语言模型固有限制的实用方法,本文构建了一种检索增强型对话系统,由检索增强型用户智能体和检索增强型助手智能体组成。作者在两种情况下进行评估:问题回答和代码生成。作者与DPR进行比较,AutoGen会在找不到信息时不终止对话,而是会回应“找不到任何关于xxx的信息,更新上下文”,这将唤起更多检索。结果如下图所示,显示交互检索机制在这过程中确实起到重要的作用。image.png

A3: Decision Making in Text World Environments


AutoGen对任意应用场景定制任务特定的多智能体协作系统,从而在各种场景上取得很好的效果。更多的应用这里就不再赘述了,感兴趣的朋友可以阅读原文观看。

Conclusion

AutoGen最大的亮点正如它所宣传的那样:对话式多智能体,智能体通过互相协作以及对话交互,从而在各个应用场景定制多智能体协作系统,取得非常好的效果。通过对文章的阅读,我也有一些想法和疑惑:

  1. 智能体工作的文章一定要如此包装吗?在看文章的时候,很多内容读起来还是很吃力的,作者创造了很多概念,比如对话编程,计算响应,给我唬的一愣一愣的,不知其所以然。看完文章,以及相关的应用后,我才恍然大悟,我觉得作者如果能够将重点围绕在对话式多智能体交互上,即通过一个pipeline讲解整个框架,而不是拆分成一个个组件,然后将重点放在实验上(AutoGen应用部分还是很充分的),可能更利于读者的理解,不过这样的包装可能更好中论文吧。毕竟智能体相关的工作太过于工程,发论文吃力不讨好。
  2. 不同的应用场景需要定制不同的多智能体协作系统,这显得不够智能,能不能在积累一定不同类型智能体之后,用户仅仅通过任务就能自动组合智能体来协作完成任务,这我认为是值得去做的工作。
  3. Framework的图实在是暴殄天物,流程看着很乱,一些函数写在上面不明所以,不利于读者理解。
  4. 实验部分限于当时AI assistant的benchmark还没有出来,所以只能以6种应用形式呈现,实际上现在AutoGen已经在GAIA benchmark取得了最好的成绩,确实有力证明了对话式多智能体协作系统的优越性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1558015.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 给网卡配置ip

ip addr | grep eth9 ifconfig eth9 10.0.0.2 netmask 255.255.255.0 up

算法系列--动态规划--背包问题(4)--完全背包拓展题目

💕"这种低水平质量的攻击根本就不值得我躲!"💕 作者:Lvzi 文章主要内容:算法系列–动态规划–背包问题(4)–完全背包拓展题目 大家好,今天为大家带来的是算法系列--动态规划--背包问题(4)--完全背包拓展题目…

数字化时代多系统安全运维解决方案

添加图片注释,不超过 140 字(可选) 添加图片注释,不超过 140 字(可选) 添加图片注释,不超过 140 字(可选) 添加图片注释,不超过 140 字(可选&…

VS2022+ObjectARX 2024环境搭建

1、安装好对应版本的VS2022和AutoCAD版本后,再下载两个文件。如下: 2、 先安装objectarx-for-autocad-2024-win-64bit-dlm.sfx.exe(SDK),安装后如下: 3、安装ObjectARXWizard2024.msi,如下&…

AXI Memory Mapped to PCI Express 学习笔记(四)——仿真设计

本文包含有关Vivado Design Suite中对AXI Memory Mapped to PCI Express core进行仿真的示例设计信息。 一、仿真设计概述 在仿真设计中,事务是从Root Port模型发送到配置为Endpoint的AXI Memory Mapped to PCI Express core,并在AXI块RAM控制器设计中…

ubuntu+clangd+vscode 实现项目代码快速跳转(如: Linux 内核源码)

1. 准备工作 虚拟机 ubuntu 环境,笔者用的是 ubuntu20.04。windows 安装好 vscode 软件。 2. 配置过程 2.1 vscode远程连接 ubuntu ubuntu 虚拟机开启 ssh 服务 sudo apt install openssh-server sudo service ssh startvscode 安装 remote-ssh 插件 vscode 远…

前端三剑客 —— CSS (上)

上节内容中提到了 前端三剑客 —— HTML 超文本标记语言,这节内容 跟大家讲述三剑客中的第二个 CSS。 CSS 什么是CSS Cascading Style Sheel,简称CSS,中文叫层叠样式表,也叫级联样式表。主要作用是来修饰HTML页面的一种技术。 …

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑新能源发电商租赁共享储能的电力市场博弈分析》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

C# wpf 嵌入wpf控件

WPF Hwnd窗口互操作系列 第一章 嵌入Hwnd窗口 第二章 嵌入WinForm控件 第三章 嵌入WPF控件(本章) 第四章 底部嵌入HwndHost 文章目录 WPF Hwnd窗口互操作系列前言一、如何实现?1、继承HwndHost2、添加Content属性3、创建wpf窗口并设置Conten…

node.js项目初始化操作

项目环境Vscode 1.新建一个文件夹node.js(xx.js) 2.右键点击node.js,点击打开终端 我在VScode打开终端 输入npm init初始化项目没反应。 解决方法:进入文件夹node.js,出入cmd跳转到终端 重新输入npm init命令 正确结果如下图 后续命令按下…

Python进阶编程 --- 1.类和对象

文章目录 第一章:1.初始对象1.1 使用对象组织数据1.2 类的成员方法1.2.1 类的定义和使用1.2.2 创建类对象1.2.3 成员变量和成员方法1.2.4 成员方法的定义语法1.2.5 注意事项 1.3 类和对象1.3.1 基于类创建对象 1.4 构造方法1.5 其他内置方法1.5.1 魔术方法str字符串…

http认证

1.Digest认证 各字段含义: Nonce 服务器直接返回的数据 H1MD5(user”:”realmpassword) H2MD5(method”:”url) method为请求类型、url不包括域名 Nc 指当前的第几次请求,使用8位16进制显示 Cnonce 8位随机字符串 ResponseMD5(H1”:”nonce”:”…

Mysql---安全值守常用语句

文章目录 目录 文章目录 一.用户权限设置 用户设置 元数据查询 Union联合查询 分组查询 字符串函数 总结 一.用户权限设置 用户设置 #用户创建 create user "用户名""%主机名" identified by "密码" #用户删除 drop user 用户名 #用户查询…

ACGO愚人节欢乐赛#18

念旧的人,注定被困在回忆里 解题思路: 将数组升序排序,然后找每m个数的最大值减最小值的最小值,如不不排序直接判断的话,不能保证最优解。注意判断每m个数时都要赋值初值,避免影响结果 下面是c代码&#…

光明源@智慧厕所公厕软件系统有哪些核心功能?

在现代城市的建设中,智慧公厕的建设成为了提升城市品质和居民生活质量的重要举措。而智慧公厕的核心,不仅仅在于其硬件设备的智能化,同样重要的是其背后支持的智慧厕所公厕软件系统。让我们一起探讨,智慧厕所公厕软件系统有哪些核…

深度学习基础模型之Mamba

Mamba模型简介 问题:许多亚二次时间架构(运行时间复杂度低于O(n^2),但高于O(n)的情况)(例如线性注意力、门控卷积和循环模型以及结构化状态空间模型(SSM))已被开发出来,以解决 Transformer 在长…

【C++】C++入门第一课(c++关键字 | 命名空间 | c++输入输出 | 缺省参数)

目录 前言 C关键字 命名空间 1.命名空间的定义 A.标准命名空间定义 B.命名空间允许嵌套定义 C.同名命名空间的合并 2.命名空间的使用 加命名空间名称及作用限定符 使用using将命名空间中某个成员引入 使用using namespace命名空间名称引入 C的输入和输出 缺省参数…

【LeetCode热题100】739. 每日温度(栈)

一.题目要求 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 二.题目难度…

上位机图像处理和嵌入式模块部署(qmacvisual图像拼接)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 qmacvisual本身提供了图像拼接的功能。功能本身比较有意思的。大家如果拍过毕业照,特别是那种几百人、上千人的合照,应该就…

基于SpringBoot的“校园志愿者管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“校园志愿者管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体结构图 系统首页界面图 志愿者注册…