大模型AI Agent 前沿调研

前言

大模型技术百花齐放,越来越多,同时大模型的落地也在紧锣密鼓的进行着,其中Agent智能体这个概念可谓是火的一滩糊涂。

今天就分享一些Agent相关的前沿研究(仅限基于大模型的AI Agent研究),包括一些论文或者框架,小伙伴可以根据自己的兴趣有选择的看一下~,其中角色扮演也可以看作Agent的一个较为火热的方向(具体的Agent就是一个具体角色),最后在文末从技术的角度整体总结一下agent的核心。

先给两个综述,大家可直接阅读,然后笔者挑一些有意思的总结一下。

温馨提示:全文较长,建议收藏,慢慢啃~

综述

A Survey on Large Language Model based Autonomous Agents

论文链接:https://arxiv.org/pdf/2308.11432.pdf

这是一篇关于agents的综述

Autonomous-Agent

github链接:https://github.com/lafmdp/Awesome-Papers-Autonomous-Agent

该git也在不断的收藏一些关于agent的前沿研究。

一些代表性的研究

(1) A Survey on Large Language Model based Autonomous Agents

论文链接:https://arxiv.org/pdf/2308.11432.pdf

本文为基于大模型agent的构建设计了一个统一框架并给出了三种学习策略。

具体的该框架由4个模块构成(如上图):配置模块、记忆模块、规划模块和执行模块。配置模块有3种方法来生成配置文件:手工制作法、LLM生成方法、数据集对齐方法;记忆模块分为3个方面:结构、格式和操作;记忆结构包括两种:统一内存(该结构没有短期和长期记忆的区别)和混合内存(有短期和长期记忆的区别);规划模块包括没有反馈的规划和带反馈的规划;动作模块即是最终真真响应的模块。

三种学习策略分别为从例子、人类反馈和环境反馈中学习。

本篇paper很好的抽象规划了整个框架,尤其是4个模块的设计,可以借鉴一下。

(2)Improving Language Model Negotiation with Self-Play and In-Context Learning from AI Feedback

论文链接:https://arxiv.org/pdf/2305.10142.pdf

论文中的两个agent分别模拟买卖双方进行一场交易,具体就是利用两个agent来彼此不断互相对话、不断博弈,买方最终目的就是要以尽可能低的价格达成交易,而卖房则相反。其中核心技术看点就是在对话中使用一个中间agent利用cot进行反馈,告诉当前agent如何更好的回复才对自己最有利。

(3)Exploring Large Language Models for Communication Games: An Empirical Study on Werewolf

论文地址:https://arxiv.org/pdf/2309.04658.pdf

该篇论文尝试了同时启用很多的agent来互相配合完成一个更复杂的任务,具体的是使用了7个agent来完成一个狼人杀游戏,每个agent都要牢记自己的角色扮演规则。其中核心技术看点就是每个agnet都会提前定义好自己的角色定位,该规则和描述的prompt都是非常详细和具体的,同时更关键的是这些agent之间的复杂交互也即调用逻辑,其中下面就是agent角色的定义:

(4) METAGPT: META PROGRAMMING FOR A MULTI-AGENT COLLABORATIVE RAMEWORK

论文链接:https://arxiv.org/pdf/2308.00352.pdf

github: https://github.com/geekan/MetaGPT

metagpt实现了一个多agent的框架,方便大家迅速落地自己的场景,目前github stars已经3w+,官方demo演示了如何自动开发一个代码需求,比如来了一个需求后,它的agent包括产品经理先分析需求,然后开发工程师开发,最后还有code review等等。同时也使用该框架实现了狼人杀。

metagpt核心技术看点就是封装好了很多agent的基础能力比如包括交互通信等等。

(5) CAMEL: Communicative Agents for “Mind” Exploration of Large Language Model Society

论文链接:https://arxiv.org/pdf/2303.17760.pdf

github: https://github.com/camel-ai/camel

camel提出的也是一种基于角色扮演来模拟多个agent交互的框架。具体的,camel重点研究任务导向的agent,其中一个是AI助手agent,另外一个是AI用户agent。

当camel收到一个具体需求和角色分配后,任务agent先提供详细描述以使这个需求更具体化,然后AI助手agent和AI用户agent会通过多轮对话一起合作来完成指定的任务。其中AI用户agent负责向AI助手agent提供指示并引导对话朝向任务完成方向进行,AI助手agent则理解AI用户agent的指示并提供具体的解决方案。

