Agent系列:AppAgent v2-屏幕智能Agent(详解版)
-
引言
-
简介
-
方法
-
Agent 框架
-
Agent 交互
-
探索阶段
-
部署阶段
-
文档生成
-
高级功能
-
-
实验结果
-
总结
-
局限性
-
未来工作
1. 引言
大语言模型(LLM)如 ChatGPT 和 GPT-4 显著提升了自然语言处理能力,并且推动了智能体在自主决策中的应用。最初,这些智能体专为基于文本的交互方式设计,展现了卓越的表现,包括记忆自适应性和多任务处理能力。然而,现实世界的应用程序不仅仅局限于文本输入,还涉及视觉和其他模态数据的处理,这对传统智能体提出了挑战。
为应对这一需求,近年来涌现了多模态智能体,如 AssistGPT、Vipergpt 和 Visual ChatGPT 等,它们能够在复杂环境中执行多步骤推理、信息提取和集成,并根据用户输入作出适应性响应。此前的工作如 AppAgent v1 和 MobileAgent 通过模拟人类的交互方式,已经在智能手机应用程序中展示了较大的潜力。
尽管如此,准确识别图形用户界面仍然是多模态智能体面临的关键挑战。依赖视觉特征的传统方法往往因识别模型的局限性而不够准确。而移动环境的动态特性和频繁的应用更新也进一步加剧了这一挑战。即便是如 GPT-4 这样的先进模型,在处理不熟悉的视觉元素时仍显不足,尤其是在应对小众应用时。
为了解决这些问题,AppAgent v1 通过自动化探索和观看演示的方式增强了智能体的决策能力,但其过于依赖现成的解析器,限制了智能体在处理不标准界面元素时的灵活性。为此,AppAgent v2 提出了一种新的多模态智能体框架,扩展了动作空间,使其能够更广泛地适应不同类型的应用程序和界面元素。
1. 简介
随着多模态大语言模型(MLLM)的发展,视觉智能体(Agent)正逐渐在软件界面中,尤其是图形用户界面(GUI)中,发挥重要作用。本文设计了一个专为移动设备打造的智能体框架 AppAgent v2,该框架基于大语言模型,能够在移动设备上导航并模拟用户交互行为。AppAgent v2 通过构建灵活的动作空间,增强了其在不同应用程序中的适应性,支持解析器、文本和视觉描述的结合。智能体的工作分为两个阶段:探索(Exploration)和部署(Deployment)。
在探索阶段,智能体通过自动或手动的方式记录用户界面各元素的功能,并将其存储在结构化的知识库中。部署阶段,智能体通过 RAG(检索增强生成)技术从知识库中检索信息并实时更新,使其能够准确高效地完成任务,包括跨多个应用程序执行复杂的多步骤操作。实验结果表明,AppAgent v2 在各种基准测试中的表现优异,验证了其在实际场景中的有效性。AppAgent v2官方表示代码将很快开源。更多关于端侧大模型、Agent及其实践,欢迎关注微信公众号《小窗幽记机器学习》:
2. 方法
AppAgent v2 的多模态智能体框架分为两个阶段:探索和部署。在探索阶段,智能体通过自主或手动方式分析用户界面,记录 UI 元素及其功能,形成知识库。在部署阶段,智能体利用知识库中的信息,根据任务要求进行操作。
图1:appAgent 流程。探索模块采用Agent驱动或手动探索,将元素信息收集到文档中。部署阶段使用RAG实时检索和更新文档,从而快速准备执行任务
2.1 Agent 框架
AppAgent v2 在 Android 15 环境下使用 Android Studio 模拟器实现。智能体通过调用 AndroidController 发送指令与手机交互,结合 OCR 和检测模型,从屏幕截图中提取 UI 元素的信息(如 Android ID、文本、坐标等),并将其用于任务推断和决策。
2.2 Agent 交互
智能体通过一套标准化的指令与 Android 系统交互,指令包括点击、输入文本、滑动、返回、长按等操作。这些指令被转换为 Android 系统可执行的命令,确保与界面的交互精确无误。
2.3 探索阶段
在探索阶段,智能体通过两种方式分析用户界面:智能体驱动的探索和手动探索。
-
智能体驱动的探索:智能体自动识别需要交互的 UI 元素并执行操作,记录交互前后的变化,并根据结果反思操作的有效性。
-
手动探索:当智能体对某些界面的理解有限时,引入手动探索,GPT-4 通过观察人类的操作
记录 UI 元素的变化和任务流程,帮助智能体在未来的任务中更好地理解和应对复杂的界面和操作。
2.4 部署阶段
在部署阶段,智能体利用自查检索器(Self-query Retriever)从知识库中检索相关文档,结合当前的 GUI 信息和任务要求,执行操作。智能体可以根据任务的需要动态更新知识库,确保在不同应用场景中快速适应。通过不断更新历史信息和操作结果,智能体能够优化其决策过程,直到任务完成。
2.5 文档生成
探索阶段收集的 UI 元素信息被存储在结构化的知识库中。该知识库包括元素的 Android ID、可见标签、文本内容、视觉特征(如颜色、形状)及其屏幕坐标等。知识库支持实时更新和动态检索,确保智能体可以随着任务的变化不断调整其操作策略。
2.6 高级功能
AppAgent v2 还具有以下增强功能:
-
视觉特征决策:当无法通过标准解析器识别 UI 元素时,智能体会转向基于视觉特征的决策,利用 OCR 技术识别界面中的文本和图标,确保在面对全新界面时仍能有效操作。
-
安全检查:智能体在执行涉及敏感信息的操作(如账户密码或支付)时,会自动切换到手动模式,确保用户隐私不受侵犯。
-
跨应用任务管理:智能体能够在多个应用程序之间切换,执行复杂的跨应用任务,如从一个应用中提取信息并在另一个应用中执行操作。
3. 实验
为了评估 AppAgent v2 的性能,本文在 Android 平台上进行了一系列实验,涵盖多个基准测试和用户研究。
3.1 定量结果
AppAgent v2 在三个基准测试中进行了评估:DroidTask、AppAgent v1 基准和 Mobile-Eval。
-
DroidTask:在 13 个流行应用程序衍生出的 158 个任务中,AppAgent v2 在完成率上表现优异,显著超过了 GPT-4 和带有记忆组件的 AutoDroid,证明了其强大的任务执行能力。
-
AppAgent v1 基准:在 Twitter、Telegram 和其他常用应用的测试中,AppAgent v2 通过探索和部署阶段的结合,展示了其在多种任务和界面中的适应能力,成功率大幅提升。
-
Mobile-Eval:在 10 个常用移动应用程序中,AppAgent v2 在成功率、过程分数、相对效率和完成率四个指标上均表现出色,验证了其高效、准确地执行复杂任务的能力。
表2: MobileAgent和appAgent在Mobile-Eval上的指标对比结果
3.2 用户研究
为了进一步展示 AppAgent v2 的实际应用效果,本文进行了用户研究,模拟了复杂的跨应用任务。结果表明,AppAgent v2 能够准确执行长时间、多步骤的任务,展现了其在实际场景中处理复杂任务的能力和灵活性。
图3:跨app应用上的定性结果
3.3 UI 界面解析分析
AppAgent v2 结合了结构化数据和视觉特征两种方法解析 UI 界面。对于常规应用,智能体依赖从 Android 系统解析的 XML 数据,而对于自定义开发的应用,智能体则通过 OCR 和视觉特征识别图标和文本。该双重策略显著提高了智能体的适应性和任务执行的可靠性。
4. 总结
本文提出了一个多模态智能体框架 AppAgent v2,显著提升了智能体在移动设备上的交互能力。通过整合解析器和视觉特征,AppAgent v2 构建了一个灵活的动作空间,能够适应不同类型的应用程序界面,并通过探索和部署两个阶段有效管理移动设备的动态环境。实验证明了该框架在图形用户界面识别和复杂任务执行方面的优越性,尤其是在跨应用任务和新环境中的适应能力。
AppAgent v2 的主要贡献包括:
-
多模态智能体框架的引入:结合解析器和视觉特征,构建了灵活的动作空间,增强了智能体与图形用户界面的交互能力,提高了其在新环境中的适应性。
-
结构化存储格式的开发:结合 RAG 技术,实现了对知识库的实时更新和访问,增强了智能体的决策精度和任务执行效率。
-
广泛的实验证明:通过多个基准测试和用户研究,验证了智能体在各种移动应用程序中的有效性,展示了其适应性、用户友好性和操作效率。
AppAgent v2 在现有技术基础上进一步提升了智能体在复杂移动环境中的表现,为未来的多模态智能体研究提供了重要的参考和改进方向。
5. 局限性
尽管 AppAgent v2 在多个应用场景中表现优异,但仍存在一些局限性:
-
数字标签识别的局限性:AppAgent v2 依赖智能体识别 UI 上的数字标签来确定特定元素。当 UI 元素本身包含数字时,可能会导致混淆。这种问题可以通过预先的手动探索和记录来缓解。
-
隐藏 UI 元素的交互难题:智能体在处理一些隐藏 UI 元素(如加速视频播放的按钮)时,由于缺乏先验知识,可能无法检测到相关元素,进而限制了其执行某些操作的能力。未来的工作将侧重于增强 UI 识别能力,并结合先验知识来解决这些问题。
6. 未来工作
未来的研究工作将集中在以下几个方面:
-
增强跨应用任务处理能力:进一步优化智能体在多个应用程序之间切换时的决策流程,提升其处理复杂跨应用任务的效率。
-
优化视觉特征识别:改进视觉特征的识别与操作,特别是在面对复杂或定制化的应用界面时,确保智能体始终能够做出正确的交互决策。
-
提高智能体的用户体验:通过优化智能体的反馈机制和任务执行过程,进一步提升用户体验,使其更加直观和高效。
总之,AppAgent v2 为多模态智能体的发展提供了坚实的基础,并为未来的移动设备智能体研究指明了方向。
相关文章:

