🗂

AIでGUIを自動操作!UI-Focused Agent で電卓を動かす 25日目

に公開

1. はじめに

最近技術の勉強を続けてインプット量も多くなってきたので少しアウトプット出来ればと。

UI-Focused Agentを使って、電卓を自動操作させてみたので、まずは動画を見て何が出来たので見て頂ければと思います。見た方が伝わるかと思いましたので、Youtubeにアップしました。
※動作完了まで動画をアップしていますが、3分ぐらいで動きは終わるのでそこまでで十分かと

https://youtu.be/fYW8ENrmrNU

本記事の概要(UI-Focused Agent を使って電卓を自動化する)

この記事を読むとわかること

  • UI-Focused Agent の概要
  • 電卓アプリの自動操作方法
  • 環境構築方法
  • 対象読者(GUI 自動化に興味がある人 / AI エージェントを試したい人)

2. UI-Focused Agent とは?

UI-Focused Agent(以下、UFO)の概要

UI-Focused Agent(UFO) は、AI を活用して GUI(Graphical User Interface)上の操作を自動化するエージェント技術です。従来の RPA(Robotic Process Automation)や UI テストツールと異なり、画面上の UI 要素を動的に認識し、プログラムによる操作を可能にする という特徴があります。

UFO を利用することで、Web アプリケーションやデスクトップアプリケーションのボタン操作、テキスト入力、メニュー選択などを自動化 できるため、手作業の業務効率化や GUI テストの自動化に活用できます。また、従来のルールベースの UI 操作とは異なり、AI による動的な UI 要素の認識を採用しているため、画面の変化にも柔軟に対応できる点が強みです。

本記事では、UFO の基本概念を紹介しながら、実際に Windows の電卓アプリを自動で操作する ことで、その実力を検証していきます。

3. 実験:UFO で Windows の電卓を操作する

本実験では、UI-Focused Agent(UFO) を用いて、Windows の電卓アプリを自動操作し、指定した計算を実行するプロセスを検証します。UFO は、画面上の UI 要素を動的に認識し、ユーザーの指示に従って操作を実行することが可能です。

本記事では、以下の手順を実施し、電卓アプリで「10 + 20」の計算を行うことを目標とします。

① UFO のコマンドを実行

まず、ターミナル(PowerShell)で以下のコマンドを実行し、UFO を起動します。

PS C:\Users\oneca\UFO> python -m ufo --task test
  • python -m ufo : UFO を Python モジュールとして実行
  • --task test : testというタスクを起動し、ユーザーの指示に従ってタスクを実行
    testは好きな名称

このコマンドを実行すると、以下のようなプロンプトが表示されます。

Please enter your request to be completed🛸:

② 指示を入力して実行

プロンプトが表示されたら、UFO に 電卓を使った計算を指示 します。
例えば、以下のように入力すると、UFO は Windows の電卓アプリを起動し、「10 + 20」の計算を実行します。

Please calculate 10 + 20 using a calculator.

③ UFO が電卓を操作

UFO は、以下のステップで電卓アプリを制御します。

  1. Windows の電卓アプリを起動calc.exe を自動的に実行)
  2. 「10」+「20」 を順番に入力
  3. 「=」ボタンを押して計算結果を表示
  4. 計算結果を取得し、確認する

4. 環境構築手順

本実験を行うための環境は以下の通りです。

システム環境

  • OS: Windows 11 Pro
  • Python: 3.11.9(最新バージョンでは動作しないため、3.11 を指定)
  • バージョン管理: Git
  • ビルドツール: Visual Studio IBuild Tools 2022
  • ChatGPTのAPIキー:OpenAIを利用

※私の場合、Hyper-Vでメモリを16Gで仮想化で実施


ビルドツールの必要なオプション設定

インストール時、以下のオプションが選択されていることを確認してください。

** 左側の設定**

C++ によるデスクトップ開発

** 右側の詳細設定(最低限必要なオプション)**

MSVC v143 - VS 2022 C++ x64/x86 ビルドツール
Windows 11 SDK
Windows 用 C++ CMake ツール

これらのオプションが適用されていない場合、UFO のセットアップや実行時に問題が発生する可能性がありますので、忘れずに設定してください。

インストール手順

1. リポジトリのクローン

まず、作業ディレクトリに移動します。
※ 本記事では C:\Users\oneca を例に進めます。

cd C:\Users\oneca

次に、GitHub から UFO のリポジトリをクローンします。

git clone https://github.com/microsoft/UFO.git

実行すると、以下のような出力が表示されます。

Cloning into 'UFO'... 
remote: Enumerating objects: 8495, done. 
remote: Counting objects: 100% (48/48), done. 
remote: Compressing objects: 100% (35/35), done. 
remote: Total 8495 (delta 16), reused 31 (delta 12), pack-reused 8447 (from 1) 
Receiving objects: 100% (8495/8495), 33.73 MiB | 9.76 MiB/s, done. 
Resolving deltas: 100% (5486/5486), done. 
Updating files: 100% (306/306), done.