这里贴一下它的核心的agent prompt

论文中对prompt的每一条为啥要这样写都给出了理由,比如AI助手agent的prompt中有一条是“Always end your solution with: Next request”,这个是和AI用户agent要新一轮的指令,这样可以确保对话自动聊下去,这才是是非常关键的一点!!!是整个机制能自动run起来的关键。

另外作者为了自动获得对话数据,还借助大模型自动生成各种各样“AI助手agent&AI用户agent” 角色pair对,然后再为各个角色pair对生成多个相关话题,有了这些后就可以借助上面的机制进行多轮聊天。

这篇很好的实现完全自动化,无限挖掘;其中起了关键作用的就是上面这些prompt怎么写,论文都给出来了,大家感兴趣的可以去看原论文。

(6) AgentTuning: Enabling Generalized Agent Abilities for LLMs

论文地址:https://arxiv.org/abs/2310.12823

github链接:https://github.com/THUDM/AgentTuning

文中构建了一个包含高质量交互轨迹的微调数据集AgentInstruct,并且将其和通用能力的sft数据混合训练得到AgentLM。

其最大的亮点就是AgentInstruct数据集的构建,其主要依托的数据是来自AgentBench,其包含了6个来自真实世界的智能体任务。在构建好了基本的输入指令后,便以GPT-4作为智能体生成AgentInstruct。

(7) CHATANYTHING: FACETIME CHAT WITH LLM-ENHANCED PERSONAS

论文链接: https://arxiv.org/pdf/2311.06772.pdf

github链接: https://chatanything.github.io

本篇论文比较脑洞大,他是给定一张图片比如西瓜,然后会自动生成一个西瓜人agent回你对话。它主要涉及到三块,生成图像、tts以及人物性格生成;其中前两个分别是图像和语音技术这里我们不展开说了,感兴趣的小伙伴可以自己去读一下;人物性格生成这个主要也是借助LLM去自动生成贴切的性格,文章也给出了最核心的prompt:


(8) ROLELLM: BENCHMARKING, ELICITING, AND ENHANCING ROLE-PLAYING ABILITIES OF LARGE LANGUAGE MODELS

论文链接:https://arxiv.org/pdf/2310.00746.pdf

本文构建实现了一套角色扮演的方案,比如扮演孙悟空、哈利波特等等,每个角色都会有自己的说话风格并且都会有自己对应的角色背景,比如孙悟空自己的师傅是唐僧等等,在遇到有关唐僧的问题的时候,要注意结合师徒这个背景来回答。

文章主要的idea就是借助剧本来检索增强回复,同时作者基于llama训练了一个英文角色模型,基于glm训练了一个中文角色模型。

(9) Does Role-Playing Chatbots Capture the Character Personalities? Assessing Personality Traits for Role-Playing Chatbots

论文链接:https://arxiv.org/pdf/2310.17976.pdf

本文重点关注角色扮演agent领域,具体是研究如何评估大模型的角色扮演效果

论文中的方法是基于大五人格、MBTI等心理学的人格相关理论,对角色扮演AI进行了人格测试。具体的是提出了一套为角色扮演AI设计的面谈式人格测试框架,基于人格测试量表与角色扮演AI展开开放式问答来进行评估。

(10) AutoGPT、XAgent、LangChain

AutoGPT : https://news.agpt.co

XAgent: https://github.com/OpenBMB/XAgent

LangChain: https://www.langchain.com

类似Metagpt, AutoGPT、XAgent、LangChain都是一些基于大模型开源的agent框架,其中LangChain更是在业界大名鼎鼎。

总结

Agent概念很大,这里如果我们纯从技术角度来看的话(且是依靠大模型的AI Agent),它的核心壁垒在哪里呢?或者说其最值钱的那部分技术是啥呢?

笔者将其归纳为如下两个核心:

  • 拆分问题 & 调用逻辑

需要构思好怎么将当前的任务进行更好的拆分成一个个子任务,以确保这些子任务足够简单、完成的准确率足够高;当这些子任务都确保能被很好的完成,那么最终的任务就能很好的完成了。

所以拆分问题很关键,拆分的粒度如果太粗,子任务难度系数就高,就很容易失败;拆分的粒度如果太西,调用逻辑就很繁琐,整个链路就会很臃肿,所以对需求和业务的理解越深刻,拆解才会越相对合理。

