清水理史の「イニシャルB」

Microsoft発のオープンソース版「UFO」登場! Windowsを自動操縦するAIエージェントを試す

Microsoft発のオープンソースプロジェクト「UFO」。言語モデルでWindowsを自動操縦できる

 Microsoft発のオープンソースプロジェクトから、「UFO」と呼ばれる、非常に魅力的なソフトウェアが公開された。正式には「UI-Focused dual-agent framework to fulfill user requests on Windows OS」という名前のこのフレームワークでは、AIを利用して、Windows上のアプリを指定されたタスクを実現するために自動操作することができる。むしろ、こっちが「Copilot in Windows」ですと言われた方がしっくりくるほどの衝撃的なプロジェクトだ。

Copilot以上に未来を感じさせるプロジェクト!?

 「Copilot in Windows」が登場した当初、これでWindowsの面倒な操作が自動化できるようになるのか? と期待したが、蓋を開けてみると、できることはメモ帳の起動やダークモードへの変更程度で、しかもCopilotの提案をクリックして許可する必要があるという、なんとも夢のない機能となっていた。

 そんな中、登場したのが、今回紹介する「UFO」だ。ちょっと、名前で遊び過ぎているようにも思えるが、なかなか未来を感じさせる機能となっている。

UFOのプロジェクト

 具体的には、ChatGPTのような自然言語による命令によってWindowsのアプリを自動的に操作することができる。

 実際に見た方が早いので、興味のある人は以下の動画を見てほしい。

UFOのデモ動画

 この例では、UFOに「Summarize the web page viewing in Edge. And send summarized content to shimiz@shimiz.org.」と、ウェブページの要約と、その結果のメールでの送信を依頼している。

 動画は、現状の処理速度(あまりスピーディではない)も体感してほしかったので、あえて早送りをしていないが、UFOが全体のプランを作成後、ウェブページを要約し、Outlookにアプリを切り替えてから、宛先、タイトル、本文を入力し、最後にユーザーに許可を求めてメールが送信される様子を収めている。

 いろいろツッコミどころがあるとは思うが、もう一歩、いや二歩も進めば、SF映画に登場するロボット的にいろいろな依頼ができるパートナーになれるんじゃないかと思わせるようなソフトウェアになっている。

 Microsoftのオープンソースプロジェクトは、Power ToysとかWindows Terminalとか、高い熱量のプロジェクトが多いのだが、このUFOも、ひっそりと登場したわりには、なかなかユーザーを熱狂させる面白さを持ったプロジェクトと言えそうだ。

スクリーンショットでデスクトップの状態分析しながら操作を実施

 仕組みもなかなか興味深い。詳細は、以下のgithubのページと、そこからリンクされているarxivのペーパーを参照してほしいが、2つのエージェントを利用して現状の把握とアプリケーションの操作を実施する。

▼githubのページ
microsoft/UFO(github)

▼arxivのペーパー
UFO: A UI-Focused Agent for Windows OS Interaction

 以下は、動作の仕組みとして紹介されている図だ。

 UFOでは、ユーザーからのリクエストを受け取ると、「App Agent」がObservationで現状を把握し、ゴールを達成するためのプランを作成する。例えば、冒頭で紹介したウェブページの要約とメールでの送信の例なら、まず画面のスクリーンショットを撮影し、デスクトップにどのようなアプリが存在するかが分析される。

 以下は、「Observation」のプロセスで撮影されたスクリーンショット(UFOのlogフォルダーに自動的に生成される)とログの内容だ。

実際にUFOが撮影したスクリーンショット。このようにスクリーンショットで現在の状況を把握する
ログの内容:

Observation": "The screenshot shows the Microsoft Edge browser open with a web page titled 'Microsoft Copilot for Microsoft 365 overview'. The Outlook application is also visible with the user's email account open, but no new email draft is visible.

 デスクトップに、「Microsoft Copilot for Microsoft 365 overview」というページを開いたEdgeとOutlookアプリが開いていることが認識されている。

 このように、UFOでは、Windowsの現在の状況をスクリーンショットで撮影し、その様子をChatGPTのマルチモーダルモデルとなるGPT-4 with Visionに入力し、画像の状態を言語モデルで把握していることになる。

 このように、現状を把握できると、以下のように実際のプランを作成し、そのプランに従って再びスクリーンショットで画面を分析しながら、「ActAgent」がアプリを操作するというプロセスを繰り返すことになる。

  1. Summarize the content of the web page titled 'Microsoft Copilot for Microsoft 365 overview' that is currently open in Microsoft Edge.
  2. Switch to the Outlook application.
  3. Compose a new email.
  4. Enter the recipient's email address 'shimiz@shimiz.org' in the 'To' field.
  5. Enter a subject for the email.
  6. Paste the summarized content into the body of the email.
  7. Send the email. This action is sensitive and needs to be confirmed by the user.

 ちなみに、アプリを操作する際のスクリーンショットは以下のようになっており、画面上のボタンや入力欄などにインデックスを付けて管理している。また、アプリの操作は、ドキュメントによると「Windows UI Automation API」となっている。

UFOのスクリーンショット。Outlookのアプリのコントロールにインデックスがつけられていることがわかる

▼UI オートメーションに関する資料
UI オートメーションの概要(Microsoft Learn)

実際にUFOを使ってみよう

 使い方は簡単で、基本的にはGitHubのReadme.mdの通りにリポジトリをクローンし、Pipでrequirements.txtに記載されているモジュールをインストールすればいい。

 Windows上のアプリを操作するので、もちろんインストール先も「Windows」で、WSL2で実行することはできない。あらかじめ3.10以上のPython(Anaconda推奨)とGit for Windowsをインストールしておく必要がある。

 また、言語モデルはOpenAIとAure OpenAIの両方に対応しているが、今回はOpenAIの「gpt-4-vision-preview」を利用した。クローン先の「ufoconfigconfig.yaml」にAPIキー、エンドポイント、モデルを記述しておこう。

OpenAIのAPIの情報を入力するだけですぐに使える

 準備ができたら、以下のコマンドで実行できる。タスク名として指定したフォルダーでlogフォルダーにログとスクリーンショットが保存されるので、タスクごとに分けておくといいだろう。

python -m ufo --task <your_task_name>

現状のUFOの制約

 このように、なかなか興味深いUFOだが、現状はいくつかの制約もある。

 まず、アプリをあらかじめ起動しておく必要がある。現状はUFOが自動的にアプリを起動することができないこともあるが、どのアプリを使うかというプランをスクリーンショットから分析するため、あらかじめアプリが起動していないとプランを作成できない。

使わせたいアプリは起動しておく必要がある

 次に、英語版のアプリを利用する必要がある。スクリーンショットを使って画面上のコントロールを認識しているうえ、内部的なコントロールの指定も英語で行われる。例えば、メールを操作するときにメールアドレスを入力する先は、日本語版アプリの「宛先」では認識できず、英語版アプリの「To」になっている必要がある。

日本語版のアプリを使うと入力先やクリック先などのコントロールを間違える。英語版アプリが必要

 さらに冒頭の動画でも体験できるが、動作に時間がかかる。スクリーンショットを撮影し、それをOpenAIのAPI経由で送信し、分析してから操作するという仕組みなので、動作と動作の間の待ち時間が結構長い。

 最後に、コストがそこそこかかる。UFOは、操作が完了すると、API経由でのコストを算出してくれるが、ウェブページを要約してメールで送信するという簡単な作業でも「$1.09」かかった。

最後にコストが表示される。簡単な例でも1ドルかかってしまう

 これは、要約などの要求だけでなく、スクリーンショットを分析するという要求がたびたび発生しているためだ。今回は、2つのアプリを操作する簡単な例だが、より複雑なタスクになれば、当然、もっとコストがかさむことになる。

 ウェブページを要約してメールを送るだけで150円となると、現状はなかなかハードルが高い。

 映画やアニメのロボットでコストがかかっていることを意識したことはなかったが、実際の値段を見せられてしまうと、「気軽に次の惑星までの到着時間とか聞かない方がいいんじゃない?」とか心配になってしまった。

清水 理史

製品レビューなど幅広く執筆しているが、実際に大手企業でネットワーク管理者をしていたこともあり、Windowsのネットワーク全般が得意ジャンル。最新刊「できるWindows 11」ほか多数の著書がある。