2. クローン後のディレクトリ移動

クローンが完了したら、UFO のディレクトリに移動します。

cd UFO

Configファイルの修正

UFO の設定ファイルを編集するため、設定ディレクトリに移動します。

cd ufo\config

現在のディレクトリ内のファイル一覧は以下のようになっています。

C:\Users\oneca\UFO\ufo\config のディレクトリ

2025/03/12  00:15    <DIR>          .
2025/03/12  00:15    <DIR>          ..
2025/03/11  22:24             4,607 config.py
2025/03/11  22:24             2,446 config.yaml ← 後から作ったファイル
2025/03/11  22:24             1,276 config.yaml.template
2025/03/11  22:24             3,388 config_dev.yaml
2025/03/11  22:24             2,703 config_prices.yaml
2025/03/11  22:24                72 __init__.py
2025/03/12  00:15    <DIR>          __pycache__

Config ファイルの準備

デフォルトでは config.yaml は存在しないため、config.yaml.template をコピーして使用します。

copy config.yaml.template config.yaml

config.yaml の編集

UFO を正常に動作させるため、config.yaml を以下の内容に修正します。
(試行錯誤の結果、ほぼ全項目を修正)

HOST_AGENT:
  VISUAL_MODE: True
  API_TYPE: "openai"
  API_BASE: "https://api.openai.com/v1/chat/completions"
  API_KEY: "自分のAPIキーを指定してください"
  API_VERSION: "2024-02-15-preview"
  API_MODEL: "gpt-4o"

APP_AGENT:
  VISUAL_MODE: True
  API_TYPE: "openai"
  API_BASE: "https://api.openai.com/v1/chat/completions"
  API_KEY: "自分のAPIキーを指定してください"
  API_VERSION: "2024-02-15-preview"
  API_MODEL: "gpt-4o"

BACKUP_AGENT:
  VISUAL_MODE: True
  API_TYPE: "openai"
  API_BASE: "https://api.openai.com/v1/chat/completions"
  API_KEY: "自分のAPIキーを指定してください"
  API_VERSION: "2024-02-15-preview"
  API_MODEL: "gpt-4o"

MAX_TOKENS: 2000
MAX_RETRY: 3
TEMPERATURE: 0.0
TOP_P: 0.0
TIMEOUT: 60

RAG_OFFLINE_DOCS: False
RAG_OFFLINE_DOCS_RETRIEVED_TOPK: 1

BING_API_KEY: "YOUR_BING_SEARCH_API_KEY"
RAG_ONLINE_SEARCH: False
RAG_ONLINE_SEARCH_TOPK: 5
RAG_ONLINE_RETRIEVED_TOPK: 1

RAG_EXPERIENCE: False
RAG_EXPERIENCE_RETRIEVED_TOPK: 5

RAG_DEMONSTRATION: False
RAG_DEMONSTRATION_RETRIEVED_TOPK: 5
RAG_DEMONSTRATION_COMPLETION_N: 3

⚠️ API_KEY には自身の OpenAI API キーを入力してください。
また、ここで API_VERSION も適切なバージョンに変更すべきだった ことに後から気づきました。


UFO の実行

設定が完了したら、UFO の動作確認を行います。
以下のコマンドを実行し、UFO をテストモードで起動します。

PS C:\Users\oneca\UFO> python -m ufo --task test

このコマンドを実行すると、前述の説明通り、UFO による自動操作の流れが開始 されます。


5. まとめ

UFOについて、いかがでしたでしょうか。まだ発展途上ではありますが、その可能性の高さを感じていただけたのではないでしょうか。
また、どのような試行錯誤を行ったのかも記録しておくことが重要です。メモ帳やExcelを開き、「○○を記載して」などの指示を試しました。
しかし、Excelの場合、ファイルを開くことはできるものの、その後の空のブックが表示された段階でエラーが発生しました。

今回、この検証を行った理由は、私が作ろうとしていたツールの概念が、まさにこれと同じだったからです。
開発前に類似サービスを調査するのは基本ですからね。

実際に作らなくてよかったと感じた点は、画像解析のたびにAIとの通信が発生し、その処理に時間がかかりすぎることです。
通信や指示は、文字列情報のやり取りにとどめるべきだと考えています。
また、コストの高さも見逃せません。今回はGPT-4oを使用しましたが、電卓の計算1回で $0.33 かかります。正直、これは厳しいですね。

AIの思考レベルは人類を超え、驚異的な速度で進化しています。
そのため、AIの思考を「手足」として動かせる技術が、今後ますます重要になってくるでしょう。
ロボット産業が活況を呈しているのも、その流れの一環だと考えています。
そこで私は、PC操作とAIをつなぐ技術の研究を進めています。

次のステップとしては、ローカルLLMを学習し、AIの思考と連携することに挑戦してみようと思います。

開発現場を離れたおじさんが、どこまでやれるのか——ワクワクしかありません。

最後までお読みいただき、ありがとうございました。

Discussion