Claudeはコンピューター使用ツールを通じてコンピューター環境と対話できます。このツールはスクリーンショット機能と、自律的なデスクトップ操作のためのマウス/キーボード制御を提供します。実際のウェブサイトにわたる自律的なウェブナビゲーションのベンチマークであるWebArenaにおいて、Claudeはシングルエージェントシステムの中で最先端の結果を達成しており、マルチステップのブラウザタスクをエンドツーエンドで完了する優れた能力を示しています。
コンピューター使用はベータ版であり、ベータヘッダーが必要です:
"computer-use-2025-11-24" は Claude Opus 4.6、Claude Sonnet 4.6、Claude Opus 4.5 向け"computer-use-2025-01-24" は Sonnet 4.5、Haiku 4.5、Opus 4.1、Sonnet 4、Opus 4、および Sonnet 3.7 向け(非推奨)この機能に関するフィードバックはフィードバックフォームからお寄せください。
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やテキストエディターなどの他のツールで補完できますが、コンピューター使用とは特に、デスクトップ環境を見て制御するコンピューター使用ツールの機能を指します。
コンピューター使用は以下のClaudeモデルで利用可能です:
| モデル | ツールバージョン | ベータフラグ |
|---|---|---|
| Claude Opus 4.6、Claude Sonnet 4.6、Claude Opus 4.5 | computer_20251124 | computer-use-2025-11-24 |
| その他すべてのサポートされているモデル | computer_20250124 | computer-use-2025-01-24 |
Claude Opus 4.6、Claude Sonnet 4.6、Claude Opus 4.5では、詳細な画面領域検査のためのズームアクションを含む新機能を備えたcomputer_20251124ツールバージョンが導入されています。その他すべてのモデル(Sonnet 4.5、Haiku 4.5、Sonnet 4、Opus 4、Opus 4.1、Sonnet 3.7)はcomputer_20250124ツールバージョンを使用します。
古いツールバージョンは新しいモデルとの後方互換性が保証されていません。常にモデルバージョンに対応するツールバージョンを使用してください。
コンピューター使用は、標準的なAPI機能とは異なる固有のリスクを持つベータ機能です。これらのリスクはインターネットと対話する際に高まります。
リスクを最小限に抑えるために、以下のような予防措置を検討してください:
状況によっては、Claudeはユーザーの指示と矛盾する場合でも、コンテンツ内のコマンドに従うことがあります。例えば、ウェブページ上のClaudeへの指示や画像に含まれる指示が、指示を上書きしたり、Claudeにミスを犯させたりする可能性があります。プロンプトインジェクションに関連するリスクを避けるために、Claudeを機密データやアクションから隔離する予防措置を講じてください。
モデルはこれらのプロンプトインジェクションに抵抗するようにトレーニングされており、追加の防御層が追加されています。コンピューター使用ツールを使用する場合、プロンプトインジェクションの潜在的なインスタンスにフラグを立てるために、分類器がプロンプトに対して自動的に実行されます。これらの分類器がスクリーンショット内の潜在的なプロンプトインジェクションを識別すると、次のアクションに進む前にユーザーの確認を求めるようにモデルを自動的に誘導します。この追加保護はすべてのユースケース(例えば、ループ内に人間がいないユースケース)に理想的ではないため、オプトアウトして無効にしたい場合は、サポートにお問い合わせください。
これらの予防措置は、分類器の防御層が設置されていても引き続き重要です。
自社製品でコンピューター使用を有効にする前に、エンドユーザーに関連するリスクを通知し、同意を得てください。
Webインターフェース、Dockerコンテナ、ツール実装例、エージェントループを含むコンピューター使用リファレンス実装で素早く始めましょう。
注意: 実装はClaude 4モデルとClaude Sonnet 3.7の両方に対応する新しいツールを含むように更新されています。これらの新機能にアクセスするには、リポジトリの最新バージョンを必ずプルしてください。
このフォームを使用して、モデルレスポンスの品質、API自体、またはドキュメントの品質に関するフィードバックをお寄せください。
コンピューター使用を始める方法は以下の通りです:
curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: computer-use-2025-11-24" \
-d '{
"model": "claude-opus-4-6",
"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."
}
]
}'ベータヘッダーはコンピューター使用ツールにのみ必要です。
上記の例では3つのツールすべてを一緒に使用しており、コンピューター使用ツールが含まれているためベータヘッダーが必要です。
Claudeにコンピューター使用ツールとユーザープロンプトを提供する
Claudeがコンピューター使用ツールを使用することを決定する
stop_reasonとしてtool_useが含まれます。ツール入力を抽出し、コンピューターでツールを評価し、結果を返す
tool_resultコンテンツブロックを含む新しいuserメッセージで会話を続けます。Claudeはタスクが完了するまでコンピューター使用ツールを呼び続ける
tool_use stop_reasonで応答し、ステップ3に戻る必要があります。ユーザー入力なしにステップ3と4が繰り返されることを「エージェントループ」と呼びます(つまり、Claudeがツール使用リクエストで応答し、アプリケーションがそのリクエストの評価結果をClaudeに返すこと)。
コンピューター使用には、Claudeがアプリケーションやウェブと安全に対話できるサンドボックス化されたコンピューティング環境が必要です。この環境には以下が含まれます:
仮想ディスプレイ: Claudeがスクリーンショットを通じて見て、マウス/キーボードアクションで制御するデスクトップインターフェースをレンダリングする仮想X11ディスプレイサーバー(Xvfbを使用)。
デスクトップ環境: Claudeが対話するための一貫したグラフィカルインターフェースを提供する、Linux上で動作するウィンドウマネージャー(Mutter)とパネル(Tint2)を備えた軽量UI。
アプリケーション: Claudeがタスクを完了するために使用できる、Firefox、LibreOffice、テキストエディター、ファイルマネージャーなどのプリインストールされたLinuxアプリケーション。
ツール実装: Claudeの抽象的なツールリクエスト(「マウスを移動」や「スクリーンショットを撮る」など)を仮想環境での実際の操作に変換する統合コード。
エージェントループ: ClaudeとEnvironmentの間の通信を処理し、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"
if "20250124" in tool_version
else "computer-use-2024-10-22"
)
# 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": f"text_editor_{tool_version}", "name": "str_replace_editor"},
{"type": f"bash_{tool_version}", "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コストにつながる可能性のある無限ループを防ぎます。
残りのドキュメントを読む前に、リファレンス実装を試してみてください。
最高品質の出力を得るためのヒントをいくつか紹介します:
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.というプロンプトをClaudeに与えることができます。<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.6とClaude Opus 4.5で利用可能:
computer_20250124のすべてのアクションenable_zoom: trueが必要。検査する領域の左上と右下の角を定義する座標[x1, y1, x2, y2]を持つregionパラメーターを取る。| パラメーター | 必須 | 説明 |
|---|---|---|
type | はい | ツールバージョン(computer_20251124、computer_20250124、またはcomputer_20241022) |
name | はい | 「computer」でなければならない |
display_width_px | はい | ピクセル単位のディスプレイ幅 |
display_height_px | はい | ピクセル単位のディスプレイ高さ |
display_number | いいえ | X11環境のディスプレイ番号 |
enable_zoom | いいえ | ズームアクションを有効にする(computer_20251124のみ)。Claudeが特定の画面領域にズームできるようにするにはtrueに設定する。デフォルト:false |
重要: コンピューター使用ツールはアプリケーションによって明示的に実行される必要があります。Claudeは直接実行できません。Claudeのリクエストに基づいて、スクリーンショットキャプチャ、マウス移動、キーボード入力、その他のアクションを実装する責任はあなたにあります。
Claude Sonnet 3.7では、複雑なタスクを処理する際にモデルの推論プロセスを確認できる新しい「シンキング」機能が導入されました。この機能は、Claudeが問題にどのようにアプローチしているかを理解するのに役立ち、デバッグや教育目的に特に価値があります。
シンキングを有効にするには、APIリクエストにthinkingパラメーターを追加します:
"thinking": {
"type": "enabled",
"budget_tokens": 1024
}budget_tokensパラメーターは、Claudeがシンキングに使用できるトークン数を指定します。これは全体のmax_tokensバジェットから差し引かれます。
シンキングが有効になると、Claudeはレスポンスの一部として推論プロセスを返します。これにより以下のことが可能になります:
シンキング出力がどのように見えるかの例を以下に示します:
[Thinking]
I need to save a picture of a cat to the desktop. Let me break this down into steps:
1. First, I'll take a screenshot to see what's on the desktop
2. Then I'll look for a web browser to search for cat images
3. After finding a suitable image, I'll need to save it to the desktop
Let me start by taking a screenshot to see what's available...コンピューター使用ツールは、他のツールと組み合わせることで、より強力な自動化ワークフローを作成できます。これは特に以下の場合に役立ちます:
curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: computer-use-2025-11-24" \
-d '{
"model": "claude-opus-4-6",
"max_tokens": 2000,
"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"
},
{
"name": "get_weather",
"description": "Get the current weather in a given location",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "The unit of temperature, either 'celsius' or 'fahrenheit'"
}
},
"required": ["location"]
}
}
],
"messages": [
{
"role": "user",
"content": "Find flights from San Francisco to a place with warmer weather."
}
],
"thinking": {
"type": "enabled",
"budget_tokens": 1024
}
}'リファレンス実装は、コンピューター使用を始めるためのものです。これには、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(...)
# 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})コンピューター使用ツールを実装する際、さまざまなエラーが発生する可能性があります。以下はそれらの処理方法です:
APIは画像を最長辺1568ピクセル、合計約115万ピクセルに制限します(詳細は画像リサイズを参照)。例えば、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 |
| Claude Sonnet 3.7 (deprecated) | 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?