当前位置: 首页 > news >正文

A Survey on Large Language Model based Autonomous Agents

本文是LLM系列的文章,针对《A Survey on Large Language Model based
Autonomous Agents》的翻译。

基于大模型的自动agents综述

  • 摘要
  • 1 引言
  • 2 基于LLM的自动代理构建
  • 3 基于LLM的自动代理应用
  • 4 基于LLM的自动代理评估
  • 5 相关综述
  • 6 挑战
  • 6.1 角色扮演能力
  • 6.2 广义与人对齐
  • 6.3 提示的鲁棒性
  • 6.4 幻觉
  • 6.5 知识边界
  • 6.6 高效性
  • 7 结论

摘要

自动代理一直是学术界的一个突出研究课题。该领域先前的研究通常集中在孤立环境中训练知识有限的智能体,这与人类的学习过程有很大差异,从而使智能体难以实现类似人类的决策。最近,通过获取大量的网络知识,大型语言模型(LLM)在实现人类水平的智能方面表现出了巨大的潜力。这引发了研究基于LLM的自动代理的热潮。为了充分利用LLM的潜力,研究人员设计了适合不同应用的不同代理架构。在本文中,我们对这些研究进行了全面的调查,从整体的角度对自动智能体领域进行了系统的回顾。更具体地说,我们的重点在于构建基于LLM的代理,为此我们提出了一个统一的框架,该框架包含了以前的大部分工作。此外,我们还总结了基于LLM的人工智能代理在社会科学、自然科学和工程领域的各种应用。最后,我们讨论了基于LLM的人工智能代理常用的评估策略。在前人研究的基础上,我们还提出了该领域的一些挑战和未来方向。为了跟踪该领域并不断更新我们的调查,我们维护了一个库用于相关参考文献https://github.com/Paitesanshi/LLM-Agent-Survey.

1 引言

2 基于LLM的自动代理构建

3 基于LLM的自动代理应用

4 基于LLM的自动代理评估

5 相关综述

6 挑战

尽管之前基于LLM的自主人工智能代理的工作已经显示出许多有前景的方向,但该领域仍处于初级阶段,其发展道路上存在许多挑战。在下文中,我们提出了几个重要挑战。

6.1 角色扮演能力

与传统的LLM不同,人工智能代理通常必须扮演特定的角色(如程序编码员、研究员和化学家)来完成不同的任务。因此,代理的角色扮演能力是非常重要的。虽然对于许多常见的角色(例如影评人),LLM可以很好地模拟它们,但LLM仍然很难捕捉到许多角色和方面。首先,LLM通常是基于网络语料库进行训练的,因此对于网络上很少讨论的角色或新出现的角色,LLM可能无法很好地模拟它们。此外,先前的研究表明,现有的LLM可能无法很好地模拟人类的认知心理特征,导致在对话场景中缺乏自我意识。这些问题的潜在解决方案可能会微调LLM或仔细设计代理提示/架构。例如,人们可以首先收集不常见角色或心理特征的真实人类数据,然后利用这些数据来微调LLM。然而,如何确保微调后的模型仍然能很好地执行常见角色可能会带来进一步的挑战。除了微调之外,还可以设计定制的代理提示/架构,以增强LLM在角色扮演方面的能力。然而,找到最佳提示/架构并不容易,因为它们的设计空间太大。

6.2 广义与人对齐

对于传统的LLM,人们已经讨论了很多人与人之间的关系。在自主人工智能代理领域,特别是当代理用于模拟时,我们认为应该更深入地讨论这个概念。为了更好地为人类服务,传统的LLM通常会经过微调,以符合正确的人类价值观,例如,代理人不应该计划制造一枚为社会复仇的炸弹。然而,当代理被用于真实世界的模拟时,理想的模拟器应该能够诚实地描述不同的人类特征,包括具有错误值的特征。事实上,模拟人类的消极方面可能更重要,因为模拟的一个重要目标是发现和解决问题,没有消极方面就意味着没有问题可以解决。例如,为了模拟现实世界的社会,我们可能必须允许代理人计划制造炸弹,并观察它将如何执行计划以及其行为的影响。基于这些观察,人们可以采取更好的行动来阻止现实社会中的类似行为。受上述案例的启发,基于agent的模拟可能面临的一个重要问题是如何进行广义的人类对齐,即对于不同的目的和应用,agent应该能够与不同的人类价值观进行对齐。然而,包括ChatGPT和GPT-4在内的现有强大LLM大多与统一的人类价值观保持一致。因此,一个有趣的方向是如何通过设计适当的提示策略来“重新调整”这些模型。

6.3 提示的鲁棒性