同时拆分的是否合理还会影响另外一个关键问题:后期自研模型的开发。当我们想利用大模型开发Agent的时候,一般来说会先去使用GPT4去试一试(毕竟其目前是大模型的天花板),如果它都完成的不好,那要么自己当前Agent的设计框架需要进一步完善,要么就是这个事目前大模型还真的是很难完成。当GPT4完成的还不错后,出于安全和成本等考虑我们必定是想走自研模型这条路的,做到自主可控,那么我们就可以前期使用GPT4去积累数据,然后用这部分数据去蒸馏训练出自己的大模型。

那么如果你的任务拆分的粒度太细,假设有100个子任务(这里指要最终调用大模型能力),那么如何将这100个任务同时进行大模型训练,平衡住所有任务的能力,这是很难的(每个子任务训练一个大模型也太不现实了),当然如果拆分的粒度太粗,单个子任务本身就很难,那单训练好这个子任务可能都是问题,就更别提要融合所有子任务了;

  • prompt engineering

当我们把当前这个Agent需要完成的任务多步拆解后以及理顺子任务之间的联动调用链路后,那么完成这些子任务就需要调用大模型了(当然有时候是调用一些其他插件比如计算器、搜索引擎等等;即使是调用插件其实上一步也一般是需要调用大模型来分析出要调用哪个插件以及插件需要的参数)。

既然是调用大模型,那么如何写好prompt让大模型完全get到你的需求,这是非常关键的,如果没写好prompt,那么子任务就失败了,整个链路就run不起来。

这块工作也是最繁琐和最需要经验的,要不断的去试进而润色出一个很棒的prompt。甚至笔者觉得在某些场景下,当你要做一个agent项目时,prompt engineering是你第一步要去做的事情,先去试着写几个prompt看看大模型能完成的怎么样?自己感受感受摸个底,这样也才可以有更多灵感看看怎么将任务进行更好的拆解,通过多步调用大模型(也即上面说的第一个核心点)来合作完成。

关注

欢迎关注,下期再见啦~

知乎,csdn,github,微信公众号

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

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

相关文章

完美解决AttributeError: module ‘numpy‘ has no attribute ‘typeDict‘

文章目录 前言一、完美解决办法安装低版本1.21或者1.19.3都可以总结 前言 这个问题从表面看就是和numpy库相关,所以是小问题,经过来回调试安装numpy,发现是因为目前的版本太高,因此我们直接安装低版本numpy。也不用专门卸载目前的…

Qt全球峰会2023中国站 参会概要

Qt全球峰会2023中国站 参会概要 前言峰会议程签到 & Demo 演示开场致辞Qt Group 产品总监演讲(产品开发的趋势-开放的软件、工具和框架)产品战略QtQuick or QtWidgets(c or qml)Qt如何定义AI个人看法 Qt 在券商数字化转型和信…

【MySQL】内连接和外连接

内连接和外连接 前言正式开始内连接外连接左外连接右外连接 前言 前一篇讲多表查询的时候讲过笛卡尔积,其实笛卡尔积就算一种连接,不过前一篇讲的时候并没有细说连接相关的内容,本篇就来详细说说表的连接有哪些。 本篇博客中主要用到的还是…

中部A股第一城,长沙如何赢商?

文|智能相对论 作者|范柔丝 长沙的马路,都很有故事。 一条解放西路,是全国人民都争相打卡的娱乐地标;一条太平街,既承载了历史的厚重又演绎着现代的鲜活...... 但如果来到河西的桐梓坡路,风景会变得截然不同。 沿…

安装MySQL搭建论坛

课前默写: 1、nginx配置文件的区域有哪些 ①全局区域 ②events区域 ③http区域 2、区域模块的作用 全局区域模块主要是用户和工作进程 events区域模块配置最大连接数时需先配置:vim /etc/limits.conf 因为系统默认最大是1024 http区域模块:代理地…

BUUCTF [HBNIS2018]excel破解 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 得到的 flag 请包上 flag{} 提交。来源: https://github.com/hebtuerror404/CTF_competition_warehouse_2018 密文: 下载附件,得到一个attachment.xls文件。 解题思路&#xff…

计算机视觉的应用19-基于pytorch框架搭建卷积神经网络CNN的卫星地图分类问题实战应用

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用19-基于pytorch框架搭建卷积神经网络CNN的卫星地图分类问题实战应用。随着遥感技术和卫星图像获取能力的快速发展,卫星图像分类任务成为了计算机视觉研究中一个重要的挑战。为了促进这一…

git的用法

