🤖
Anthropic computer use demoの概要をわかりやすく解説
背景
背景はLangGraph computer use agent(cua)をわかりやすく解説とほぼ同じです。
computer-use-demoはOSSとしてcomputer useをAnthropic公式リポジトリが公開されたので、本ブログでAnthropic computer useを解説をしていこうと思います。
computer useとは
computer useとは、LangGraph computer use agent(cua)をわかりやすく解説で解説しているので、参照して下さい。
Anthropic computer use全体アーキテクチャ
下記がAnthropic computer useリポジトリの全体像です。
-
DockerコンテナにStreamlit(チャット画面)、仮想デスクトップが存在しそれぞれがiframeでlocalhost:8080からStreamlit localhost:8501と仮想デスクトップ localhost:6080を呼び出しています。localhost:8080にアクセスすると画面左にStreamlit localhost:8501と画面右に仮想デスクトップ localhost:6080が表示されます。
-
ユーザーチャット入力
- チャット画面からユーザーのクエリーを入力しsubmitします。
-
Claude APIリクエスト
- Anthropic computer useではloop.pyとStreamlit.pyが主要のファイルです。
- loo.pyでクエリーとシステムプロンプトをパラメータとしてClaude APIにリクエストします。
- 初回はテキストのユーザークエリーですが、2回目以降のリクエストは仮想環境デスクトップのスクリーンショット画像がインプットとなります。※過去の履歴もインプットとなります。
-
Claude APIレスポンス
- 継続してツール(computer use)利用有無を判定する。
- 継続利用しない場合、最終回答としてユーザーへ回答する
- 継続利用する場合、仮想環境で実行するアクションを取得。ここでのアクションとは仮想環境上でcomputer useするアクションである。例:クリック、画面すくループ、タイピング、などなど
4/5. ツールの実行
- computer useのツールを実行する
- 仮想環境上でcomputer useするので、xdotoolでシェルスクリプトを実行する
- 仮想環境上で実行したシェルスクリプトで様々なアクションをする
- Claude APIレスポンスのアクションと座標を基に、仮想環境の画面上のどこどのようなアクションを行うかを決定する。
- Xvfb、mutter、tint2、VNC
- メモリ内の仮想ディスプレイ環境、ウィンドウマネージャー、タスクバー、アプリケーションランチャー、VNCサーバー/クライアント
7/8. アクションイベント処理
- xdotoolコマンドによるアクションイベント(画面スクロール、クリック、キーボードタイピング、など)。
- 座標を基に画面のどこにアクションを行うかも判断
-
VNCサーバー localhost:5900
- 描画変更内容を検知し、VNCクライアントへ連携
-
VNCクライアント localhost:6080
- 仮想環境のブラウザを表示。WebSocketでブラウザ表示
11/13. 仮想画面をスクリーンショット
- アクション後の仮想環境のブラウザ画面をスクリーンショット
- 取得したスクリーンショット画像をエンコード
14/15. 次のアクションを決定
- スクリーンショット画像をインプットにClaude APIをリクエスト
- 上記2に処理が戻り、loop.pyのAPI実行を再度行う
- 取得したスクリーンショット画像でユーザークエリーに回答できる情報であれば、ツールコールを行わずに、最終回答をする。追加で情報を取得する必要があれば、ツールコールを行い再度computer useを繰り返す
Discussion