Agent系列:AppAgent v2-屏幕智能Agent(详解版)
引言 简介 方法 Agent 框架 Agent 交互 探索阶段 部署阶段 文档生成 高级功能 实验结果 总结 局限性 未来工作 1. 引言 大语言模型(LLM)如 ChatGPT 和 GPT-4 显著提升了自然语言处理能力,并且推动了智能体在自主决策中的应用。…...

艾体宝方案丨全面提升API安全:AccuKnox 接口漏洞预防与修复
一、API 安全:现代企业的必修课 在现代技术生态中,应用程序编程接口(API)扮演着不可或缺的角色。从数据共享到跨平台集成,API 成为连接企业系统与外部服务的桥梁。然而,伴随云计算的普及与微服务架构的流行…...

开源的Vue低代码表单设计器 form-create-designer v3.2.9 版本发布,新增10多种功能
form-create-designer 是一款开源的低代码表单设计器,通过数据驱动表单渲染。可以通过拖拽的方式快速创建表单,提高开发者对表单的开发效率,节省开发者的时间。并广泛应用于在政务系统、OA系统、ERP系统、电商系统、流程管理等领域。 项目采…...

Android Killer 无法调用jd-gui.exe
在Android Killer 时,点击图标转换为java代码时,调用jd-gui.exe 弹窗无法验证发布者,点击运行没反应 第一种方案:开启组策略(网上找的,没有效果) 键盘WinR ,在弹出窗口中输入gped…...

