Claudeはコンピュータ使用ツールを通じてコンピュータ環境と対話できます。このツールはスクリーンショット機能とマウス/キーボード制御を提供し、自律的なデスクトップ操作を可能にします。実際のウェブサイト全体での自律的なウェブナビゲーションのベンチマークであるWebArenaでは、Claudeは単一エージェントシステムの中で最先端の結果を達成し、マルチステップのブラウザタスクをエンドツーエンドで完了する強力な能力を実証しています。
コンピュータ使用はベータ版であり、ベータヘッダーが必要です:
"computer-use-2025-11-24""computer-use-2025-01-24"(非推奨)この機能に関するフィードバックを共有するには、フィードバックフォームからお問い合わせください。
This feature is eligible for Zero Data Retention (ZDR). When your organization has a ZDR arrangement, data sent through this feature is not stored after the API response is returned.
コンピュータ使用はClaudeがデスクトップ環境と対話できるようにするベータ版機能です。このツールは以下を提供します:
コンピュータ使用はbashやテキストエディタなどの他のツールで拡張でき、より包括的なオートメーションワークフローを実現できますが、コンピュータ使用は特にコンピュータ使用ツールのデスクトップ環境を見て制御する機能を指します。
モデルサポートについては、ツールリファレンスを参照してください。
コンピュータ使用はベータ版機能であり、標準的なAPI機能とは異なるユニークなリスクを持っています。これらのリスクはインターネットと対話する場合に高まります。
リスクを最小化するために、以下のような予防措置を検討してください:
状況によっては、Claudeはユーザーの指示と矛盾していても、コンテンツ内で見つかったコマンドに従う可能性があります。例えば、ウェブページまたは画像に含まれるClaudeの指示がClaudeの指示をオーバーライドしたり、Claudeが間違いを犯す原因となる可能性があります。Claudeを機密データとアクションから隔離するための予防措置を講じて、プロンプトインジェクションに関連するリスクを回避してください。
モデルはこれらのプロンプトインジェクションに抵抗するように訓練されており、追加の防御層が追加されています。コンピュータ使用ツールを使用する場合、プロンプトインジェクションの可能性のあるインスタンスをフラグするために、分類器がプロンプトに対して自動的に実行されます。これらの分類器がスクリーンショット内でプロンプトインジェクションの可能性を特定すると、次のアクションに進む前にユーザーの確認を求めるようにモデルを自動的に操舵します。この追加の保護はすべてのユースケースに理想的ではありません(例えば、人間がループに含まれないユースケース)。オプトアウトしてオフにしたい場合は、サポートに連絡してください。
これらの予防措置は、分類器防御層がある場合でも重要なままです。
エンドユーザーに関連するリスクを通知し、独自の製品でコンピュータ使用を有効にする前に同意を得てください。
ウェブインターフェース、Dockerコンテナ、ツール実装の例、エージェントループを含むコンピュータ使用リファレンス実装で素早く始めましょう。
注: 実装はClaude 4モデルとClaude Sonnet 3.7の両方の新しいツールを含むように更新されています。これらの新機能にアクセスするには、リポジトリの最新バージョンをプルしてください。
コンピュータ使用を始める方法は以下の通りです:
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-opus-4-7", # 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)ベータヘッダーはコンピュータ使用ツールにのみ必要です。
上記の例は3つのツールすべてが一緒に使用されていることを示しており、コンピュータ使用ツールを含むため、ベータヘッダーが必要です。
Claudeにコンピュータ使用ツールとユーザープロンプトを提供する
Claudeがコンピュータ使用ツールを使用することを決定する
stop_reasonがtool_useとなり、Claudeの意図を示します。ツール入力を抽出し、コンピュータ上でツールを評価し、結果を返す
tool_resultコンテンツブロックを含む新しいuserメッセージで会話を続けます。Claudeはタスクが完了するまでコンピュータ使用ツールを呼び出し続ける
tool_use stop_reasonで応答し、ステップ3に戻る必要があります。ステップ3と4の繰り返しをユーザー入力なしで行うことを「エージェントループ」と呼びます(つまり、Claudeがツール使用リクエストで応答し、アプリケーションがそのリクエストを評価した結果でClaudeに応答します)。
コンピュータ使用には、Claudeがアプリケーションとウェブと安全に対話できるサンドボックス化されたコンピューティング環境が必要です。この環境には以下が含まれます:
仮想ディスプレイ:仮想X11ディスプレイサーバー(Xvfbを使用)で、Claudeがスクリーンショットを通じて見るデスクトップインターフェースをレンダリングし、マウス/キーボードアクションで制御します。
デスクトップ環境:Linuxで実行される軽量UI(ウィンドウマネージャーMutter、パネルTint2)で、Claudeが対話するための一貫したグラフィカルインターフェースを提供します。
アプリケーション:Firefox、LibreOffice、テキストエディタ、ファイルマネージャなど、Claudeがタスクを完了するために使用できるプリインストールされたLinuxアプリケーション。
ツール実装:Claudeの抽象的なツールリクエスト(「マウスを移動」や「スクリーンショットを撮る」など)を仮想環境での実際の操作に変換する統合コード。
エージェントループ:Claude と環境間の通信を処理し、Claudeのアクションを環境に送信し、結果(スクリーンショット、コマンド出力)をClaudeに返すプログラム。
コンピュータ使用を使用する場合、Claudeはこの環境に直接接続しません。代わりに、アプリケーションは:
セキュリティと隔離のため、リファレンス実装はすべてをDockerコンテナ内で実行し、環境を表示および対話するための適切なポートマッピングを備えています。
リファレンス実装が利用可能で、コンピュータ使用を素早く始めるために必要なすべてが含まれています:
コンピュータ使用の中核は「エージェントループ」です。これはClaudeがツールアクションをリクエストし、アプリケーションがそれらを実行し、結果をClaudeに返すサイクルです。簡略化された例を以下に示します:
async def sampling_loop(
*,
model: str,
messages: list[dict],
api_key: str,
max_tokens: int = 4096,
tool_version: str,
thinking_budget: int | None = None,
max_iterations: int = 10, # Add iteration limit to prevent infinite loops
):
"""
A simple agent loop for Claude computer use interactions.
This function handles the back-and-forth between:
1. Sending user messages to Claude
2. Claude requesting to use tools
3. Your app executing those tools
4. Sending tool results back to Claude
"""
# Set up tools and API parameters
client = Anthropic(api_key=api_key)
beta_flag = (
"computer-use-2025-11-24"
if "20251124" in tool_version
else "computer-use-2025-01-24"
)
text_editor_type = (
"text_editor_20250728"
if "20251124" in tool_version
else f"text_editor_{tool_version}"
)
# Configure tools - you should already have these initialized elsewhere
tools = [
{
"type": f"computer_{tool_version}",
"name": "computer",
"display_width_px": 1024,
"display_height_px": 768,
},
{"type": text_editor_type, "name": "str_replace_based_edit_tool"},
{"type": "bash_20250124", "name": "bash"},
]
# Main agent loop (with iteration limit to prevent runaway API costs)
iterations = 0
while True and iterations < max_iterations:
iterations += 1
# Set up optional thinking parameter (for Claude Sonnet 3.7)
thinking = None
if thinking_budget:
thinking = {"type": "enabled", "budget_tokens": thinking_budget}
# Call the Claude API
response = client.beta.messages.create(
model=model,
max_tokens=max_tokens,
messages=messages,
tools=tools,
betas=[beta_flag],
thinking=thinking,
)
# Add Claude's response to the conversation history
response_content = response.content
messages.append({"role": "assistant", "content": response_content})
# Check if Claude used any tools
tool_results = []
for block in response_content:
if block.type == "tool_use":
# In a real app, you would execute the tool here
# For example: result = run_tool(block.name, block.input)
result = {"result": "Tool executed successfully"}
# Format the result for Claude
tool_results.append(
{"type": "tool_result", "tool_use_id": block.id, "content": result}
)
# If no tools were used, Claude is done - return the final messages
if not tool_results:
return messages
# Add tool results to messages for the next iteration with Claude
messages.append({"role": "user", "content": tool_results})ループはClaudeがツールをリクエストせずに応答するか(タスク完了)、最大反復制限に達するまで続きます。このセーフガードは、予期しないAPI費用をもたらす可能性のある無限ループを防ぎます。
このドキュメントの残りを読む前に、リファレンス実装を試してみてください。
最高品質の出力を得るためのいくつかのヒントを以下に示します:
各ステップの後、スクリーンショットを撮り、正しい結果を達成したかどうかを慎重に評価してください。明示的に思考を示してください:「ステップXを評価しました...」正しくない場合は、もう一度試してください。ステップが正しく実行されたことを確認した場合のみ、次のステップに進んでください。とプロンプトすることができます。<robot_credentials>などのxmlタグ内にユーザー名とパスワードを提供します。ログインが必要なアプリケーション内でコンピュータ使用を使用すると、プロンプトインジェクションの結果として悪い結果のリスクが増加します。モデルにログイン認証情報を提供する前に、プロンプトインジェクションを軽減するためのガイドを確認してください。明確な問題のセットに繰り返し遭遇する場合、または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_promptフィールドは依然として尊重され、結合されたシステムプロンプトの構築に使用されます。
コンピュータ使用ツールは以下のアクションをサポートしています:
基本的なアクション(すべてのバージョン)
[x, y]でクリック拡張アクション(computer_20250124)
Claude 4モデルとClaude Sonnet 3.7で利用可能:
拡張アクション(computer_20251124)
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 |
重要: コンピュータ使用ツールはアプリケーションで明示的に実行する必要があります。Claudeは直接実行できません。スクリーンショットキャプチャ、マウス移動、キーボード入力、およびClaudeのリクエストに基づくその他のアクションの実装を担当します。
コンピュータ使用と拡張思考の組み合わせについては、拡張思考を参照してください。
コンピュータ使用と一緒に他のツールを追加するには、同じtools配列に含めます。上記のクイックスタートは、bashツールとテキストエディタツールでこのパターンを示しています。同じ方法で独自のカスタムツール定義を追加できます。
リファレンス実装は、コンピュータ使用を開始するのに役立つように設計されています。Claudeがコンピュータを使用するために必要なすべてのコンポーネントが含まれています。ただし、ニーズに合わせてコンピュータ使用用の独自の環境を構築することができます。以下が必要です:
tool_use結果を実行するエージェントループコンピュータ使用ツールはスキーマレスツールとして実装されます。このツールを使用する場合、他のツールのような入力スキーマを提供する必要はありません。スキーマはClaudeのモデルに組み込まれており、変更することはできません。
コンピューティング環境をセットアップする
Claudeが相互作用する仮想ディスプレイを作成するか、既存のディスプレイに接続します。これは通常、Xvfb(X Virtual Framebuffer)または同様のテクノロジーのセットアップを含みます。
アクションハンドラーを実装する
Claudeが要求する可能性のある各アクションタイプを処理する関数を作成します:
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"])
# ... handle other actionsClaudeのツール呼び出しを処理する
Claudeの応答からツール呼び出しを抽出して実行します:
for content in response.content:
if content.type == "tool_use":
action = content.input["action"]
result = handle_computer_action(action, content.input)
# Return result to Claude
tool_result = {
"type": "tool_result",
"tool_use_id": content.id,
"content": result,
}エージェントループを実装する
Claudeがタスクを完了するまで続くループを作成します:
while True:
response = client.beta.messages.create(
model="claude-opus-4-7",
max_tokens=4096,
messages=messages,
tools=tools,
betas=["computer-use-2025-11-24"],
)
# Check if Claude used any tools
tool_results = process_tool_calls(response)
if not tool_results:
# No more tool use, task complete
break
# Continue conversation with tool results
messages.append({"role": "user", "content": tool_results})コンピュータ使用ツールを実装する場合、さまざまなエラーが発生する可能性があります。以下はそれらの処理方法です:
Claude Opus 4.7は長辺で最大2576ピクセルをサポートし、その座標は画像ピクセルと1
(スケールファクター変換は不要です)。以下の1568ピクセルのガイダンスは、以前のモデルに適用されます。APIは画像を最長辺で最大1568ピクセル、合計約1.15メガピクセルに制限します(詳細は画像のサイズ変更を参照してください)。たとえば、1512x982スクリーンは約1330x864にダウンサンプリングされます。Claudeはこのより小さい画像を分析し、そのスペースで座標を返しますが、ツールは元のスクリーンスペースでクリックを実行します。
これにより、座標変換を処理しない限り、Claudeのクリック座標がターゲットを逃す可能性があります。
これを修正するには、スクリーンショットを自分でサイズ変更し、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)
# When capturing screenshot
scale = get_scale_factor(screen_width, screen_height)
scaled_width = int(screen_width * scale)
scaled_height = int(screen_height * scale)
# Resize image to scaled dimensions before sending to Claude
screenshot = capture_and_resize(scaled_width, scaled_height)
# When handling Claude's coordinates, scale them back up
def execute_click(x, y):
screen_x = x / scale
screen_y = y / scale
perform_click(screen_x, screen_y)コンピュータ使用機能はベータ版です。Claudeの機能は最先端ですが、開発者はその制限を認識する必要があります:
left_mouse_down、left_mouse_upなどのより正確なマウス制御アクションと新しい修飾キーサポートの追加により改善されました。セル選択は、これらの細粒度制御を使用し、修飾キーとクリックを組み合わせることでより信頼性が高くなります。常にClaudeのコンピュータ使用アクションとログを慎重に確認および検証してください。完全な精度が必要なタスクまたは人間の監視なしに機密ユーザー情報を必要とするタスクにClaudeを使用しないでください。
コンピュータ使用はクライアント側のツールです。スクリーンショット、マウスアクション、キーボード入力、およびセッションに関連するファイルはすべて、Anthropicではなく、お客様の環境でキャプチャおよび保存されます。Anthropicはスクリーンショット画像とアクションリクエストをAPIコールの一部としてリアルタイムで処理しますが、応答が返された後は保持しません。
アプリケーションがコンピュータ使用データの保存場所と方法を制御するため、コンピュータ使用はZDR対象です。すべての機能にわたるZDR適格性については、API とデータ保持を参照してください。
Computer use follows the standard tool use pricing. When using the computer use tool:
System prompt overhead: The computer use beta adds 466-499 tokens to the system prompt
Computer use tool token usage:
| Model | Input tokens per tool definition |
|---|---|
| Claude 4.x models | 735 tokens |
Additional token consumption:
If you're also using bash or text editor tools alongside computer use, those tools have their own token costs as documented in their respective pages.
Was this page helpful?