目录 一、为什么需要git 二、git基本操作 2.1、初始化git仓库 2.2、配置本地仓库的name和email 2.3、认识工作区、暂存区、版本库 三、git的实际操作 3.1 提交文件 3.2 查看git状态以及具体的修改 3.3 git版本回退 git reset 3.1 撤销修改 四、git分支管理 4.…

vue el-table (固定列+滚动列)【横向滚动条】确定滚动条是在列头还是列尾

效果图&#xff1a; 代码实现&#xff1a; html&#xff1a; <script src"//unpkg.com/vue2/dist/vue.js"></script> <script src"//unpkg.com/element-ui2.15.14/lib/index.js"></script> <div id"app" style&quo…

【数据结构】树如何定义 | 如何存储 | 实际应用

前言 如上图&#xff0c;A中的孩子的个数是不固定的。我们无法精确的每个不同的根结点有多少个孩子。所以并不能精确知道需要定义多少个孩子节点。 struct TreeNode {int val;struct TreeNode* child1;struct TreeNode* child2;struct TreeNode* child3;//...//这样显然是不能…

springboot 拦截器中使用@Value注解为null

拦截器中获取配置参数为null 代码如下&#xff1a; 解决方式一&#xff1a; 检查你的WebMvcConfigurer实现类&#xff0c;比如我的是CCBWebMvcConfig 将拦截器以bean的形式注入&#xff1a; 我之前的写法是new 一个放进去的&#xff0c;这种会导致Value为null AutowiredJSCCB…

2014年10月6日 Go生态洞察:Go在Google I/O和Gopher SummerFest的应用

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

《微信小程序开发从入门到实战》学习二十七

3.4 开发参与投票页面 3.4.2 借用伪造数据开发功能 为了便于开发&#xff0c;新建一个编译模式&#xff1a; 之前没看文章&#xff0c;每次都习惯性填完投票创建的信息提交再跳转看效果。好累。 添加变异模式开发真方便。 另外&#xff0c;点击提交后没跳转到投票页面&#…

xorm源码学习

文章目录 XORM源码浅析及实践ORMORM vs. SQLXORM软件架构 ORM 引擎 Engine——DBM*core.DB Golang&#xff1a;database/sql 源码基本结构连接复用&#xff0c;提高性能。增加数据库连接池数量连接管理 database/sql主要内容&#xff1a;sql.DB创建数据库连接sql.Open()DB.conn…

Spring——感谢尚硅谷官方文档

Spring——尚硅谷学习笔记 1 Spring简介&#x1f47e;1.1 Spring概述1.2 Spring Framework1.2.1 Spring Framework特性1.2.2 Spring Framework五大功能模块 2 IOC-IOC容器思想&#x1f47e;IOC容器思想IOC在Spring中的实现 3 IOC-基于XML文件管理Bean&#x1f47e;3.1 准备工作…

2023亚太杯数学建模A题思路 - 采果机器人的图像识别技术

# 1 赛题 问题A 采果机器人的图像识别技术 中国是世界上最大的苹果生产国&#xff0c;年产量约为3500万吨。与此同时&#xff0c;中国也是世 界上最大的苹果出口国&#xff0c;全球每两个苹果中就有一个&#xff0c;全球超过六分之一的苹果出口 自中国。中国提出了一带一路倡议…

数据库实验四 索引创建与管理操作

数据库实验四 索引创建与管理操作 一、实验目的二、设计性实验三、观察与思考 一、实验目的 (1) 理解索引的概念与类型。 (2) 掌握创建、更改、删除索引的方法。 (3) 掌握维护索引的方法。 二、设计性实验 在数据库job下创建worklnfo表。创建表的同时在id字段上创建名为inde…

【HarmonyOS】元服务卡片本地启动拉起加桌没问题,上架后拉起加桌时卡片展示异常

【关键字】 加桌选卡展示异常 、 2卡共用一个布局 、 代码混淆 【问题现象】 元服务卡片在本地启动拉起加桌时&#xff0c;多卡的选卡过程显示是没问题的。但是在上架后拉起加桌时&#xff0c;多卡的选卡过程卡片展示异常。 代码逻辑是通过创建卡片的时候判断卡片的尺寸大小…

数据结构与算法编程题13

设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C&#xff0c;其中B表的结点为A表中值小于零的结点&#xff0c;而C表的结点为A表中值大于零的结点&#xff08;链表A中的元素为非零整数&#xff0c;要求B、C表利用A表的结点&#xff09; for example: A -1 2 …