Claude Computer Useは、AIが画面(スクリーンショット)を視覚的に解析し、OS(マウス・キーボード)を直接操作する画期的なAPI機能です。
Claudeがコンピュータを操作するためには、APIリクエスト時に特定の「コンピュータ操作用ツール」を定義し、モデルからのコールバックをローカル環境で実行するループを構築します。
Anthropicが定義する標準的な computer_20241022 ツール仕様に基づきます。
{
"name": "computer",
"type": "computer_20241022",
"display_width_px": 1024,
"display_height_px": 768,
"display_number": 1
}
mouse_move, type)をツール呼び出しとして返却。🔄 ループ図: [ユーザー指示] ➡️ [Claude (解析)] ➡️ [ツール実行 (OS)] ➡️ [画面キャプチャ] ➡️ [Claude (再解析)]
---Computer Useは、毎ステップで「高解像度画像(スクリーンショット)」をコンテキストに含めるため、トークン消費が非常に激しいのが特徴です。
| 項目 | 消費トークン(目安) | コスト(Claude 3.5 Sonnet料金ベース) | 備考 |
|---|---|---|---|
| システムプロンプト + ツール定義 | 約 2,000 tokens | 約 $0.006 (約0.9円) | 初回および毎ステップ固定 |
| スクリーンショット (1024x768) | 約 1,600 tokens | 約 $0.0048 (約0.7円) | 1ステップごとに1枚追加 |
| 会話履歴(累積) | 10,000〜50,000 tokens | $0.03 〜 $0.15 (約4.5円〜22円) | ステップが進むほど履歴が肥大化 |
| 【合計】1ステップ平均 | 約 20,000 tokens | 約 $0.06 (約9円) | タスク中盤の平均値 |
| 【合計】1タスク(30ステップ) | 約 600,000 tokens (累積) | 約 $1.80 (約270円) | エラー試行錯誤を含む実運用コスト |
※1ドル=150円換算。2026年現在のAPI価格(Input: $3.00/M, Output: $15.00/M)を基準に算出。
---推奨環境: 隔離されたDocker環境、または使い捨ての仮想マシン(Windows Sandbox, AWS EC2等)。
computer-use-demo イメージをベースに構築。ネットワーク制御:
承認プロセスの導入:
イラスト制作ソフト「クリスタ」の自動操作。 未確証(一部制限あり)
| 操作手順 |
1. 仮想デスクトップ上でクリスタを起動。 2. 座標指定で「ファイル」>「新規作成」をクリック。 3. 【難所】キャンバス上でのドラッグによる描画(Claudeはストロークのリアルタイムフィードバックが得られないため、直線や単純な図形描画に留まる)。 4. ショートカットキー( Ctrl + S)による保存。
|
|---|---|
| 安定度 | 【低】★☆☆☆☆ ・GUIが細かく、アイコンの視認性が低いため誤クリックが多発。 ・ペンタブレットの筆圧再現や滑らかなドラッグは不可能。 ・バッチ処理(「特定フォルダの画像を読み込んでPSD書き出し」等)であれば辛うじて実用可能。 |
ブラウザ上で動作する画像生成UI「ComfyUI」の自動操作。 確証(実用レベル)
| 操作手順 |
1. ブラウザを起動し、http://127.0.0.1:8188 にアクセス。2. 画面上の「Load」ボタンの座標を認識し、クリックしてワークフロー(JSON)を読み込む。 3. CLIP Text Encode ノード(プロンプト入力欄)をクリックし、英語プロンプトを入力。4. 「Queue Prompt」ボタンをクリックして生成を開始。 5. 生成された画像を右クリックして保存。 |
|---|---|
| 安定度 | 【中〜高】★★★★☆ ・Webベースの明確なボタン配置のため、クリック精度の誤認が少ない。 ・【注意点】新規にノード同士をドラッグ&ドロップで「線で繋ぐ」操作は座標ズレが起きやすく、失敗率が高い。既存ワークフローの「値の変更」と「実行」に特化させるべき。 |
以下は、ClaudeのComputer Use APIを呼び出し、ローカルのOS操作(PyAutoGUIを使用)に変換する最小限の実装イメージです。
import anthropic
import pyautogui
import time
from PIL import Image
client = anthropic.Anthropic()
def take_screenshot():
# 画面をキャプチャし、API制限に適合するようリサイズ
screenshot = pyautogui.screenshot()
screenshot = screenshot.resize((1024, 768))
screenshot.save("screenshot.png")
return "screenshot.png"
def run_agent_loop(instruction):
messages = [{"role": "user", "content": instruction}]
while True:
screenshot_path = take_screenshot()
# API呼び出し (Beta機能のComputer Useを指定)
response = client.beta.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=1024,
tools=[{
"type": "computer_20241022",
"name": "computer",
"display_width_px": 1024,
"display_height_px": 768
}],
messages=[
*messages,
{
"role": "user",
"content": [
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": encode_image(screenshot_path)}}
]
}
],
betas=["computer-use-2024-10-22"]
)
# モデルからのツール呼び出し(操作指示)を解析
tool_calls = [content for content in response.content if content.type == "tool_use"]
if not tool_calls:
print("タスク完了:", response.content[0].text)
break
for tool in tool_calls:
action = tool.input.get("action")
# 物理操作へのマッピング
if action == "mouse_move":
x, y = tool.input.get("coordinate")
pyautogui.moveTo(x, y, duration=0.5)
elif action == "left_click":
pyautogui.click()
elif action == "type":
pyautogui.write(tool.input.get("text"))
time.sleep(2) # 画面遷移の待機
---
| フェーズ | 推奨アクション | 目的 | 難易度 |
|---|---|---|---|
| 1. 環境構築 | 公式のDockerイメージ(anthropic/computer-use-demo)をローカルまたはクラウドVMにプルして起動する。 |
ホスト環境を破壊しない安全なサンドボックスの確保。 | 🟢 初級 |
| 2. テスト実行 | ComfyUIを起動し、「プロンプトの書き換えと生成ボタンのクリック」をClaudeに指示する。 | Web UI操作における座標認識精度とトークン消費の確認。 | 🟡 中級 |
| 3. ワークフロー最適化 | 日本語入力が必要な箇所は、直接入力させず「クリップボードにコピー(Ctrl+C)してペースト(Ctrl+V)」させるプロンプトを組む。 | 日本語IMEバグによるエージェントのスタック(停止)防止。 | 🟡 中級 |
| 4. 監視設計 | 1ステップごとに「承認/却下」を選択できるインターフェース(Human-in-the-Loop)を構築する。 | 無限ループによるAPI高額請求の防止と安全性の担保。 | 🔴 上級 |