24.01.01 MyBatis
对sql拆分简化之后,更适合使用MyBatisPlus 搭建项目 引入依赖 <!--Mysql 驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--Druid数据库连接池--><dependenc…...

游戏引擎学习第70天
这一节没讲什么主要是关于接下来要干的任务 开发过程概览 我们正在进行最后的总结,并计划接下来的步骤。目前的目标是创建一个包含所有必要组件的游戏引擎原型版本,目的是让这些部分能够协同工作并展现预期效果。通过这一过程,可以实验和探…...

深入理解 Spring Cloud 中的 Eureka、Ribbon 和 Feign
1.eureka自我保护机制是什么? Eureka的自我保护机制是一种针对网络异常情况的安全保护措施,旨在防止因为网络问题导致的服务注册中心(Eureka Server)与微服务实例之间的通信故障。当网络分区或其他形式的网络故障发生时,即使微服…...

DVWA靶场Brute Force (暴力破解) 漏洞low(低),medium(中等),high(高),impossible(不可能的)所有级别通关教程
目录 暴力破解low方法1方法2 mediumhighimpossible 暴力破解 暴力破解是一种尝试通过穷尽所有可能的选项来获取密码、密钥或其他安全凭证的攻击方法。它是一种简单但通常无效率的破解技术,适用于密码强度较弱的环境或当攻击者没有其他信息可供利用时。暴力破解的基…...