为了确保代理的合理行为,设计人员通常会将额外的模块(如内存和规划模块)合并到LLM中。然而,纳入这些模块需要开发更多的提示,以促进一致的操作和有效的沟通。先前的研究强调了LLM提示缺乏稳健性,因为即使是微小的改变也会产生显著不同的结果。当构建自治代理时,这个问题变得更加明显,因为它们包含的不是单个提示,而是考虑所有模块的提示框架,其中一个模块的提示有可能影响其他模块。此外,提示框架在不同的LLM之间可能存在显著差异。开发一个可应用于各种LLM的统一而强大的提示框架是一个重要但尚未解决的问题。对于上述问题,有两种潜在的解决方案:(1)通过试错手动制作基本提示元素,或(2)使用GPT自动生成提示。

6.4 幻觉

幻觉对LLM提出了根本性的挑战,其中模型错误地自信地输出虚假信息。这个问题在自主代理中也很普遍。例如,在[67]中,观察到当在代码生成任务中遇到简单化的指令时,代理可能会表现出幻觉行为。幻觉可能导致严重后果,如错误或误导性代码、安全风险和道德问题。为了解决这个问题,一种可能的方法是将人类校正反馈纳入人类-主体相互作用的循环。关于幻觉问题的更多讨论可以在[157]中看到。

6.5 知识边界

自动AI Agent的一个重要应用是模拟不同的真实世界人类行为。人类模拟的研究有着悠久的历史,最近人们的兴趣激增可归因于LLM取得的显著进步,LLM在模拟人类行为方面表现出了显著的能力。然而,重要的是要认识到LLM的力量可能并不总是有利的。具体来说,理想的模拟应该准确地复制人类的知识。在这方面,LLM可能会表现出过度的权力,因为它们是在超出普通人范围的广泛网络知识库上进行训练的。LLM的巨大能力可以显著影响模拟的有效性。例如,当试图模拟各种电影的用户选择行为时,确保LLM处于对这些电影一无所知的位置是至关重要的。然而,LLM有可能已经获得了有关这些电影的信息。如果不实施适当的策略,LLM可能会根据他们广泛的知识做出决定,即使现实世界的用户事先无法访问这些电影的内容。基于以上例子,我们可以得出结论,对于构建可信代理仿真环境,一个重要的问题是如何约束LLM的用户未知知识的使用。

6.6 高效性

由于其自回归架构,LLM通常具有较慢的推理速度。然而,代理可能需要多次查询每个动作的LLM,例如从内存模块中提取信息、在采取行动之前制定计划等。因此,LLM推理的速度在很大程度上影响了代理动作的效率。使用相同的API密钥部署多个代理可能会进一步显著增加时间成本。

7 结论

在这篇综述中,我们系统地总结了基于LLM的自动代理领域的现有研究。我们从代理的构建、应用和评价三个方面介绍和综述了这些研究。对于其中的每一个方面,我们都提供了一个详细的分类法,以在现有研究之间建立联系,总结主要技术及其发展历史。除了回顾以前的工作外,我们还提出了该领域的几个挑战,这些挑战有望指导未来的潜在方向。

相关文章:

A Survey on Large Language Model based Autonomous Agents

本文是LLM系列的文章,针对《A Survey on Large Language Model based Autonomous Agents》的翻译。 基于大模型的自动agents综述 摘要1 引言2 基于LLM的自动代理构建3 基于LLM的自动代理应用4 基于LLM的自动代理评估5 相关综述6 挑战6.1 角色扮演能力6.2 广义与人对…...

Integer、Long 等包装类 == 值判断、地址判断与缓存

