AIがPCを操作する日
やられた。多分、OpenAIだのGoogleだのといったAIベンダーは、みんなそう思ったんじゃないだろうか。
Anthropicが、Claude 3.5でPCを操作できるようにした! という大ニュース。「まだベータだし、そんなちゃんと動くわけじゃないよ」とあらかじめ言い訳してるあたりに、実はすごいのかもという期待を抱くのはワタクシばかりではあるまい。で、公開されているデモ環境を動かしてみた。
うーん、ちょっと違う……。僕がイメージしたのは、Claudeのアプリか何かで「あれやって」というと、Claudeが勝手にPCを動かしてやってくれる、といった感じのものだった。だけど、これは違う。何が違うかというと。
- まず、環境。普通のパソコンはまだ考えてない。Docker(パソコン環境そのものをコンテナ化して扱えるようにするもの)を使って、仮想環境にあらかじめセットアップしたLinuxを起動し、そこでClaudeからプロンプトを送信して操作する。つまり、専用に用意された環境でないと動かない。
- 何でもできるわけではない。あらかじめ用意した操作(マウスやキーの操作、Firefoxのブラウジング、用意されたスプレッドシートの基本的な操作、用意されたテキストエディタの基本的な操作、など)しかできない。
- PCの操作は、Claudeがやってるわけではなくて、あらかじめPCを操作するプログラムが用意されており、Claudeが必要に応じてそれを実行している。用意された環境には、メッセージを受け取ってコマンドを実行するプログラムが組み込まれており、Claudeが必要に応じてコマンドを実行しているだけ。
全体の仕組みをざっくりというなら、これはClaude(だけでなく、OpenAIのGPTやGoogleのGeminiなど著名なLLMすべて)に実装されている「ツール」の拡張版だ。
ツールというのはこういうもの。あらかじめ関数を用意しておき、その関数の詳細(名前、引数、どういう働きをするかといった説明)が定義してある。で、プロンプトが送られてきたら、その内容を解析し、「このツールが使える」と判断したら、呼び出す関数と渡す引数などの情報をAIが生成して返す。それを受け取ったプログラム側は、それらを元に関数を呼び出して実行する。そういうもの。
要するに、あらかじめ用意された関数の情報を元に、関数を呼び出すのに必要なもの(関数名と引数)をAIが生成してくれるので、それらを元に関数を呼び出して実行する(これがLLMのツールの働き)。AIが直接何かを実行するんじゃなくて、「この質問の場合は、この関数にこういう引数を指定して呼び出すと必要な結果が得られるよ」ということをAIが解析して答えているのだね。
で、今回のAnthropicの「Computer use」という機能は、これを拡張して、プロンプトに応じてPCを操作するためのツールを実行するようにしているわけ。サンプルの環境では、メッセージを送信してコマンドを実行するためのプログラムが仕込んである。で、更にサンプルとして、PCのアプリ(Firefoxとかエディタとか、あらかじめ用意してあるもの)を操作するコマンドを実行するための関数がいくつも定義してあって、それらをLLMのツールとして登録して動かしてるのだね。
もちろん、場合によってはいくつもの関数を順に呼び出したりしないといけないし、操作したアプリの結果を読み取ってそれを元に更に処理を行ったりするわけで、実際にはもっともっと複雑な処理をしているのだけど、まぁざっくりまとめてしまえばそういうことをやっているわけ。
その仕組がなんとなく見えてきたところで、「うーん、そんなもんか……」とがっかりしたのは確かなのだ。それは、用意された環境でないと動かないとか、アプリを操作するコマンドやメッセージを送信する関数を自分で定義していかないと拡張できないとか、そういうことではなくて。なんていうか、「そのアプローチは間違いだ」という感が否めないのだ。
PCを操作するコマンドを作成し、それを呼び出すメッセージを送る関数を定義する。これをツールとして登録すれば、必要に応じてAIが関数呼び出しを認識して処理する。ということは、PCを操作するコマンド、それを呼び出すメッセージを送る関数、これらをあらかじめ定義しておかないといけないことになる。
サンプルとして用意された環境は、「PCを操作するサンプルのコマンドをいくつか用意した」というだけであり、PCを操作しようとすれば、1つ1つの操作を行うための膨大なコマンドと関数が必要になるだろう。新しいアプリが出てきたら、それを操作するコマンドと関数を作ってたさないといけない? そのやり方は正しいんだろうか。
Windowsでは、Power Automate for Desktopというツールがあって、操作のパネルをペタペタと並べるだけですべての操作を自動化できる。こういう「すべてを操作する仕組み」を用意して、それをAIが操る、というのなら納得できる。あるいは、生成AIというなら、PCを操作するコマンドプログラムと関数のコードを自分で書いてプログラムをビルドし、それを利用するコードまですべて自分で作成するなら、そりゃ大したもんだ。
だけど現状は、人間がPC操作のコマンドを作り、人間がそれを呼び出す関数を定義し、人間がそれらをAIから利用するコードを書いて動かしている。ねぇ、これ本当に便利なんだろうか。
AI関係の新機能は日々増えていく。次々と「AIでなんたらかんたらを実現!」といった報道が流れる。AIなのに、どんどん人間のやることが増えている。
日々、AIがらみの解説書をヤギに食わせるほど書いている本人がこういうのもなんだけど、AIで世界は本当に便利になってるんだろうか。膨大なエネルギーを湯水のごとく消費するに見合うだけ、世の中は良くなってるんだろうか。うーん。