山高路陡,无人机代替滑轨吊运物资极大提高做作业效率降低成本
在山高路陡的地区,无人机代替传统的滑轨吊运物资,极大地提高了作业效率并降低了成本。以下是对这一现象的详细分析: 一、无人机吊运的优势 1. 提高作业效率: 无人机能够快速响应并执行吊运任务,尤其在高山、陡峭或交…...

数据的高级处理——pandas模块进阶——数据的统计运算
今天的学习用有好几处与书上的内容有出入,不只是因为pycharm中函数更新、弃用的问题,还是作者有些疏忽。不过影响不大,运行报错,GPT分析一下,原因很简单。这里不进行详细书名,在下边的代码上已经进行详细的…...

【Leetcode】3280. 将日期转换为二进制表示
文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接🔗 给你一个字符串 date,它的格式为 yyyy-mm-dd,表示一个公历日期。 date 可以重写为二进制表示,只需要将年、月、日分别转换为对应的二进制表示&a…...

Vue3 中自定义hook
什么是hook?—— 本质是一个函数,把setup函数中使用的Composition API进行了封装,类似于vue2.x中的mixin。 自定义hook的优势:复用代码, 让setup中的逻辑更清楚易懂。 场景需求:现在我需要获取当前鼠标所点击的地方的…...

嵌入式系统 第七讲 ARM-Linux内核
• 7.1 ARM-Linux内核简介 • 内核:是一个操作系统的核心。是基于硬件的第一层软件扩充, 提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统, 决定着系统的…...