先看下以下代码和输出 public static void main(String[] args) throws Exception{Integer a-128;Integer aa-128;System.out.printf("aaa? %s \n",aaa);Integer b127;Integer bb127;System.out.printf("bbb? %s \n",bbb);Integer c128;Integer cc128;Sy…...

numpy学习:reshape和resize

.reshape 与 .resize reshape:有返回值,所谓有返回值,即不对原始多维数组进行修改; resize:无返回值,所谓无返回值,即会对原始多维数组进行修改;...

JPA在不写sql的情况下实现模糊查询

本文已收录于专栏 《Java》 目录 背景介绍概念说明单字段模糊匹配:多字段模糊匹配: 实现过程代码实现1.写一个实体类去实现Specification接口,重写toPredicate方法2.定义一个接口去继承JpaRepository接口,并指定返回的类型和参数类…...

Java设计模式之单例模式

单例模式是一种设计模式,它的目的是确保一个类只有一个实例,并提供一个全局访问点来访问该实例。这个模式通常在需要控制资源访问权、限制实例化数量或实现全局共享时使用。 在实现单例模式时,一般会定义一个私有的构造函数,以防…...

Vue3 学习

基础 js:https://www.bilibili.com/video/BV15T411j7pJ/?spm_id_from333.337.search-card.all.click&vd_source9747207be61edfe4ec62226fc79b3589 官方文档: https://cn.vuejs.org/ 版本之间差异在关于---》版本发布 https://cn.vuejs.org/about/release…...

Error obtaining UI hierarchy Error taking device screenshot: EOF/NULL 解决办法

RT:Error obtaining UI hierarchy Error taking device screenshot: EOF/NULL 解决办法 关于monitor开发神器我就不多说了,但是假如我们在开发中遇到如上问题该怎么处理呢?别慌下面会有方法,不过不是对任何机型都有效&#xff0c…...

Java框架之王:Spring的崛起与进化

在Java世界中,Spring框架无疑已经成为了一个传奇。它为开发者提供了强大的工具和丰富的功能,使得构建高质量、可扩展的Java应用程序变得轻松便捷。本文将带您领略Spring的魅力,以及它在过去几年中的崛起和进化。 一、Spring的崛起 Spring框…...

【位运算】位运算常用技巧总结

目录 前言 一.常见的小问题 1.给定一个数n,确定它的二进制表示中的第x位是0还是1 2.给定一个数n,将它的二进制表示中的第x位修改成1 3.给定一个数n,将它的二进制表示中的第x位修改成0 4.给定一个数n,提取它的二进制表示中最右侧的1&…...

【STM32】IIC使用中DMA传输时 发送数据总少一个的问题

问题描述 在使用STM32 I2C数据发送过程中,发现每轮实际发送出去的数据总比在DMA配置中设定的传输数据个数要少一个。比方说:DMA配置里设定的传输数据个数是10个,结果发现在总线上只能发出9个,经过进一步发现是少了最后一个数据。…...

记录layui数据表格使用文件上传按钮

一、前言 虽然用到这种的情况不多&#xff0c;但是还是记录下 二、相关代码 <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html;charsetutf-8"/><meta name"renderer" content&quo…...

c++之枚举

1、背景 在开发代码的过程中&#xff0c;vector类型数组a的index取了一个枚举值CTR&#xff0c;eg&#xff1a;a[CTR]&#xff0c;刚开始以为是map类型&#xff0c;后面看不是&#xff0c;简单的看了下c的enum类型&#xff0c;原来enum按顺序默认为数字。 2、enum简介 2.1、…...

LeetCode 热题 100(七):105. 从前序与中序遍历序列构造二叉树、14. 二叉树展开为链表

题目一&#xff1a; 105. 从前序与中序遍历序列构造二叉树https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ 思路&#xff1a;依据前序遍历的根左右和中序遍历的左根右&#xff0c; 且根左长度&#xff1d;左根 代码&#xff1a; …...

机器学习笔记 - 在表格数据上应用高斯混合GMM和网格搜索GridSearchCV提高分类精度的机器学习案例

1、需求及数据集说明 这是一项二分类任务,评估的是分类准确性(正确预测的标签百分比)。训练集有1000个样本,测试集有9000个样本。你的预测应该是一个9000 x 1的向量。您还需要一个Id列(1到9000),并且应该包括一个标题。格式如下所示: Id,Solution 1,0 2,1 3,1 ... 900…...

【UE 材质】模型部分透明

材质节点如下&#xff0c;这里简单解释一下。首先通过“Mask”节点将"Texture Coordinate" 节点中的“G”通道分离出来&#xff0c;然后通过“if”节点进行判断&#xff0c;当值小于0.5时为透明&#xff0c;当颜色不小于5时为不透明。可以通过一个参数来控制模型透明…...

Web3 社交平台如何脱颖而出?我们和 PoPP 聊了聊

能够颠覆 Web2 传统模式的社交产品有着怎样的特征&#xff1f;PoPP 作为专注于 Web3 的私域流量变现平台&#xff0c;为开发者和用户提供了社交产品发展的新路径&#xff0c;让社区用户充分实现互动交流&#xff0c;着力于创作内容的激励与变现。事实上&#xff0c;面对 Web3 社…...

【Android】ARouter新手快速入门

什么是ARouter ARouter是阿里巴巴推出的一款android界面路由框架 ARouter解决的核心问题是什么 在大型的模块化项目中&#xff0c;一个模块&#xff0c;往往无法直接访问到其它模块中的类&#xff0c;必须通过其它方式来完成模块间的调用 ARouter的核心功能在于&#xff0c…...

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)十一:通用表单组件封装实现

一、本章内容 本章实现通用表单组件,根据实体配置识别实体属性,并自动生成编辑组件,实现对应数据填充、校验及保存等逻辑。 1. 详细课程地址: 待发布 2. 源码下载地址: 待发布 二、界面预览 三、开发视频 3.1 B站视频地址:...

