【2024】Datawhale AI夏令营-从零上手Mobile Agent-Task2笔记
本文介绍通义实验室最新的多模态手机智能体工作------Mobile-Agent。
一、大模型智能体背景
1.1 大模型智能体的优势
随着大模型的高速发展,大模型智能体成为热门研究方向,受到工业界和学术界的广泛关注。
在大模型智能体诞生之前,智能体主要基于强化学习(RL)设计,如OpenAI Five和DeepMind AlphaStar。然而基于RL的智能体存在一定的局限性:
- 智能体在专有环境中进行采样(即采集数据),且采样的效率较低
- 智能体的采样针对专有任务进行(一个环境中可以有不同任务)
- 受限于RL的缺陷,如难以应对稀疏奖励和长视野等问题
与基于RL的智能体相比,基于大模型智能体的优势:
-
大模型基于海量的预训练数据进行训练, 具有这种丰富的世界知识,而不是只针对单一的、特定的任务的知识
-
大模型具有非常强的推理和规划能力,不需要适配特定任务
-
大模型具有非常强的工具使用能力,如检索、编写代码
-
大模型具有in-context learning的能力,能够学习人们额外定义的知识、记忆等内容并执行相关的指令
以上优势使得大模型智能体在近两年得到高速发展。
1.2 大模型智能体的定义及整体框架
传统的(神经网络)模型通过输入得到输出,没有思考和记忆的能力。在人工智能中,智能体指能够观察周遭环境,做出行动以达成目标的自主实体,具有思考和记忆能力。与传统模型相比,智能体更接近人。
下图左侧对智能体的定义为:
-
具有记忆(memory),包括长期记忆和短期记忆
-
能够针对不同的任务调用不同的工具(tools)
-
具有规划(planning)能力,即对于特定任务,首先整体规划如何完成任务,随后在操作过程中进行反思,最后做出决策
下图右侧与左图类似,区别在于增加了profile,即智能体除了memory、planning、tools、actions,还可以加入关于智能体个性的描述,描述的内容可以是智能体角色的人设、知识背景、风格、情绪等。character-AI以及通义实验室的星尘都是这种个性化的智能体。
1.3 大模型智能体发展迅速
在大模型广泛使用之后,去年开始出现大量大模型智能体,相关的模型、框架、应用的提出均呈现井喷趋势。
下图左侧展示了当前大模型智能体的类型,有:General Agent、Tool Agent(偏工具)、Embodied Agent、Game Agent(偏游戏)、Web Agent、Mobile Agent等。
下图右侧展示了大模型智能体广泛的应用场景,包含:编程、移动手机、IOS系统、招聘等。
二、Mobile-Agent-V1
本文介绍的Mobile-Agent属于多模态手机智能体,通过一句指令实现各类自动手机操作。
2.1 Mobile-Agent的特点
-
纯视觉方案,不依赖于任何系统数据
已有的智能体相关工作依赖手机的xml文件,但xml文件获取难度大、不够灵活
-
跨APP操作:可以在多个APP之间完成操作
-
具有感知、规划和反思能力。
感知:知道手机界面哪些位置可以点、点哪个位置才能完成指令。
规划:手机操作通常是连续、多步的,完成整个任务需要整体规划能力。
反思:如果中间某个步骤点错位置,或者已经完成任务,需要返回到上一步或结束这个任务。如果没有反思能力,手机操作会卡在错误步骤,或者一错再错。
2.2 Mobile-Agent V1的示例
-
分析天气:从主页点开天气APP,把天气记录下来,然后进行分析
-
刷短视频并点赞(如:在tik tok上刷短视频并点赞)
-
搜索视频并评论(如:在youtube搜索相关视频并在视频下面作出评论)
-
手机导航
-
玩游戏(如:斗地主)
2.3 Mobile-Agent V1的实现过程
首先 刚刚提到了我们是一个纯视觉的方案,所以我们的输入主要就是用户给的一个全局的指令 比如是搜索今天湖人队的比赛结果,然后在笔记本上记一下战况的分析。然后在每步操作的时候 我们需要把历史操作以及它的截屏作为输入 然后以及当前屏幕的截屏
大家可以看到 其实我们是一个纯视觉的方案然后我们某标挨进的这个智能体 它会观察当前页面的情况 然后思考下一步的操作思路,然后进行action 就使用工具完成思考中的一些操作。
在操作的过程中 因为现在大模型多模态大模型缺乏比较精确的这种管理的能力 所谓管理的能力就是你给了他的指令 就比如我们要点就是这个小红星就点赞这个 但是我们需要知道他对应的位置在哪里 其实就通过文本到图片找位置 这就是多模态的一个经典的任务------grounding
现在的多模态大模型普遍的grounding的能力都不太行 包括GPT4和GPT4o
对 所以我们就采用了一个 就是基于OCR的工具 因为欧斯牙的工具其实是带这种bound ing box
我们可以知道他对应的这个bound ing box的位置
然后第二其实就是图标分割的工具其实他也是可以带这种bindbox的这种位置信息的 所以我们就借用了两种带有定位能力的工具,然后来提升多么台大模型的这个定位的能力
然后我们整个猫标a键的 它有哪些action的呢 就是action的空间的 我们主要定义了七类:
第一个就是点击文本
第二就点击图标
第三个就是打字
第四个就是上滑和下滑
第五个就是返回上一个界面就是刚刚提到的 如果做错了 他需要返回上一个界面
第六个就是返回桌面 如果我们有的操作多步操作的话 多不app操作的话 其实中间一个app需要返回桌面
最后一个就是结束整个操作指令
这是我们大概定义的七个空间 。比如这种滑动 这种进度条啊 然后以及就是复制粘贴啊这些其实都可以把它放到行为空间里面
然后这个是我们整个V1的一个show case 就是我想知道今天的湖人的比赛的比分 然后并且把并且发现一个app来帮助我对 然后 其实这就是我们大概的操作过程 就是首先从桌面中点击Google search然后其实第二步和第三步就是一个反思的过程 在第二步的时候其实他是点错了的 然后第三步的时候 他通过第三步反思第二步其实做错了 然后做出了一个正确的决策 其实是需要点点击搜索框的,而不是直接把那个指令换进去对 然后下面就是每一步的操作的过程 每一步其实我们需要确定他点击哪一个位置 然后以及对应位置的一个坐标 这样其实我们就可以用
端到端多模态手机智能体的方式就是完成这个整个的六步的手机操作 这个是我们目标a镜头唯一的工作。
但是目标a d的工作 因为它是一个单智能体的 所以我们所有的这种操作的历史历史就是图文的 这种操作历史其实都是把它存在history里边的 其实这就大大提升了这种智能体的序列长度,这也增加了任务进度的难度 如果大家的多模态大模型或者大模型比较了解的话 就是长序列其实是一个非常大的问题在序列长度增长了之后 它的性能是会比较明显的下降的
然后我们底下也给了一个我们的分析吧就是比如当前的这部七步的操作的话 如果我们用V1把它全部存在history边的话他大概需要12k的token 无论是从成本还是效率的角度 他的就是都会存在一定的问题。就比如我们现在看到的 我们在后后面那个评测的accuracy 大家可以看到就是singleagent和multiagent 他他的效果上产生了非常大的差距 对这些其实都是说明了单agent的会存在 这种操作历史过长 从而导致这种整体的操作的难度和效率会大大的增加
然后我们就是首次提出了这种在手机操作任务中的多智能体的架构,并且延续了我们V1的这种纯视觉的方案 然后我们多智能体的好处就是
它可以各司其职,实现更高效的任务的进度追踪 任务的记忆和操作的反思 以及这种更强大的复杂指令的拆解能力
和跨app的以及多语言的能力
对我们其实V1在中文上其实效果没有那么好 然后我们V2上其实在中文上其实效果还是非常好的。然后我们这个我给出来一个 就是我们在那个高德打车上的一个kiss吧 大家可以看一下。然后右侧就是我们整个的操作过程吧 因为我们mobileagent的demo方式主要是基于安卓的模拟器 这右侧就是我们整个安卓模拟器的操作过程 就是它每一步需要如何做反思决策 然后以及planning 大家其实可以看到就是我们其实可以非常流畅的完成手机打车的这步操作 对planing其实就是整体规划 我们打车需要有哪些步骤 然后决策就是每一步当前这个界面 他需要做什么样的决策 反思的话就是判断当前界面完成的是否正确 或者是当前这个任务是否已经结束了
对然后这是我们其他的一些kiss吧。就是相比V1就是我们可以完成更加复杂的操作 然后第三个图就是类似于V1的一些比较基础的操作 另外四张图其实都是比较进阶的操作 需要跨app的
比如第一个就是在youtube上搜索欧文的视频 并且并且在这个视频下做出评论
然后第二个其实就是中文的一些setting 就比如在小红书啊在微信上的一些操作
然后第四个就是在twitter上搜索马斯克 然后并且找到他并且在他的啊 在他的post下做出评论
然后最后一个就是在那个ticktalk上找视频并且把对应的视频发给好友
对大家可以看到就是我展示这些kiss其实都是比V1就是更加难更加高阶的,然后也包含了 就是中英文的 所以证明了我们Mobile-Agent V2其实是有非常强的这种泛化能力和可用性
好的 下面给大家介绍一下我们Mobile-Agent V2他这个多智能框架具体是
是怎么样的 他主要分成了一个Planning agent 一个Decision agent一个Reflection agent
左侧的其实就是一个Planning Agent的 他需要整体规划完成这个任务的进程 并且包含了已经完成了哪些任务 就比如左侧的这个
黄橙色的框 然后以及需要记忆的一些mumbrary 就是一些key information
对 然后根据单前的界面以及已经完成的任务的进度 然后来决策单前这个界面需要进行哪一些操作,比如需要点哪个需要点哪一个位置吧
然后决策的agent就根据和兰迪agent给的这个指令然后然后然后决定这个界面具体要点哪一个坐标对 然后以及是否需要记一些信息 把它返回到那个planning的monumer模块里面
然后在决策agent完成决策之后 反思a镜头就会根据单前界面以及上一步操作的界面 然后以及memory来判断一下当前这部操作是完成的是否正确 适合返回到上一步以及这部 以及这整个任务是否完成
每一个a进的负责自己的工作 各司其职 这样其实就可以大大缓解 就是用单位镜头导致的 就是需要他首先存储就是之前所有的history 第二就是 第二就是 他就是既需要决策 又需要planning 又需要反思 就是对于单agent来说 他的压力是非常大的,所以我们把它产生多质能力之后 无论是它的效率还是效果其实都得到了比较明显的提升
对 然后我们也做了动态评测 然后包含了五个系统级的内置应用和五个第三方的app 然后每个app和多个app 我们都包含了两条基础指令和两条进阶指令
接下来的两个table 就是我们在中英文上的效果 大家其实可以看到V2相比 V1就是效果提升还是比较明显的。然后里面提到的每个评价指标就是我们下面提给出的 比如SR就是完成的成功率 完成的成功率其实主要就是完成和未完成
completion rate其实就是我们七步操作中他整体操作完成了多少步 然后以及决策的准确率和反思的准确率
大家其实可以看到我们某标a镜头v二相比v一其实性能提升还是比较明显的
并且我们第三行其实也是一个非常有意思的setting 因为很多app其实是一个新的appp然后第一个他他有可能遇到一个新的app 第二就是现在的mobile agent其实都是依赖于大语言模型具有这种知识的对 如果大语言模型没有覆盖的知识 其实我们是可以通过在指令里面加入一些操作指南,无论是人工定义的或者就是操作的说明书 其实这些其实都可以帮助我们的手机智能体更高效的完成一些任务
大家可以看到就是加入了知识之后就是某标a箭头v二它的性能可以进一步的提升,并且这个能力其实在实应用中是非常重要的 对于一些复杂的操作 他不能完成的时候其实需要加入人工的干预的以及一些知识的辅助的对
然后我们也做了一些oblation study吧 大家可以看到就是我们每一个agent的其实都是非常重要的 就是加入了三个agent的 都加入其实才能取得最好的效果
然后我们也做了这种操作长度的这个分析 其实大家可以看到 和我们的motivation是match的 就是在某标agent唯一的时候其实在增加操 如果操作越长的话 其实它的操作的完成率就会越低 而某标agent就是受这种操作指令操作的步骤的长度的影响其实是比较小的
然后我们也做了backbone的分析大家去看到 就现在来说最好的还是GPT-4V所以我们现在
就是给的demo还有一些showcase其实都是基于gb思维的 我们现在正在自研的以及后续我们正在做的其实是某标a键的v三就是希望能够把底座模型做成一个纯开源和就是大家能够整体复现结果的
然后这也是和我们魔搭社区一直坚持的开园的理念是比较卖气的 就后续也也欢迎各个同学能够加入到我们
整个毛标agent这个项目的弓箭中
然后这个是我们整个毛标agent的操作过程
就是这其实就相比之前给的某标a进的唯一的操作过程 就只有七步来说 就是整个某标a进的V2 他能做这种非常长的这种操作的过程 然后我们给的每一步的操作中其实就包含了这种plany啊 dc he mumbrymommy其实就需要
跨app的时候 有一些需要记忆的一些关键的一些信息 比如之前提到的 像记录湖人队的比分啊 然后记录当前的这些天气啊这些其实才能够做后续的一些操作对
如果大家感兴趣的话也可以看我们的文章 然后我们这文章其实已经挂出来了
四、Mobile-Agent开源实战
然后我们下面给大家介绍一下我们多么他手机之内某不要安静的开源和实战
开源链接:
https://github.com/X-PLUG/MobileAgent
https://github.com/modelscope/modelscope-agent
把这个手机智能体的身态真正的做起来 然后我大概给大家介绍一下 就是我们现在
目标安静的 它是如何应用的 我们现在目标安静的其实主要是基于安卓和鸿蒙系统因为他们是可以支持这种这种工具调用的 但是现在ios是暂时不支持的
首先 第一步 我们把那个我们这个整个项目依赖的一些库进行安装 对直接直接pip install就可以了
然后第二个就是下载这个 我刚提到的就是安卓模拟器adb
对 然后在adb上 就是在我们的移动设备就手机上开启这种usb和adb的调试 他通常需要这种打开开发者选项
下一步就是通过数据线把这种移动设备和电脑相连 就是需要插上手机
然后就是用下面的指令来测试一下你的连接是否成功了
然后 如果我们是用这种mac的或者linx的 需要先先为adb开启权限.
然后最后一步就是把pass这个路径加到windows电脑上
因为我们刚刚的操作其实是需要输入法的 比如回消息啊 比如搜索 所以我们需要在我们移动设备上安装adb的键盘
对 然后我们也给了adb建完APK的安装包 然后我们在设备上直接安装就可以了
然后第三步就是在系统设置上将默认的输入法改成这种adb的键盘
然后下一步就是选择合适的运行方式
就是我们在r的这个.py的这个文件上改一下你的设置 比如 因为我们是基于gb4Gp四v的嘛 所以就需要把gb四的api的URL和tokn写进去
下一步就是选择适合你设备的图标描述的调用方法
比如如果你的设备是适配了高性能的gpu的话 其实我们就建议直接用local的话
这样其实就是我们是把模型部署在本地的
如果比如我们这个 比如我们本地的设备是不足以运行7B的LLM的话其实也可以选用app 我们这边也提供了几个app 无论是qianwen的开不上模型 还是我们一些我们自己部署的模型 这样其实是可以病形来提高效率的
然后第三个就是选择图标描述的话
写图片描述也是跟刚刚的类类似的 就是到底选用local local其实就是本地 如果有足够的足够的gpu的话 内存的话其实是可以把模型部署在本地 如果不行的话就用一些现在有的一些 无论是多模态大模型还是
还是其他的多么太模型的一些api对
然后然后我们刚刚提到的就是加入操作的知识的话其实是在add info上可以加入操作的知识
如果最后一步的话 如果你想进一步提升移动设备的效率的话 也可以暂时把那个反思和记忆的模块关掉
然后最后完成这些配置 之后进行python run 就是可以把刚刚的那些操作手机的步骤其实就可以完成了对
然后我们下面给出一个链接 也是在我们跟他不上开源的对 只不过点到里面有一个中文的readme就是把我们这整体的操作过程其实都都给出来了 然后这个是第一种的啊 体验方式吧
第二种就是我们也在魔搭创空间上提供了一个demo 就是因为现在这个是真机 直接操作呆帽的话实际上也可以通过手机上传截图的方式
就是每一步 我们在摩大乘空间上告诉你每一步需要操作 操作哪一个位置然后就是根据窗空间上返回的对应的位置进行操作 或者对应的操作指令其实也可以完成这样任务。对 这可能就是针对可能大家如果不想直接插手机的话 或者就是本身手机是ios的话 也可以在摩搭上通过创空间这种方式进行体验对
面有一个中文的readme就是把我们这整体的操作过程其实都都给出来了 然后这个是第一种的啊 体验方式吧
第二种就是我们也在魔搭创空间上提供了一个demo 就是因为现在这个是真机 直接操作呆帽的话实际上也可以通过手机上传截图的方式
就是每一步 我们在摩大乘空间上告诉你每一步需要操作 操作哪一个位置然后就是根据窗空间上返回的对应的位置进行操作 或者对应的操作指令其实也可以完成这样任务。对 这可能就是针对可能大家如果不想直接插手机的话 或者就是本身手机是ios的话 也可以在摩搭上通过创空间这种方式进行体验对