音视频入门基础:MPEG2-PS专题(2)——使用FFmpeg命令生成ps文件
一、错误的命令 通过FFmpeg命令可以将mp4文件转换为ps文件,PS文件中包含PS流数据。 由于PS流/PS文件对应的FFInputFormat结构为: const FFInputFormat ff_mpegps_demuxer {.p.name "mpeg",.p.long_name NULL_IF_CONFIG_SMALL…...

Embedding
Embedding 在机器学习中,Embedding 主要是指将离散的高维数据(如文字、图片、音频)映射到低纬度的连续向量空间。这个过程会生成由实数构成的向量,用于捕捉原始数据的潜在关系和结构。 Text Embedding工作原理 词向量化&#x…...

Android Studio学习笔记
01-课程前面的话 02-Android 发展历程 03-Android 开发机器配置要求 04-Android Studio与SDK下载安装 05-创建工程与创建模拟器...

Git的使用流程(详细教程)
目录 01.Git是什么? 1.1 Git简介 1.2 SVN与Git的最主要的区别 1.3 GIt主要特点 02.Git是干什么的? 2.1.Git概念汇总 2.2 工作区/暂存区/仓库 2.3 Git使用流程 03.Git的安装配置 3.1 Git的配置文件 3.2 配置-初始化用户 3.3 Git可视化…...

Keil中的gcc
文章目录 一、IDE背后的命令1.1 IDE是什么1.2 IDE的背后是命令1.3 有两套主要的编译器 二、准备工作2.1 arm-linux-gcc和gcc是类似的2.2 Code::Blocks2.2.1 设置windows环境变量2.2.2 命令行示例 三、gcc编译过程详解3.1 程序编译4步骤3.2 gcc的使用方法3.2.1 gcc使用示例3.2.2…...

bilibili 哔哩哔哩小游戏SDK接入
小游戏的文档 简介 bilibili小游戏bilibili小游戏具有便捷、轻量、免安装的特点。游戏包由云端托管,在哔哩哔哩APP内投放和运行,体验流畅,安全可靠。https://miniapp.bilibili.com/small-game-doc/guide/intro/ 没想过接入这个sdk比ios还难…...

springboot523基于Spring Boot的大学校园生活信息平台的设计与实现(论文+源码)_kaic
摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本大学校园生活信息平台就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据…...

【YOLO算法改进】ALSS-YOLO:无人机热红外图像|野生动物小目标检测
目录 论文信息 论文创新点 1.自适应轻量通道分割和洗牌(ALSS)模块 2.轻量坐标注意力(LCA)模块 3.单通道聚焦模块 4.FineSIOU损失函数 摘要 架构设计 轻量高效网络架构 - ALSS模块 LCA模块 单通道聚焦模块 损失函数优…...

XML解析
一,XML概述 1.什么是XML XML即为可扩展的标记语言(eXtensible Markup Language) XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识 2.XML和HTML不同之处 XML主要用于说明文档的主题,而…...

PlasmidFinder:质粒复制子的鉴定和分型
质粒(Plasmid)是一种细菌染色体外的线性或环状DNA分子,也是一种重要的遗传元素,它们具有自主复制能力,可以在细菌之间传播,并携带多种重要的基因(如耐药基因与毒力基因等)功能。根据质粒传播的特性…...

PTA数据结构作业一
6-1 链表的插入算法 本题要求实现一个插入函数,实现在链表llist中的元素x之后插入一个元素y的操作。 函数接口定义: int InsertPost_link(LinkList llist, DataType x, DataType y); 其中 llist是操作的链表,x是待插入元素y的前驱节点元素…...

2024年总结【第五年了】
2024年总结 北国绕院扫雪,南方围炉烹茶,且饮一杯无? 执笔温暖不曾起舞日子里的点点滴滴,誊写一段回忆,还以光阴一段副本。 那么你要听一支新故事吗?第五年总结的片碎。 衣单天寒,走趟流星孤骑…...

java实现一个kmp算法
1、什么是KMP算法 Kmp 算法是由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,改进字符串匹配的算法; Kmp 算法的核心是利用匹配失败的信息,尽量减少模式串与主串的匹配次数,以达到 快速匹配的目的; Kmp 算法的时…...

强化学习方法分类详解
强化学习方法分类详解 引言 强化学习(Reinforcement Learning, RL)是一种通过智能体与环境互动来学习如何做出最佳决策的方法。根据不同的优化中心、策略特性、环境模型、奖励函数、动作空间类型以及行为策略和目标策略的一致性,RL可以分为…...

雅思真题短语(二十八)
真题短语收录在合辑。 541法律官员 work as a solicitor 542前卫 a radical and expensive scheme 543反对者们 objectors 544破坏 demolishing buildings 545蒸汽机车 steam locomotives 546冷凝 steam could be condensed 547烟雾 smoke and fumes 548通风井 ventilation sh…...

在Linux系统中使用字符图案和VNC运行Qt Widgets程序
大部分服务器并没有GUI,运行的是基础的Linux系统,甚至是容器。如果我们需要在这些系统中运行带有GUI功能的Qt程序,一般情况下就会报错,比如: $ ./collidingmice qt.qpa.xcb: could not connect to display qt.qpa.plu…...

Python基于EasyOCR进行路灯控制箱图像文本识别项目实战
说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 随着城市化进程的加快,智能城市建设成为了现代社会发展的重要方向。路灯作为城市基础设…...