Oracle Scheduler学习

参考文档&#xff1a; Primary Note: Overview of Oracle Scheduler (Doc ID 1485539.1) Oracle Database Administrators Guide 12c Release 1 (12.1) E17636-21 Chapter(30) Administering Oracle Scheduler Examples of Using the Scheduler http://docs.oracle.com/cd/E166…...

用户体验地图是什么?UX设计心得分享

大家好&#xff0c;我是设计师l1m0身。本篇文章是关于UX设计中的用户体验地图。 对于新手设计师来说&#xff0c;建立用户体验地图会有一些难度。本篇文章中&#xff0c;我会以简单、易懂的语言分享UX设计师如何制作用户体验地图&#xff0c;希望对你的日常项目体验提升有所帮…...

vue3动态路由警告问题

{ path: "/:pathMatch(.*)*", // 必备 component: () > import("/views/error/404.vue"), }, 路由里添加...

17 Linux之大数据定制篇-Shell编程

17 Linux之大数据定制篇-Shell编程 文章目录 17 Linux之大数据定制篇-Shell编程17.1 Shell编程简介17.1.1 为什么要学习Shell编程17.1.2 Shell是什么17.1.3 执行Shell脚本 17.2 Shell的变量17.2.1 Shell变量介绍17.2.2 设置环境变量17.2.3 位置参数变量17.2.4 预定义变量 17.3 …...

SpringBoot集成WebSocket

SpringBoot集成WebSocket 项目结构图 项目架构图 前端项目 socket.js 注意前端这里的端口是9000, 路劲是ws开头 function createScoket(token){var socket;if(typeof(WebSocket) "undefined") {console.log("您的浏览器不支持WebSocket");}else{var ho…...

Linux服务器部署JavaWeb后端项目

适用于&#xff1a;MVVM前后台分离开发、部署、域名配置 前端&#xff1a;Vue 后端&#xff1a;Spring Boot 这篇文章只讲后端部署&#xff0c;前端部署戳这里 目录 Step1&#xff1a;服务器上搭建后端所需环境1、更新服务器软件包2、安装JDK83、安装MySQL4、登录MySQL5、修…...

原生小程序 wxs 语法(详细)

WXS WXS&#xff08;WeiXin Script&#xff09;是内联在 WXML 中的脚本段。通过 WXS 可以在模版中内联少量处理脚本&#xff0c;丰富模板的数据预处理能力。另外&#xff0c; WXS 还可以用来编写简单的 WXS 事件响应函数。 从语法上看&#xff0c; WXS 类似于有少量限制的 Java…...

MySQL中count(*)和count(1)和count(column)使用比较

分页查询数据&#xff0c;需要返回total&#xff0c;而这个值一般都是通过count函数实现。但是&#xff0c;针对count函数&#xff0c;有多种写法&#xff0c;如count(*)、count(1) 和 count(column)等。本文主要介绍以上几种写法的差异。 注意&#xff0c;这里仅针对MySQL数据…...

python用 xlwings库对Excel进行 字体、边框设置、合并单元格, 版本转换等操作

xlwings 其他的一些单元格读取写入操作网上很多&#xff0c; 下面就写些如何设置单元格的 字体对齐&#xff0c;字体大小、边框&#xff0c; 合并单元格&#xff0c; 这些设置。 import xlwings as xwapp xw.App(visibleTrue, add_bookFalse) app.display_alerts False #…...

Golang 中的 archive/zip 包详解(二):常用类型

Golang 中的 archive/zip 包用于处理 ZIP 格式的压缩文件&#xff0c;提供了一系列用于创建、读取和解压缩 ZIP 格式文件的函数和类型&#xff0c;使用起来非常方便。 zip.File 类型 定义如下&#xff1a; type File struct {FileHeaderzip *Readerzipr io…...

Qt应用开发(基础篇)——错误提示框 QErrorMessage

一、前言 QErrorMessage类继承于QDialog&#xff0c;是一个用来显示错误信息的对话框。 提示框QDialog 消息对话框 QMessageBox QErrorMessage错误消息对话框提供了一个主文本窗口、一个复选框、一个图标和按钮。文本框用来显示错误信息&#xff0c;复选框用来让用户选择未来是…...

HLS 后端示例

更多 TVM 中文文档可访问 →Apache TVM 是一个端到端的深度学习编译框架&#xff0c;适用于 CPU、GPU 和各种机器学习加速芯片。 | Apache TVM 中文站 TVM 支持带有 SDAccel 的 Xilinx FPGA 板&#xff0c;接下来介绍如何将 TVM 部署到 AWS F1 FPGA 实例。 备注&#xff1a;此功…...