AppAgent 的创新技术值得我们测试人员的关注。
最近大语言模型(LLMs)的进展导致了智能代理(Agent)的创建,这些代理能够执行复杂的任务。而由腾讯团队开发的AppAgent, 其智能代理能力可以用于操作任何 App,它在 50 个复杂手机任务上展示了强大的能力。
这项技术通过引入一种基于大型语言模型(LLMs)的多模态智能代理(Agent)框架,赋予了智能体操作智能手机应用的能力。与传统的智能助手如 Siri 不同,AppAgent 不依赖于系统后端访问,而是通过简化的操作空间来操作智能手机应用程序,可以模拟人类的点击和滑动等操作,直接与手机应用的图形用户界面(GUI)互动。这种独特的方法不仅提高了安全性和隐私性,还确保了智能体能够适应应用界面的变化和更新,从而扩大了它在各种应用程序中的适用性。
AppAgent 的核心在于其创新的学习方式,智能体可以通过自主探索或观察人类演示来学习如何导航和使用新应用。在自主探索过程中,。这个过程还可以通过观察少数几个人类演示来加速,使智能体能够更快地理解复杂功能。
AppAgent分为两个阶段,分别称为探索阶段和部署阶段。在自主探索阶段,AppAgent智能体通过一系列预定义的动作与应用互动,观察不同应用程序的用户界面交互(每个动作带来的界面变化),AppAgent与智能手机应用程序进行交互,并从结果中学习,所学到的知识被精心编制成文件(构建知识库)。一旦这个学习阶段完成,AppAgent变得擅长使用应用程序,就准备好行动了,即在探索阶段之后的部署阶段,AppAgent利用编制在此文档中的信息来高效地操作和导航应用程序,完成不同应用程序中的各种复杂任务。
(图1 框架的两阶段方法:探索阶段和部署阶段)
为了验证其实用性,研究团队对 AppAgent 进行了广泛测试,覆盖了社交媒体、电子邮件、地图、购物以及复杂的图像编辑工具等 10 种不同的应用中的 50 个任务。测试结果证明,AppAgent 在处理各种高级任务方面表现出色,显示出其适应性、用户友好性以及高效的学习和操作能力。
1.实验环境
实验环境建立在Android操作系统的命令行界面(CLI)上,允许AppAgent 与智能手机应用程序进行交互。代理接收两个关键输入:显示应用程序界面的实时截图和详细的交互元素的XML文件。为了增强AppAgent 识别和无缝交互这些元素的能力,我们为每个元素分配了一个唯一的标识符。这些标识符要么来自XML文件中的资源ID(如果提供),要么是通过组合元素的类名、大小和内容构建而成。这些元素以半透明的数字叠加在截图上。这有助于AppAgent 在不需要指定屏幕上精确位置的情况下准确交互,并增强了AppAgent 在控制手机时的精度。
行动空间:AppAgent 的行动空间反映了人们在智能手机上的常见交互方式:轻触和滑动,设计了四种基本功能,并用到Android的两个系统级的操作:
-
Tap(element : int):这个函数模拟对屏幕上标有数字的UI元素进行轻触。例如,tap(5)将点击标有“5”的元素。
-
Long_press(element : int):这个函数模拟对UI元素进行长按(1秒)。
-
Swipe(element : int, direction : str, dist : str):在指定方向(上、下、左、右)和距离(短、中、长)上滑动一个元素。例如,swipe(21, "up", "medium")将在元素“21”上向上滑动一段中等距离。
-
Text(text : str):为了绕过低效的虚拟键盘输入,这个函数在虚拟键盘可见时直接将文本输入到输入框中。例如,text("Hello, world!")输入字符串“Hello, world!”。
-
Back():系统级功能,帮助代理返回到前一个UI页面,特别适用于退出不相关页面。
-
Exit():特地的函数用于结束进程,通常在成功完成任务时调用。
这些预定义的动作旨在简化AppAgent的交互,特别是通过消除对精确屏幕坐标的需求,这对于大语言模型(LLM)准确预测来说可能会带来挑战。
2. 探索阶段
探索阶段是这个框架的核心。在此阶段,AppAgent被分配一个任务,并开始自主与UI元素进行交互,通过试错学习智能手机应用程序的功能和特性。AppAgent使用不同的动作,并观察应用界面的变化,以了解其工作原理。由LLM驱动的AppAgent试图通过分析每个动作之前和之后的截图来弄清楚UI元素的功能和特定动作的影响。这些信息被编制成一个记录了对不同元素应用的动作效果的文档。当一个UI元素被多次操作时,AppAgent将根据过去的文档和当前观察更新文档以提高质量。为了使探索更加高效,如果当前UI页面似乎与应用的主要任务无关,如广告页面,AppAgent将停止进一步探索UI元素。在这种情况下,它使用Android系统的Back()函数返回到前一个UI页面。与随机探索(如深度优先搜索和广度优先搜索)相比,这种目标导向的探索方法确保代理专注于对应用程序有效操作至关重要的元素。AppAgent还利用LLM对用户界面的现有知识来提高探索效率。当AppAgent完成分配的任务时,探索停止。
通过观看演示进行探索。另一种常见且通常更有效的探索方法涉及AppAgent观察人类示范。这些演示为代理提供了高效使用应用程序的示例,特别是对于理解可能通过自主交互难以发现的复杂功能。在这种方法中,一个人类用户操作应用程序,而AppAgent观察并记录人类使用的元素和动作。这种策略缩小了探索空间,防止代理与无关的应用页面进行交互,使其与自主交互相比成为更加简化和高效的方法。
3. 部署阶段
在探索阶段之后,代理已经具备了执行复杂任务的能力,这是基于其积累的经验。当给定任务时,代理遵循一种逐步的方法,每一步都包括对当前UI截图的访问和动态生成的文档,详细说明了UI元素的功能以及动作对当前UI页面的影响。提示还提供了所有可用动作的详细解释。在每一步中,代理首先被要求提供对当前UI的观察,然后阐述其对任务和当前观察的思考过程。随后,代理开始执行动作,调用可用的函数。在每个动作之后,代理总结了交互历史和当前步骤中所采取的动作。这些信息被纳入下一个提示中,为代理提供了一种记忆形式。这种细致的方法增强了代理行动的可靠性和可解释性,从而促进了更明智的决策制定。当代理确定任务已经完成时,部署阶段停止,此时它可以通过执行Exit()动作退出流程。
-
论文地址:https://arxiv.org/abs/2312.13771=
-
主页地址:https://appagent-official.github.io/