AutoDroid
关于
本仓库包含了论文《赋予大语言模型使用智能手机进行智能任务自动化的能力》的系统代码。论文链接:Empowering LLM to use Smartphone for Intelligent Task Automation。
要获取DroidTask
数据集,您可以从Google云盘下载,并参考关于数据集部分。
AutoDroid是基于DroidBot框架实现的。
如何安装
确保您已安装:
Python
Java
Android SDK
- 将Android SDK中的
platform_tools
目录添加到PATH
环境变量
然后克隆此仓库并使用pip
安装:
git clone git@github.com:MobileLLM/AutoDroid.git
cd AutoDroid/
pip install -e .
如何使用
-
准备工作:
- 如果您想使用我们论文中的应用测试AutoDroid,请从Google云盘下载
apk.zip
文件夹并解压,然后准备一台通过adb
连接到您主机的设备或模拟器。 - 如果您想使用其他应用测试AutoDroid,请将
.apk
文件下载到您的主机,并准备一台通过adb
连接到您主机的设备或模拟器。 - 准备一个GPT API密钥,并在
tools.py
中将os.environ['GPT_URL']
替换为您自己的API密钥。
- 如果您想使用我们论文中的应用测试AutoDroid,请从Google云盘下载
-
开始:
droidbot -a <path/to/.apk> -o <output/of/app> -task <your task> -keep_env -keep_app
您可以尝试./scripts文件夹中的脚本,DroidTask中的任务列表可在此表格中查看。
关于数据集
数据集的组织结构:
DroidTask
├── applauncher
│ ├── states
│ │ ├── Screenshot 1.png
│ │ ├── Screenshot 2.png
│ │ ├── ...
│ │ ├── View hierarchy 1.json
│ │ ├── View hierarchy 2.json
│ │ └── ...
│ ├── task1.yaml
│ ├── task2.yaml
│ ├── ...
│ └── utg.yaml
├── calendar
│ ├── states
│ │ ├── Screenshot 1.png
│ │ ├── Screenshot 2.png
│ │ ├── ...
│ │ ├── View hierarchy 1.json
│ │ ├── View hierarchy 2.json
│ │ └── ...
│ ├── task1.yaml
│ ├── task2.yaml
│ ├── ...
│ └── utg.yaml
-
DroidTask:数据集的顶层,包含DroidTask中每个应用的文件夹,如
applauncher
和calendar
。 -
应用文件夹:记录了droidbot解析的所有截图和原始视图层次结构:
-
States文件夹:此文件夹包含使用过程中捕获的应用所有状态。一个状态包括视觉表示(截图)和结构数据(视图层次结构)。
-
截图:从应用界面捕获的图像,按顺序命名(如
Screenshot 1.png
、Screenshot 2.png
等)。 -
视图层次结构:详细描述每个捕获状态的应用UI结构的JSON文件(如
View hierarchy 1.json
、View hierarchy 2.json
等)。
-
-
任务文件:名为
task1.yaml
、task2.yaml
等的YAML文件,包含应用内特定任务的基准数据。 -
UTG文件:
utg.yaml
文件,记录用户随机探索应用的数据。
-
-
任务与状态的映射:如果您想在方法中使用截图:
- 每个taski.yaml文件(i为任务编号)通过state_str标识符引用状态。
- 此state_str可与
view hierarchy k.json
文件中的state_str匹配,将任务与相应的应用状态关联。 - view hierarchy k.json文件的名称(k为状态编号)也用于定位相应的截图,因为截图和视图层次结构文件共享相同的命名约定。
已知限制
- 当前实现在确定任务完成方面表现不佳。
- 由于大语言模型的随机性、应用GUI的风格/质量和任务描述等因素,任务自动化性能可能不稳定。
- 需要通过adb连接到主机,而不是独立的设备解决方案。
欢迎贡献!
注意
- 我们非常感谢Simple Mobile Tools提供的优秀开源应用。
- 请注意,AutoDroid目前仅用于研究目的。它可能执行意外操作(如修改您的账户/设置)。请自行承担使用风险。
祝使用愉快!