Claudeはコンピュータ使用ツールを通じてコンピュータ環境と対話できます。このツールは、自律的なデスクトップ操作のためのスクリーンショット機能とマウス/キーボード制御を提供します。
コンピュータ使用は、Claudeがデスクトップ環境と対話できるようにするベータ機能です。このツールは以下を提供します:
コンピュータ使用は、より包括的な自動化ワークフローのためにbashやテキストエディタなどの他のツールで拡張できますが、コンピュータ使用とは具体的には、デスクトップ環境を見て制御するコンピュータ使用ツールの機能を指します。
モデルのサポートについては、ツールリファレンスを参照してください。
コンピュータ使用は、標準的なAPI機能とは異なる固有のリスクを持つベータ機能です。これらのリスクは、インターネットと対話する際に高まります。
状況によっては、Claudeはあなたの指示と矛盾する場合でも、コンテンツ内に見つかったコマンドに従うことがあります。たとえば、Webページ上の指示や画像に含まれる指示が、あなたの指示を上書きしたり、Claudeにミスをさせたりする可能性があります。プロンプトインジェクションに関連するリスクを回避するために、Claudeを機密データやアクションから隔離する予防策を講じてください。
Anthropicは、これらのプロンプトインジェクションに抵抗するようにモデルを訓練し、追加の防御層を加えています。コンピュータ使用ツールを使用すると、分類器が自動的にプロンプトに対して実行され、プロンプトインジェクションの可能性のあるインスタンスにフラグを立てます。これらの分類器がスクリーンショット内でプロンプトインジェクションの可能性を特定すると、次のアクションに進む前にユーザーの確認を求めるようにモデルを自動的に誘導します。この追加の保護は、すべてのユースケース(たとえば、人間が介在しないユースケース)に理想的とは限らないため、オプトアウトして無効にしたい場合は、サポートにお問い合わせください。
分類器による防御層が設置されていても、これらの予防策は引き続き重要です。
自社製品でコンピュータ使用を有効にする前に、エンドユーザーに関連するリスクを知らせ、同意を得てください。
Webインターフェース、Dockerコンテナ、ツール実装の例、エージェントループを含むコンピュータ使用リファレンス実装で始めましょう。
コンピュータ使用を始める方法は次のとおりです:
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-opus-5", # or another compatible model
max_tokens=1024,
tools=[
{
"type": "computer_20251124",
"name": "computer",
"display_width_px": 1024,
"display_height_px": 768,
"display_number": 1,
},
{"type": "text_editor_20250728", "name": "str_replace_based_edit_tool"},
{"type": "bash_20250124", "name": "bash"},
],
messages=[{"role": "user", "content": "Save a picture of a cat to my desktop."}],
betas=["computer-use-2025-11-24"],
)
print(response)Claudeにコンピュータ使用ツールとユーザープロンプトを提供する
Claudeがコンピュータ使用ツールを選択する
stop_reasonがtool_useとなり、ツール使用リクエストであることを示します。ツール入力を抽出し、コンピュータ上でツールを評価し、結果を返す
tool_resultコンテンツブロックを含む新しいuserメッセージで会話を続けます。Claudeはタスクが完了するまでコンピュータ使用ツールを呼び出し続ける
tool_useのstop_reasonで応答するので、ステップ3に戻る必要があります。ユーザー入力なしでステップ3と4を繰り返すことを「エージェントループ」と呼びます(つまり、Claudeがツール使用リクエストで応答し、アプリケーションがそのリクエストを評価した結果をClaudeに返すことです)。
コンピュータ使用には、Claudeがアプリケーションやウェブと安全に対話できるサンドボックス化されたコンピューティング環境が必要です。この環境には以下が含まれます:
仮想ディスプレイ: Claudeがスクリーンショットを通じて見て、マウス/キーボードアクションで制御するデスクトップインターフェースをレンダリングする仮想X11ディスプレイサーバー(Xvfbを使用)。
デスクトップ環境: Linux上で動作するウィンドウマネージャー(Mutter)とパネル(Tint2)を備えた軽量UI。Claudeが対話するための一貫したグラフィカルインターフェースを提供します。
アプリケーション: Firefox、LibreOffice、テキストエディタ、ファイルマネージャーなど、Claudeがタスクを完了するために使用できるプリインストールされたLinuxアプリケーション。
ツール実装: Claudeの抽象的なツールリクエスト(「マウスを移動」や「スクリーンショットを撮る」など)を仮想環境での実際の操作に変換する統合コード。
エージェントループ: Claudeと環境の間の通信を処理し、Claudeのアクションを環境に送信し、結果(スクリーンショット、コマンド出力)をClaudeに返すプログラム。
コンピュータ使用を使用する場合、Claudeはこの環境に直接接続しません。代わりに、あなたのアプリケーションが:
セキュリティと分離のために、リファレンス実装はこれらすべてを、環境の表示と対話のための適切なポートマッピングを備えたDockerコンテナ内で実行します。
コンピュータ使用を始めるために必要なすべてを含むリファレンス実装が利用可能です:
コンピュータ使用の中核は「エージェントループ」です。これは、Claudeがツールアクションをリクエストし、アプリケーションがそれらを実行し、結果をClaudeに返すサイクルです。このループは、クイックスタートで作成したクライアント、クイックスタートのtools配列と同じ形式のツールリスト、およびClaudeのツール呼び出しを処理するで定義されたツール呼び出し処理ヘルパーを使用します。以下は簡略化された例です:
def sampling_loop(model, messages, max_iterations=10):
"""
Run the computer-use agent loop until Claude stops requesting tools
or the iteration limit is reached.
"""
for _ in range(max_iterations):
response = client.beta.messages.create(
model=model,
max_tokens=4096,
messages=messages,
tools=TOOLS,
betas=["computer-use-2025-11-24"],
)
# Claudeの応答を会話履歴に追加
messages.append({"role": "assistant", "content": response.content})
# Claudeが要求したツールを実行し、結果を収集
tool_results = process_tool_calls(response)
if not tool_results:
return messages # No more tool use; task complete
# 次のイテレーションのためにツール結果をClaudeに返送
messages.append({"role": "user", "content": tool_results})
return messagesループは、Claudeがツールをリクエストせずに応答する(タスク完了)か、最大反復回数の制限に達するまで続きます。この安全策により、予期しないAPIコストにつながる可能性のある無限ループを防ぎます。
このドキュメントの残りを読む前に、リファレンス実装を試してみてください。
最高品質の出力を得るためのヒントをいくつか紹介します:
After each step, take a screenshot and carefully evaluate if you have achieved the right outcome. Explicitly show your thinking: "I have evaluated step X..." If not correct, try again. Only when you confirm a step was executed correctly should you move on to the next one.<robot_credentials>などのXMLタグ内にユーザー名とパスワードをプロンプトで提供します。ログインを必要とするアプリケーション内でコンピュータ使用を使用すると、プロンプトインジェクションの結果として悪い結果が生じるリスクが高まります。モデルにログイン認証情報を提供する前に、ジェイルブレイクとプロンプトインジェクションの軽減を確認してください。content配列を構築する際は、指示テキストをスクリーンショット画像の前に配置します。画像が処理される前にターゲットの説明を提供することで、クリックの精度が向上します。enable_zoom: trueを設定したcomputer_20251124を使用する場合、サイドバー内のファイル名、タブのタイトル、ステータスバーのテキスト、行番号、ボタンのラベルなど、スクリーンショットのデフォルト解像度では判読できない小さなテキストや特定のUI要素について尋ねられると、Claudeは領域をズームインします。期待どおりにClaudeがズームしない場合は、画面全体ではなく特定の領域や要素について尋ねてください。Anthropicスキーマのツールの1つがClaude APIを通じてリクエストされると、コンピュータ使用固有のシステムプロンプトが生成されます。これはツール使用システムプロンプトに似ていますが、次のように始まります:
You have access to a set of functions you can use to answer the user's question. This includes access to a sandboxed computing environment. You do NOT currently have the ability to inspect files or interact with external resources, except by invoking the below functions.
通常のツール使用と同様に、ユーザーが提供するsystemパラメータは引き続き尊重され、結合されたシステムプロンプトの構築に使用されます。
コンピュータ使用ツールは以下のアクションをサポートしています:
基本アクション(すべてのバージョン)
[x, y]でクリック拡張アクション(computer_20250124以降)
computer_20250124とcomputer_20251124で利用可能:
拡張アクション(computer_20251124)
Claude Opus 5、Claude Sonnet 5、Claude Opus 4.8、Claude Opus 4.7、Claude Opus 4.6、Claude Sonnet 4.6、Claude Opus 4.5で利用可能:
computer_20250124のすべてのアクションenable_zoom: trueが必要です。検査する領域の左上と右下の角を定義する座標[x1, y1, x2, y2]を持つregionパラメータを取ります。| パラメータ | 必須 | 説明 |
|---|---|---|
type | はい | ツールバージョン(computer_20251124またはcomputer_20250124) |
name | はい | "computer"である必要があります |
display_width_px | はい | ディスプレイの幅(ピクセル単位) |
display_height_px | はい | ディスプレイの高さ(ピクセル単位) |
display_number | いいえ | X11環境のディスプレイ番号 |
enable_zoom | いいえ | ズームアクションを有効にする(computer_20251124のみ)。trueに設定すると、Claudeが特定の画面領域にズームできるようになります。デフォルト:false |
コンピュータ使用と思考を組み合わせる方法については、思考を参照してください。
コンピュータ使用と一緒に他のツールを追加するには、同じtools配列に含めます。クイックスタートセクションでは、bashツールとテキストエディタツールを使用したこのパターンを示しています。同じ方法で独自のカスタムツール定義を追加できます。
リファレンス実装は、コンピュータ使用を始めるのに役立つことを目的としています。Claudeにコンピュータを使用させるために必要なすべてのコンポーネントが含まれています。ただし、ニーズに合わせて独自のコンピュータ使用環境を構築することもできます。必要なものは以下のとおりです:
tool_useの結果を実行するエージェントループコンピュータ使用ツールはスキーマレスツールとして実装されています。このツールを使用する場合、他のツールのように入力スキーマを提供する必要はありません。スキーマはClaudeのモデルに組み込まれており、変更できません。
コンピューティング環境をセットアップする
Claudeが対話する仮想ディスプレイを作成するか、既存のディスプレイに接続します。これには通常、Xvfb(X Virtual Framebuffer)または同様の技術のセットアップが含まれます。
アクションハンドラーを実装する
Claudeがリクエストする可能性のある各アクションタイプを処理する関数を作成します:
def capture_screenshot():
return "<screenshot data>"
def click_at(x, y):
return f"clicked at ({x}, {y})"
def type_text(text):
return f"typed: {text}"
def handle_computer_action(action_type, params):
if action_type == "screenshot":
return capture_screenshot()
elif action_type == "left_click":
x, y = params["coordinate"]
return click_at(x, y)
elif action_type == "type":
return type_text(params["text"])
# 必要に応じて他のアクションを処理
return f"unhandled action: {action_type}"Claudeのツール呼び出しを処理する
Claudeの応答からツール呼び出しを抽出して実行します:
def process_tool_calls(response):
tool_results = []
for block in response.content:
if block.type == "tool_use":
action = block.input["action"]
result = handle_computer_action(action, block.input)
tool_results.append(
{
"type": "tool_result",
"tool_use_id": block.id,
"content": result,
}
)
return tool_resultsエージェントループを実装する
Claudeがタスクを完了するまで続くループを作成します:
def sampling_loop(model, messages, max_iterations=10):
"""
Run the computer-use agent loop until Claude stops requesting tools
or the iteration limit is reached.
"""
for _ in range(max_iterations):
response = client.beta.messages.create(
model=model,
max_tokens=4096,
messages=messages,
tools=TOOLS,
betas=["computer-use-2025-11-24"],
)
# Claudeの応答を会話履歴に追加
messages.append({"role": "assistant", "content": response.content})
# Claudeが要求したツールを実行し、結果を収集
tool_results = process_tool_calls(response)
if not tool_results:
return messages # No more tool use; task complete
# 次のイテレーションのためにツール結果をClaudeに返送
messages.append({"role": "user", "content": tool_results})
return messagesコンピュータ使用ツールを実装する際、さまざまなエラーが発生する可能性があります。以下はその処理方法です:
コンピュータツールに送信されるスクリーンショットは、Claudeの画像サイズ制限内に収まる必要があります(画像サイズ制限を参照)。APIはClaudeが見る前に大きすぎる画像をダウンスケールし、Claudeは見た画像に対する座標を返すため、サーバー側のダウンスケールに依存すると、それらの座標を画面にマッピングし直すために必要なスケール係数が得られません。APIの別のリクエスト制限(たとえば、一辺が8,000ピクセルを超える)を超える画像のみが、ダウンスケールされるのではなく検証エラーで拒否されます。
画面が制限より大きい場合は、送信前にスクリーンショットのサイズを変更し、display_width_px/display_height_pxをサイズ変更後の寸法に設定し、Claudeが返す座標を元の画面空間にスケールし直します:
import math
def get_scale_factor(width, height):
"""Calculate scale factor to meet API constraints."""
long_edge = max(width, height)
total_pixels = width * height
long_edge_scale = 1568 / long_edge
total_pixels_scale = math.sqrt(1_150_000 / total_pixels)
return min(1.0, long_edge_scale, total_pixels_scale)
# スクリーンショットをキャプチャする際
scale = get_scale_factor(screen_width, screen_height)
scaled_width = int(screen_width * scale)
scaled_height = int(screen_height * scale)
# Claudeに送信する前に画像をスケーリング後の寸法にリサイズする
screenshot = capture_and_resize(scaled_width, scaled_height)
# Claudeの座標を処理する際は、元のスケールに戻す
def execute_click(x, y):
screen_x = x / scale
screen_y = y / scale
perform_click(screen_x, screen_y)クリックがターゲットを外す場合、原因は通常以下のいずれかです:
| 症状 | 考えられる原因 | 試すこと |
|---|---|---|
| クリックが一貫して一方向にずれる | display_width_px/display_height_pxが実際に送信された画像の寸法と一致していない | ディスプレイの寸法が送信するスクリーンショットと正確に一致していることを確認する |
| クリックは正しい領域に着地するがターゲットを外す | ターゲットが非常に小さい、4K以上のソースのダウンスケールで詳細が失われた、またはアスペクト比が歪んでいる | enable_zoom: trueを設定する。低いDPIでキャプチャするか、関連する領域にクロップする。サイズ変更時にアスペクト比を維持する |
| Claudeが完全に間違った要素をクリックする | 曖昧な指示、または近くに視覚的に類似した要素がある | 位置を示すプロンプトを使用する(「右下の青い送信ボタン」)。操作をより小さなステップに分割する |
| 精度が一貫して低い | 解像度が低すぎる | ベースラインとして1280x720を試す |
コンピュータ使用はベータ版です。以下の制限に留意してください:
レイテンシ: 人間とAIの対話における現在のコンピュータ使用のレイテンシは、通常の人間が指示するコンピュータ操作と比較して遅すぎる場合があります。信頼できる環境で、速度が重要でないユースケース(たとえば、バックグラウンドでの情報収集、自動化されたソフトウェアテスト)に焦点を当ててください。
コンピュータビジョンの精度と信頼性: Claudeはアクションを生成する際に特定の座標を出力するときに、ミスをしたり幻覚を起こしたりする可能性があります。拡張思考は、モデルの推論を理解し、潜在的な問題を特定するのに役立ちます。
ツール選択の精度と信頼性: Claudeはアクションを生成する際にツールを選択するときにミスをしたり幻覚を起こしたり、問題を解決するために予期しないアクションを取ったりする可能性があります。さらに、ニッチなアプリケーションや複数のアプリケーションと同時に対話する場合、信頼性が低下する可能性があります。複雑なタスクをリクエストする際は、モデルに慎重にプロンプトを与えてください。
スクロールの信頼性: スクロールアクションは方向制御(上、下、左、右)と指定された量をサポートしています。スクロールが効果を発揮しないアプリケーションでは、Page Downなどのキーボードの代替手段が役立ちます。
スプレッドシートの操作: 個々のセルを選択するには、きめ細かいマウス制御アクション(left_mouse_down、left_mouse_up)と修飾キーの組み合わせを使用します。複雑なスプレッドシート操作には、依然として複数回の試行が必要な場合があります。
ソーシャルおよびコミュニケーションプラットフォームでのアカウント作成とコンテンツ生成: ClaudeはWebサイトを訪問しますが、ソーシャルメディアのWebサイトやプラットフォーム全体でアカウントを作成したり、コンテンツを生成・共有したり、その他の方法で人間になりすましたりするClaudeの能力は制限されています。この機能は将来更新される可能性があります。
脆弱性: ジェイルブレイクやプロンプトインジェクションなどの脆弱性は、ベータ版のコンピュータ使用APIを含むフロンティアAIシステム全体で存続する可能性があります。状況によっては、Claudeはコンテンツ内に見つかったコマンドに従うことがあり、それがあなたの指示と矛盾する場合もあります。たとえば、Webページ上の指示や画像に含まれる指示が、あなたの指示を上書きしたり、Claudeにミスをさせたりする可能性があります。以下を検討してください:
不適切または違法な行為: Anthropicの利用規約に基づき、法律や利用規定(Acceptable Use Policy)に違反するためにコンピュータ使用を使用してはなりません。
Claudeのコンピュータ使用のアクションとログを常に慎重に確認・検証してください。完璧な精度や機密性の高いユーザー情報を必要とするタスクには、人間の監視なしにClaudeを使用しないでください。
コンピュータ使用はクライアントサイドのツールです。セッションに関わるすべてのスクリーンショット、マウスアクション、キーボード入力、ファイルは、Anthropicではなく、あなたの環境でキャプチャされ保存されます。Anthropicは、API呼び出しの一部としてスクリーンショット画像とアクションリクエストをリアルタイムで処理します。これらのAPIリクエストの保持は、APIとデータ保持によって管理されます。
コンピュータ使用データの保存場所と方法はアプリケーションが制御するため、コンピュータ使用はZDRの対象となります。すべての機能にわたるZDRの適格性については、APIとデータ保持を参照してください。
コンピュータ使用は標準のツール使用の価格に従います。コンピュータ使用ツールを使用する場合:
システムプロンプトのオーバーヘッド: コンピュータ使用ベータは、システムプロンプトに466〜499トークンを追加します
コンピュータ使用ツールのトークン使用量:
| モデル | ツール定義あたりの入力トークン |
|---|---|
| Claude 4.x モデル | 735トークン |
追加のトークン消費:
症状から修正方法への診断テーブルで、最も一般的なツール使用のエラーを修正します。
完全なDockerベースの実装で始めましょう
Claudeを外部ツールやAPIに接続します。ツールがどこで実行されるか、Claudeがいつ呼び出すか、どのツールがタスクに適しているかを確認してください。
解像度、思考の労力、コンテキスト管理に関するベンチマークに基づく推奨事項
Was this page helpful?