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

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取得了最好的成绩,确实有力证明了对话式多智能体协作系统的优越性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS 应用开发之FA模型启动Stage模型UIAbility

本文介绍FA模型的三种应用组件如何启动Stage模型的UIAbility组件。 PageAbility启动UIAbility 在PageAbility中启动UIAbility和在PageAbility中启动PageAbility的方式完全相同。 import featureAbility from ohos.ability.featureAbility; import { BusinessError } from oh…

Roxlabs代理服务:智能化数据采集的加速器

TOC 一、引言 在这个数据驱动的时代,无论是企业还是个人,对于准确、及时的信息获取都有着前所未有的需求。网络数据采集已成为洞察市场趋势、分析竞争对手动态、优化营销策略的关键手段。然而,面对全球范围内的网站和服务,如何高…

数据结构与算法 循环双链表基本运算与对称算法

一、实验内容 1、实现循环双链表的各种基本运算的算法 (1)初始化循环双链表h (2)依次采用尾插法插入a,b,c,d,e元素 (3)输出循环双链表h; (4)输出循环双链表h长度&am…

Linux初学(十一)中间件

一、web服务 1.1 中间件简介 中间件其实就是一类软件,中间件的作用是让用户可以看到一个网页 总结:客户端可以向服务端发送请求,服务器端会通过中间件程序来接收请求,然后处理请求,最后将处理结果返回给客户端 1.2 中…

vscode初始化node项目

首先需要安装node环境,推荐直接使用nvm 安装node,方便切换node版本 1.npm init 初始化node项目 在命令行输入npm init指令 根据指令创建完成后会在当前目录下生成一个package.json文件,记住运行npm init执行的目录必须是一个空目录 2.创建…

qupath再度更新:使用WSInfer进行深度学习

Open and reusable deep learning for pathology with WSInfer and QuPath Open and reusable deep learning for pathology with WSInfer and QuPath | npj Precision Oncology (nature.com) 以前:数字病理图像分析的开源软件qupath学习 ①-CSDN博客 背景 深度学…

idea从零开发Android 安卓 (超详细)

首先把所有的要准备的说明一下 idea 2023.1 什么版本也都可以操作都是差不多的 gradle 8.7 什么版本也都可以操作都是差不多的 Android SDK 34KPI 下载地址: AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载 …

没有与参数列表匹配的构造函数“cv::VideoWriter::VideoWriter”实例

今天在使用Visual Studio开发与OpenCV相关的程序时,遇到了这样的情况: 第一个参数的下方被打上了红波浪线,我本能的觉得是第一个参数出的问题,于是改成了这样: 红线依然存在,没有消失,把鼠标放在红线下方&#xff0c…

OpenHarmony error: signature verification failed due to not trusted app source

问题:error: signature verification failed due to not trusted app source 今天在做OpenHarmony App开发,之前一直用的设备A在测试开效果,今天换成了设备B,通过DevEco Studio安装应用程序的时候,就出现错误&#xf…

【笔记】动⼿学深度学习(花书)|| Aston Zhang Mu Li Zachary C. LiptonAlexander J. Smola

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 前言 第一章 深度学习简介 第二章 P 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言本书…

场效应管(MOS管)知识点总结

目录 一、场效应管(FET)基础知识 1.名称 2.电路符号 3.分类 4.应用场景 5.厂商介绍 二、MOS管G、S、D以及判定 三、耗尽型场效应管工作原理 (耗尽型:depletion mode) 四、NMOS与PMOS的区别 (区别:difference) (多晶硅:polysilicon) …

K8S中部署yaml文件(如Java项目)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

Java学习笔记(23)

多线程 并发 并行 多线程实现方式 1.继承Thread类 自己创建一个类extends thread类 Start方法开启线程,自动执行重写之后的run方法 2.实现runable接口 自己创建一个类implements runnable Myrun不能直接使用getname方法,因为这个方法是thread类的方法…

Kafka入门到实战-第四弹

Kafka入门到实战 Kafka集群搭建官网地址Kafka概述使用Kraft搭建Kafka集群更新计划 Kafka集群搭建 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://kafka.apache.org/Kafka概述 Apache Kafka 是一个开源的分布式事件…

ubuntu2204配置zabbix6.4高可用

zabbix6.4-HA 配置keepalived配置haproxy数据库高可用配置zabbix-server配置proxy配置客户端agent 本实验VMware搭建zabbix6.4高可用集群,搭配haproxykeepalived。 master,node节点搭建haproxykeepalibed主备并配置vip地址 三台控制节点搭建数据库高可用…

rabbitMQ版本问题与下载

都到现在了,大家不会安装东西还是不看版本吧 云服务器买的是centos7,而erlang在24版本后不支持centos7了 所以需要找24版本以下的erlang,而不同erlang对应不同rabbitmq所以需要对应 下载erlang 说实话,自己安装,还是…

无论PC还是Mac,都能畅快地使用移动硬盘 Mac使用NTFS移动硬盘不能读写

如果你拥有一台Mac设备,总会遇到尴尬的那一刻——你在Mac上用得好好的移动硬盘怎么都不能被PC识别到。又或者你朋友在PC上用得好好的移动硬盘,连上你的Mac后,Mac里的文件死活就是拷贝不进移动硬盘里。这种坑,相信大多数使用Mac的小…

pycharm复习

1.基础语法 1.字面量 2.注释: 单行注释# 多行注释" " " " " " 3.变量: 变量名 变量值 print:输出多个结果,用逗号隔开 4.数据类型: string字符串int整数fl…

信息工程大学第五届超越杯程序设计竞赛(同步赛)题解

比赛传送门 博客园传送门 c 模板框架 #pragma GCC optimize(3,"Ofast","inline") #include<bits/stdc.h> #define rep(i,a,b) for (int ia;i<b;i) #define per(i,a,b) for (int ia;i>b;--i) #define se second #define fi first #define e…

六、【功能接口测试】用例设计方法及案例:单接口和业务场景

接口测试 1&#xff09;接口测试的测试点2&#xff09;接口用例设计方法3&#xff09;功能测试单接口测试用例4&#xff09;功能测试业务场景测试用例 1&#xff09;接口测试的测试点 功能测试 单接口功能 一个单独业务&#xff0c;就对一个独立的接口&#xff0c;如&#xff1…