大規模言語モデルがAndroidアプリを操作!タスクを自動化する新ツール「DroidBot-GPT」
3つの要点
✔️ 大規模言語モデルを利用してAndroidアプリとのインタラクションを自動化する「DroidBot-GPT」を提案した。
✔️ 17種類のアプリからなる33個のタスクにおいて完全な成功は約39%、部分的な成功は約67%を達成した。
✔️ より効率的なアプリ開発手法やタスク専用のAIモデルの開発が進むことで自動化ツールによる利便性向上が期待される。
DroidBot-GPT: GPT-powered UI Automation for Android
written by Hao Wen, Hongming Wang, Jiaxuan Liu, Yuanchun Li
(Submitted on 14 Apr 2023)
Subjects: Software Engineering (cs.SE); Artificial Intelligence (cs.AI)
Comments: Published on arxiv.
code:
本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。
概要
UIインタラクションの自動化は、ロボットによるプロセスの自動化、ソフトウェアテスト、パーソナルアシスタントなど、様々なアプリで求められている技術です。その中でも「自然言語」による自動化はユーザー体験を著しく向上させるため、特に注目されています。
この論文では、GPTのような大規模言語モデルを用いて、Androidのモバイルアプリとのインタラクションを自動化するツール「DroidBot-GPT」を提案しています。特定のタスクを自然言語でDroidBot-GPTに入力すると、アプリを自動で操作し、タスクを完了させます。例えば、下図の例では「create a contact named Alice with number 1234567 and email alice@github.com and save it」というタスクを自然言語で入力すると、UIを自動で操作し、連絡先を作成することができます。
DroidBot-GPTとは?
下図はDroidBot-GPTの概要です。まずDroidBotがアプリの情報(GUI info)を取得し、自然言語で記述します。次に、アプリの状態(GUI state)、操作履歴(Action history)、タスク(Task description)を組み合わせてプロンプト(Prompt)を作成し、ChatGPT(LLM)に入力します。その後、ChatGPTが適切なアクションを生成し(Action choice)、DroidBotを介してアプリを操作(Action)します。
この時、アプリのGUI情報(GUI info)を大規模言語モデルが扱えるように自然言語に変換するのは工夫が必要です。アプリのGUI情報を自然言語に変換する方法として最もシンプルな方法は、GUIの構造化されたツリーの説明をそのまま入力することですが、さまざまな要素の位置関係やプロパティ(色、形、大きさなど)をすべて含むことになります。しかし、この方法では数千語になってしまう可能性が高く、大規模言語モデルにとって、不要な情報が含まれていたり、入力できる文字数の制限を超えてしまう可能性が高くなります。そこで、この論文では、人間が読んで理解できる、要点だけを押さえた簡単な文章として表現する方法を提案しています。
下図がその様子です。まず、アプリの画面から、ユーザーが見ることができる全ての要素(ボタン、テキストボックスなど)を抽出し、各要素がどのような操作(クリック、テキスト入力など)に対応しているかを把握しています。次に、各要素について「ビュー<名前>が...することができる」という文章を生成しています。これによって各要素とその機能を文章として表現しています。最後に「The current state has the following UI views and corresponding actions, with action id in parentheses」というテキストを先頭に追加し、これらの要素を一つの文章にまとめています。
アプリ内でのアクションは、主に選択(choosing)と編集(editing)の2つのカテゴリに分けられています。選択(choosing)に関するアクションは、クリック、スクロール、チェックなどが含まれています。GUIの要素を説明するプロンプトでは、それぞれのアクションの後に番号が付与され、ChatGPTはこの番号を選択することで、アクションを指定します。例えば「Sort by」のビューがクリック可能であるというプロンプトがあった場合、それは「a view 'Sort by' that can click (0);」という文章で記述されます。これをChatGPTに入力し、「0」という応答が得られれば、「Sort by」ボタンをクリックするというアクションが実行されます。
編集(editing)に関するアクションは、テキストボックスに文を入力するものです。ユーザーは、ユーザーネーム、パスワード、あるいは文章を入力することもありますが、これらは選択肢としてエンコードすることはできません。これに対して、この論文では2段階の解決策を設計しています。大規模言語モデルがテキストボックスを編集することを選択した場合、DroidBot-GPTは別のプロンプトを送信します。これは「What should I enter to the view with the text '<text content>'? Just return the text and nothing else.」という形式のもので、DroidBot-GPTはこれに対する応答をテキストボックスに入力します。
大規模言語モデルに入力するプロンプトは、上述のGUIの説明とアクションだけでなく、操作の繰り返しを避けるために過去のアクションの履歴も含めています。下図はプロンプトの例です。
ここでは、音楽プレーヤーのアプリで「5分間だけホワイトノイズ(※)を再生する」という設定をしています。「Noice」というアプリを開始し、「Sleep Timer」という項目を選択(画面a)、そして「+ 5m」と書かれた項目を選択(画面b)するという手順です。このプロンプトでは、青色の枠内でタスクの説明を記述し、緑色の枠内でGUI要素、黄色の枠内で過去の操作の履歴、紫色の枠内で次にどのような入力が求められているか(単一の選択肢か、あるいは入力文)を記述しています。これにより、各部分がどのように組み合わさってプロンプト全体を形成しているのかが分かりやすくなると思います。
(※)ホワイトノイズは、雑音の一種です。換気扇やテレビの砂嵐のような「サーッ」「シーッ」「ゴーッ」のような雑音であり、集中力向上、リラックス効果、安眠効果があると言われています。
DroidBot-GPTの性能は?
F-Droidからダウンロードした17種類の広範囲で使われているAndroidアプリに対して評価を行います。F-Droidは、Androidのフリーオープンソースソフトウェア(FOSS)を提供するアプリストアです。性能評価にあたって、各アプリごとに1から3つのタスクを設計し、それぞれのタスクはGUIを介して2〜13のステップで構成されています。下表は、具体的なアプリや、それに基づいたタスク設計、そして適切な行動手順の例を示しています。
評価の結果、DroidBot-GPTが完全に達成したのは13/33個で、全タスクに対する平均的な達成度は66.76%となっています。下表では、様々な難易度のタスクにおける平均的な達成度を示しており、2~3ステップの比較的単純なタスクは達成しやすい傾向にあります。
また、下表はタスクのカテゴリーごとの達成度を示しています。「Record」や「Life」といったカテゴリーのアプリは、平均的な達成度がやや低めです。これらのタスクは、タイピングアクションを含むことが多く、GUI要素の関係性をうまく把握できず、入力するべき適切な場所を見落とすことがあるためと考えられます。
特定のアプリやアクションに特化して設計された先行研究と比較して、DroidBotGPTはGUIの追加学習データを必要とせず、汎用性の高い大規模言語モデルを活用することで、広範囲のカテゴリーに対してタスクを効率的に処理することが可能です。従来に比べて、最小限の指示をするだけで複雑なタスクを完了させることができ、その結果、高い自動化が達成されています。しかし、下図のように、名前のないGUI要素など対応できないケースもあるため、今後の研究による更なる改善が求められます。
まとめ
この論文では、大規模言語モデルによってガイドされる初のAndroidアプリ自動化ツール「DroidBot-GPT」を提案しています。この手法では、GUIとそれに対応するアクションスペースを大規模言語モデルが解釈できるようなプロンプトに変換する方法を提案しています。これにより、AIモデルが効率的に、ユーザーが指定するタスクを実行できるようにしています。2022年のChatGPTに続き、今後も様々な分野において大規模言語モデルによる自動化と、それに伴うユーザー体験の向上が期待されます。
この記事に関するカテゴリー