1. 整体框架
-
DroidBot-GPT通过将用户输入的自然语言描述(图中Task description)转化为一系列的操作,进而实现自动化的操作手机app。每次输入到大语言模型的信息包括:1)任务描述,或者说是角色描述;2)当前页面的GUI状态信息,本文是通过将GUI页面转化为自然语言描述;3)GUI信息中包含了action信息,并且为每一个action添加了一个Index,每个action可以是一个点击操作、长点击操作、编辑框输入操作、或者滚动操作等;4)历史执行记录信息,就是之前执行过哪些操作;5)输出的格式要求,即要求LLM输出结果形式是怎么样的,可能是一个Json或者用户自定的其他格式;
整体框架.png
-
下图中给出了一个DroidBot-GPT自动化添加手机联系人的例子。首先第一幅图点击加号进入添加联系人页面,第二幅图输入人名、电话号码、邮件;第三幅图中点击右上方的完成按钮。第四幅图显示添加完成后的app界面信息。
DroidBot-GPT实现自动化的添加手机联系人的例子.png
2. 方法说明
2.1 GUI界面的处理
-
原始的app GUI界面是使用XML格式表示的,如果直接将XML信息输入到LLM中,会导致超长的问题。所以需要对原始XML格式做预处理,本文采用的是规则的方式将其转化为LLM比较好理解的自然语言形式。可以从下图3看到,使用不同的颜色标识的不同的组成部分。紫色标识属性信息,黄色代表结点的文本信息,橙色表示node名称信息,绿色表示实际的操作(Action)信息。Action信息使用数字进行编码(index=0,1,2,..,n)
,LLM的主要作用的是从这些编码后的Action信息中,挑选出本次需要执行的操作。
image.png
2.2 Prompt构成
- 下图4中给出了输入到LLM中的 Prompt构成信息:1)第一部分就是任务说明;2)第二部分包括GUI界面信息和可执行的Action信息;3)第三部分就是之前的操作信息,比如点击了某个app等。4)第四部分表示期望的输出结果,此处要求大模型输出的是一个index,标识本次需要采取的Action;
Prompt构成.png
3. 结果总结
3.1 度量指标
- 本文采取的度量指标见下面的公式,简单来说就是总共有
步,假设最终完成使用了
步;把真实的完成路径和最终模型预测完成路径都记录下来,假设从start开始一直到第
每一步执行Action都一样
。就可以通过这种方式,计算任务最终的完成率
;
度量指标.png
3.2 任务设计
-
本文针对不同类型的app设计了不同的任务,并给定了每个任务完成的步骤。下表中给出了一个示例说明。
任务设计.png
3.3 实验结果
-
下表2中根据任务完成步数划分任务的复杂度,从全部完成和平均的完成率来评估最终的效果。可以看出最终整体全部成功完成占比只有40%。对于一些简单任务比如2-3步可以完成的,全部完成率较高达到了60%。对于步数较多的复杂任务较难全部完成,完成率只有20%。
根据任务完成步数评估.png
-
针对不同的app也测试了下任务完成的效果,见下表3所示。
不同app效果评估.png
3.4 模型局限性
- 目前产生一些badcase的原因主要有以下三种:1)GUI界面中有些node没有命名,导致LLM无法识别并处理;2)GUI界面中结点之间存在一些隐晦的关系,图5中的b所示如果要设置风向必须进入setting页面,这种关系LLM大概率是不知道的;3)LLM输出结果的不稳定行,多次执行结果可能执行的Action序列差别很大;
image.png
参考资料
- 论文:DroidBot-GPT: GPT-powered UI Automation for Android
https://readpaper.com/paper/4745518500269801473 - 代码实现:https://github.com/GAIR-team/DroidBot-GPT









网友评论