Closed5
Anthropic computer useを調査する
- コンピュータを画像を理解するmultimodalとtoolで操作する
- ピクセル単位で必要な場所を判定し、それを操作することを学習したモデル
- ドキュメントによるとcomputer, text_editor, bashというtoolがあり、UI操作を担当するのはcomputer
- リファレンス実装があるので試す
- APIKeyを設定してdocker実行するだけ
- dockerは別マシンにあるのでbindを変更して実行した
docker run \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-v $HOME/.anthropic:/home/computeruse/.anthropic \
-p 0.0.0.0:5900:5900 \
-p 0.0.0.0:8501:8501 \
-p 0.0.0.0:6080:6080 \
-p 0.0.0.0:8080:8080 \
-it ghcr.io/anthropics/anthropic-quickstarts:computer-use-demo-latest
- http://{dockerhost_ip}:8501 にアクセスすると動く
-
2024年一番可愛い猫画像をduckduckgoで検索して保存して
という重要な課題を託した
流れはこんな感じ
- 最初にscreenshotをとって次に何をやるかを決める
{'action': 'screenshot'}
- firefox iconを見つけ起動する
{'action': 'mouse_move', 'coordinate': [804, 738]}
{'action': 'left_click'}
- firefoxのアドレスバーにURLを入力する
{'action': 'mouse_move', 'coordinate': [300, 100]}
{'action': 'left_click'}
{'action': 'type', 'text': 'https://duckduckgo.com'}
{'action': 'key', 'text': 'Return'}
- 検索クエリーを入力する
{'action': 'mouse_move', 'coordinate': [500, 182]}
{'action': 'left_click'}
{'action': 'type', 'text': '2024 cutest cat photos'}
{'action': 'key', 'text': 'Return'}
- 検索結果の画像タブを開く
{'action': 'mouse_move', 'coordinate': [116, 205]}
{'action': 'left_click'}
- 一番可愛い猫を選んで右クリックで保存
{'action': 'mouse_move', 'coordinate': [97, 375]}
{'action': 'right_click'}
{'action': 'mouse_move', 'coordinate': [185, 418]}
{'action': 'left_click'}
- 保存ダイアログのボタンを押す
{'action': 'mouse_move', 'coordinate': [975, 685]}
{'action': 'left_click'}
画像データを除いたログ
{
"max_tokens": 4096,
"messages": [
{
"role": "user",
"content": [
{
"text": "2024年一番可愛い猫画像をduckduckgoで検索して保存して",
"type": "text"
}
]
},
{
"role": "assistant",
"content": [
{
"text": "DuckDuckGoで2024年の可愛い猫画像を検索して保存していきましょう。\n\nまず、Firefoxを開いてDuckDuckGoで検索を行います。",
"type": "text"
},
{
"id": "toolu_01Mib955379eJFLGXmEffX1P",
"input": {
"action": "screenshot"
},
"name": "computer",
"type": "tool_use"
}
]
},
{
"content": [
{
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": ""
}
}
],
"tool_use_id": "toolu_01Mib955379eJFLGXmEffX1P",
"is_error": false
}
],
"role": "user"
},
{
"role": "assistant",
"content": [
{
"text": "Firefoxアイコンをクリックします。",
"type": "text"
},
{
"id": "toolu_015zfWHpYLKAp9uBVPqNpKLh",
"input": {
"action": "mouse_move",
"coordinate": [
804,
738
]
},
"name": "computer",
"type": "tool_use"
},
{
"id": "toolu_01PxLJm5kqQCxSErGRAtLm1Y",
"input": {
"action": "left_click"
},
"name": "computer",
"type": "tool_use"
}
]
},
{
"content": [
{
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": ""
}
}
],
"tool_use_id": "toolu_015zfWHpYLKAp9uBVPqNpKLh",
"is_error": false
},
{
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": ""
}
}
],
"tool_use_id": "toolu_01PxLJm5kqQCxSErGRAtLm1Y",
"is_error": false
}
],
"role": "user"
},
{
"role": "assistant",
"content": [
{
"text": "Firefoxが開くのを待ち、アドレスバーに移動してDuckDuckGoのURLを入力します。",
"type": "text"
},
{
"id": "toolu_017bHsBJfbg9J9jhqZCbkt32",
"input": {
"action": "mouse_move",
"coordinate": [
300,
100
]
},
"name": "computer",
"type": "tool_use"
},
{
"id": "toolu_01EqdMmoNiRV1kmMquispATn",
"input": {
"action": "left_click"
},
"name": "computer",
"type": "tool_use"
},
{
"id": "toolu_01VuUr8dxBNPUQK7uacUYwes",
"input": {
"action": "type",
"text": "https://duckduckgo.com"
},
"name": "computer",
"type": "tool_use"
},
{
"id": "toolu_01HviFDZwNKr84eccLqxCEJh",
"input": {
"action": "key",
"text": "Return"
},
"name": "computer",
"type": "tool_use"
}
]
},
{
"content": [
{
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": ""
}
}
],
"tool_use_id": "toolu_017bHsBJfbg9J9jhqZCbkt32",
"is_error": false
},
{
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": ""
}
}
],
"tool_use_id": "toolu_01EqdMmoNiRV1kmMquispATn",
"is_error": false
},
{
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": ""
}
}
],
"tool_use_id": "toolu_01VuUr8dxBNPUQK7uacUYwes",
"is_error": false
},
{
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": ""
}
}
],
"tool_use_id": "toolu_01HviFDZwNKr84eccLqxCEJh",
"is_error": false
}
],
"role": "user"
},
{
"role": "assistant",
"content": [
{
"text": "DuckDuckGoのページが開いたので、検索バーに「2024 cutest cat photos」と入力して検索します。",
"type": "text"
},
{
"id": "toolu_011isBmSyK3ukAT6LQ6uCaiY",
"input": {
"action": "mouse_move",
"coordinate": [
500,
182
]
},
"name": "computer",
"type": "tool_use"
},
{
"id": "toolu_01Cte94zVMLezbxRRChhoYHi",
"input": {
"action": "left_click"
},
"name": "computer",
"type": "tool_use"
},
{
"id": "toolu_01DDqUN7xivDKSL3dWr6ax1j",
"input": {
"action": "type",
"text": "2024 cutest cat photos"
},
"name": "computer",
"type": "tool_use"
},
{
"id": "toolu_019hzJRzpXrVrKB928bXxRVp",
"input": {
"action": "key",
"text": "Return"
},
"name": "computer",
"type": "tool_use"
}
]
},
{
"content": [
{
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": ""
}
}
],
"tool_use_id": "toolu_011isBmSyK3ukAT6LQ6uCaiY",
"is_error": false
},
{
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": ""
}
}
],
"tool_use_id": "toolu_01Cte94zVMLezbxRRChhoYHi",
"is_error": false
},
{
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": ""
}
}
],
"tool_use_id": "toolu_01DDqUN7xivDKSL3dWr6ax1j",
"is_error": false
},
{
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": ""
}
}
],
"tool_use_id": "toolu_019hzJRzpXrVrKB928bXxRVp",
"is_error": false
}
],
"role": "user"
},
{
"role": "assistant",
"content": [
{
"text": "検索結果から画像タブをクリックして、画像を表示します。",
"type": "text"
},
{
"id": "toolu_01BBiYwa9RAy7c3FFGiWiQ7q",
"input": {
"action": "mouse_move",
"coordinate": [
116,
205
]
},
"name": "computer",
"type": "tool_use"
},
{
"id": "toolu_01XNu1EacEZPHg3pohnixV36",
"input": {
"action": "left_click"
},
"name": "computer",
"type": "tool_use"
}
]
},
{
"content": [
{
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": ""
}
}
],
"tool_use_id": "toolu_01BBiYwa9RAy7c3FFGiWiQ7q",
"is_error": false
},
{
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": ""
}
}
],
"tool_use_id": "toolu_01XNu1EacEZPHg3pohnixV36",
"is_error": false
}
],
"role": "user"
},
{
"role": "assistant",
"content": [
{
"text": "いくつかの可愛い猫の画像が表示されました。これらの画像の中から1枚を選んで保存してみましょう。\n\n左上の白い子猫の画像を右クリックして保存します。",
"type": "text"
},
{
"id": "toolu_01T1ABafjWe1R2r2VsAA3DJK",
"input": {
"action": "mouse_move",
"coordinate": [
97,
375
]
},
"name": "computer",
"type": "tool_use"
},
{
"id": "toolu_01Fj9NyP7PzN3McW9oSNMpe6",
"input": {
"action": "right_click"
},
"name": "computer",
"type": "tool_use"
}
]
},
{
"content": [
{
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": ""
}
}
],
"tool_use_id": "toolu_01T1ABafjWe1R2r2VsAA3DJK",
"is_error": false
},
{
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": ""
}
}
],
"tool_use_id": "toolu_01Fj9NyP7PzN3McW9oSNMpe6",
"is_error": false
}
],
"role": "user"
},
{
"role": "assistant",
"content": [
{
"text": "「Save Image As...」をクリックして画像を保存します。",
"type": "text"
},
{
"id": "toolu_01BY5chHX7SzEi14CsaxCr4t",
"input": {
"action": "mouse_move",
"coordinate": [
185,
418
]
},
"name": "computer",
"type": "tool_use"
},
{
"id": "toolu_01SmK5bHrtqSkoTUo2V9hBwc",
"input": {
"action": "left_click"
},
"name": "computer",
"type": "tool_use"
}
]
},
{
"content": [
{
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": ""
}
}
],
"tool_use_id": "toolu_01BY5chHX7SzEi14CsaxCr4t",
"is_error": false
},
{
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": ""
}
}
],
"tool_use_id": "toolu_01SmK5bHrtqSkoTUo2V9hBwc",
"is_error": false
}
],
"role": "user"
},
{
"role": "assistant",
"content": [
{
"text": "保存ボタンをクリックして画像を保存します。",
"type": "text"
},
{
"id": "toolu_01QWbgRe2XjtiWs9ZFX6qwpc",
"input": {
"action": "mouse_move",
"coordinate": [
975,
685
]
},
"name": "computer",
"type": "tool_use"
},
{
"id": "toolu_018H3HacFgNYt1yDN6dPpT2m",
"input": {
"action": "left_click"
},
"name": "computer",
"type": "tool_use"
}
]
},
{
"content": [
{
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": ""
}
}
],
"tool_use_id": "toolu_01QWbgRe2XjtiWs9ZFX6qwpc",
"is_error": false
},
{
"type": "tool_result",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": ""
}
}
],
"tool_use_id": "toolu_018H3HacFgNYt1yDN6dPpT2m",
"is_error": false
}
],
"role": "user"
}
],
"model": "claude-3-5-sonnet-20241022",
"system": "<SYSTEM_CAPABILITY>\n* You are utilising an Ubuntu virtual machine using x86_64 architecture with internet access.\n* You can feel free to install Ubuntu applications with your bash tool. Use curl instead of wget.\n* To open firefox, please just click on the firefox icon. Note, firefox-esr is what is installed on your system.\n* Using bash tool you can start GUI applications, but you need to set export DISPLAY=:1 and use a subshell. For example \"(DISPLAY=:1 xterm &)\". GUI apps run with bash tool will appear within your desktop environment, but they may take some time to appear. Take a screenshot to confirm it did.\n* When using your bash tool with commands that are expected to output very large quantities of text, redirect into a tmp file and use str_replace_editor or `grep -n -B <lines before> -A <lines after> <query> <filename>` to confirm output.\n* When viewing a page it can be helpful to zoom out so that you can see everything on the page. Either that, or make sure you scroll down to see everything before deciding something isn't available.\n* When using your computer function calls, they take a while to run and send back to you. Where possible/feasible, try to chain multiple of these calls all into one function calls request.\n* The current date is Wednesday, October 23, 2024.\n</SYSTEM_CAPABILITY>\n\n<IMPORTANT>\n* When using Firefox, if a startup wizard appears, IGNORE IT. Do not even click \"skip this step\". Instead, click on the address bar where it says \"Search or enter address\", and enter the appropriate search term or URL there.\n* If the item you are looking at is a pdf, if after taking a single screenshot of the pdf it seems that you want to read the entire document instead of trying to continue to read the pdf from your screenshots + navigation, determine the URL, use curl to download the pdf, install and use pdftotext to convert it to a text file, and then read that text file directly with your StrReplaceEditTool.\n</IMPORTANT>",
"tools": [
{
"name": "computer",
"type": "computer_20241022",
"display_width_px": 1024,
"display_height_px": 768,
"display_number": 1
},
{
"type": "bash_20241022",
"name": "bash"
},
{
"name": "str_replace_editor",
"type": "text_editor_20241022"
}
]
}
初感
- vnc付きの仮想のサーバーが起動し、それにtoolがアクセスする
- screenshot, mouse moveなどはshell commandを実行する
- 次の操作が必要とされるまでのセットが一つのレスポンスとなる感じ
- アドレスバーをクリックして検索クエリーを実行してリターンまでがセット
- 検索結果がでるのを待ってscreenshotをとって次の一連の操作をレスポンスする
- tool responseには全ての実行後のscreenshotが含まれる
- 基本的にはloopさせてtoolcallを履歴を含めて呼び続け、目的を達成して終了するというReAct的なエージェント
- 直感的ではない操作や複雑な操作では失敗する可能性がある
- 履歴を含めscreenshot画像(1024x768)を送信するので、コストはやや高い
考察
- アクションごとにスクリーンショットを撮るので速度やコストを考えると日常的に使うというのは難しそう
- 動画対応やマルチモーダルの速度改善、コスト削減でそのうち解決しそうではある
- 機械学習の併用によって簡単な実行部分だけを低コストで行うという分担も考えられる
- それでもピクセル単位の理解とツール実行計画ができるという点で利用価値が高い
- 例えば
- 何かの作業のスクリーンショットを撮って、どこをクリックしたかとか自動的に強調して作業内容のドキュメントを作成する
- 作業に詰まった時に作業中のスクリーンショットを渡すだけで、作業マニュアルをもとに次に何をクリックするべきか教えてくれる
- 機械学習の画像アノテーションに利用する
- UIテストやテスト計画作成に利用する
- などの応用が可能ではないか
- 時間と共にPCでできる作業は通常の機械学習での速度向上や個別的な学習も含め、ほとんど自動化することが可能になり、タブを押すだけでいい感じのUIの操作ができるようになるかもしれない
このスクラップは24日前にクローズされました