Claudeはコンピュータ使用ツールを通じてコンピュータ環境と対話でき、スクリーンショット機能とマウス/キーボード制御による自律的なデスクトップ操作が可能です。
コンピュータ使用はベータ版の機能で、Claudeがデスクトップ環境と対話することを可能にします。このツールは以下を提供します:
コンピュータ使用はbashやテキストエディタなどの他のツールで拡張でき、より包括的な自動化ワークフローが可能ですが、コンピュータ使用は特にコンピュータ使用ツールのデスクトップ環境を見て制御する機能を指します。
コンピュータ使用は以下のClaudeモデルで利用可能です:
| モデル | ツールバージョン | ベータフラグ |
|---|---|---|
| Claude Opus 4.5 | computer_20251124 | computer-use-2025-11-24 |
| Claude 4モデル | computer_20250124 | computer-use-2025-01-24 |
| Claude Sonnet 3.7 (非推奨) | computer_20250124 | computer-use-2025-01-24 |
Claude Opus 4.5は、詳細なスクリーン領域検査のためのズームアクションを含む新機能を備えたcomputer_20251124ツールバージョンを導入しています。Claude 4モデルは新しいアーキテクチャ用に最適化された更新されたツールバージョンを使用しています。Claude Sonnet 3.7 (非推奨)は、モデルの推論プロセスについてより詳しく知るための思考機能を含む追加機能を導入しています。
古いツールバージョンは、新しいモデルとの後方互換性が保証されていません。常にモデルバージョンに対応するツールバージョンを使用してください。
コンピュータ使用はベータ版の機能であり、標準的なAPI機能とは異なるユニークなリスクを持っています。これらのリスクはインターネットと対話する場合に高まります。リスクを最小化するために、以下のような予防措置を講じることを検討してください:
場合によっては、Claudeはユーザーの指示と矛盾していても、コンテンツ内で見つかったコマンドに従う可能性があります。例えば、ウェブページまたは画像に含まれるClaudeの指示は、指示をオーバーライドしたり、Claudeが間違いを犯す原因となる可能性があります。プロンプトインジェクションに関連するリスクを避けるために、Claudeを機密データとアクションから隔離するための予防措置を講じることをお勧めします。
私たちはモデルをこれらのプロンプトインジェクションに抵抗するように訓練し、追加の防御層を追加しました。コンピュータ使用ツールを使用する場合、プロンプトインジェクションの潜在的なインスタンスをフラグするために、プロンプトに対して自動的に分類器を実行します。これらの分類器がスクリーンショット内の潜在的なプロンプトインジェクションを識別する場合、次のアクションに進む前にユーザーの確認を求めるようにモデルを自動的に導きます。この追加の保護がすべてのユースケースに理想的ではないことを認識しています(例えば、人間がループにいないユースケース)ので、オプトアウトしてオフにしたい場合は、お問い合わせください。
プロンプトインジェクションに関連するリスクを避けるために、Claudeを機密データとアクションから隔離するための予防措置を講じることをお勧めします。
最後に、エンドユーザーに関連するリスクを通知し、独自の製品でコンピュータ使用を有効にする前に同意を得てください。
ウェブインターフェース、Dockerコンテナ、ツール実装例、エージェントループを含むコンピュータ使用リファレンス実装で素早く始めましょう。
注: 実装はClaude 4モデルとClaude Sonnet 3.7の両方の新しいツールを含むように更新されています。これらの新機能にアクセスするには、必ずリポジトリの最新バージョンをプルしてください。
このフォームを使用して、モデルレスポンスの品質、API自体、またはドキュメントの品質についてフィードバックを提供してください。皆様からのご意見をお待ちしています!
コンピュータ使用を始める方法は以下の通りです:
ベータヘッダーはコンピュータ使用ツールにのみ必要です。
上記の例は3つのツールすべてが一緒に使用されていることを示しており、コンピュータ使用ツールが含まれているため、ベータヘッダーが必要です。
1. Claudeにコンピュータ使用ツールとユーザープロンプトを提供する
2. Claudeがコンピュータ使用ツールを使用することを決定する
tool_useのstop_reasonを持ち、Claudeの意図を示します。3. ツール入力を抽出し、コンピュータ上でツールを評価し、結果を返す
tool_resultコンテンツブロックを含む新しいuserメッセージで会話を続けます。4. Claudeはタスクが完了するまでコンピュータ使用ツールを呼び出し続ける
ユーザー入力なしでステップ3と4の繰り返しを「エージェントループ」と呼びます。つまり、Claudeがツール使用リクエストで応答し、アプリケーションがそのリクエストの評価結果でClaudeに応答します。
Claudeはコンピュータ使用ツールを通じてコンピュータ環境と相互作用できます。このツールはスクリーンショット機能とマウス/キーボード制御を提供し、自律的なデスクトップ相互作用を実現します。
コンピュータ使用はベータ機能で、Claudeがデスクトップ環境と相互作用することを可能にします。このツールは以下を提供します:
コンピュータ使用はbashやテキストエディタなどの他のツールで拡張でき、より包括的なオートメーションワークフローが可能ですが、コンピュータ使用は特にコンピュータ使用ツールのデスクトップ環境を見て制御する機能を指します。
コンピュータ使用は以下のClaudeモデルで利用可能です:
| モデル | ツールバージョン | ベータフラグ |
|---|---|---|
| Claude Opus 4.5 | computer_20251124 | computer-use-2025-11-24 |
| Claude 4モデル | computer_20250124 | computer-use-2025-01-24 |
| Claude Sonnet 3.7 (非推奨) | computer_20250124 | computer-use-2025-01-24 |
Claude Opus 4.5は、詳細なスクリーン領域検査のためのズームアクションを含む新しい機能を備えたcomputer_20251124ツールバージョンを導入しています。Claude 4モデルは新しいアーキテクチャ用に最適化された更新されたツールバージョンを使用しています。Claude Sonnet 3.7 (非推奨)は、モデルの推論プロセスについてより多くの洞察を得るためのシンキング機能を含む追加機能を導入しています。
古いツールバージョンは、新しいモデルとの下位互換性が保証されていません。常にモデルバージョンに対応するツールバージョンを使用してください。
コンピュータ使用はベータ機能であり、標準的なAPI機能とは異なるユニークなリスクを持っています。これらのリスクはインターネットと相互作用する場合に高まります。リスクを最小化するために、以下のような予防措置を講じることを検討してください:
状況によっては、Claudeはユーザーの指示と矛盾していても、コンテンツ内で見つかったコマンドに従う場合があります。例えば、ウェブページまたは画像に含まれるClaude指示は、Claudeの指示をオーバーライドしたり、Claudeにエラーを犯させたりする可能性があります。プロンプトインジェクションに関連するリスクを回避するため、Claudeを機密データとアクションから隔離するための予防措置を講じることをお勧めします。
私たちはこれらのプロンプトインジェクションに抵抗するようにモデルを訓練し、追加の防御層を追加しました。コンピュータ使用ツールを使用する場合、プロンプトインジェクションの可能性のあるインスタンスをフラグするため、プロンプトに対して自動的に分類器を実行します。これらの分類器がスクリーンショット内でプロンプトインジェクションの可能性を特定した場合、次のアクションに進む前にユーザー確認を求めるようにモデルを自動的に導きます。この追加の保護がすべてのユースケースに理想的ではないことを認識しています(例えば、人間がループに含まれないユースケース)。オプトアウトしてオフにしたい場合は、お問い合わせください。
プロンプトインジェクションに関連するリスクを回避するため、Claudeを機密データとアクションから隔離するための予防措置を講じることをお勧めします。
最後に、エンドユーザーに関連するリスクを通知し、独自の製品でコンピュータ使用を有効にする前にその同意を得てください。
コンピュータ使用を素早く開始するためのリファレンス実装を使用してください。これにはウェブインターフェース、Dockerコンテナ、ツール実装例、およびエージェントループが含まれています。
注: 実装はClaude 4モデルとClaude Sonnet 3.7の両方の新しいツールを含めるように更新されています。これらの新しい機能にアクセスするには、必ずリポジトリの最新バージョンをプルしてください。
このフォームを使用して、モデル応答の品質、API自体、またはドキュメントの品質についてフィードバックを提供してください。皆様からのご意見をお待ちしています!
コンピュータ使用を開始する方法は以下の通りです:
ベータヘッダーはコンピュータ使用ツールにのみ必要です。
上記の例は3つのツールすべてが一緒に使用されていることを示しており、コンピュータ使用ツールが含まれているため、ベータヘッダーが必要です。
1. Claudeにコンピュータ使用ツールとユーザープロンプトを提供する
2. Claudeがコンピュータ使用ツールを使用することを決定する
stop_reasonがtool_useとなり、Claudeの意図を示します。3. ツール入力を抽出し、コンピュータでツールを評価し、結果を返す
tool_resultコンテンツブロックを含む新しいuserメッセージで会話を続けます。4. Claudeはタスクが完了するまでコンピュータ使用ツールを呼び出し続ける
ユーザー入力なしでステップ3と4の繰り返しを「エージェントループ」と呼びます。つまり、Claudeがツール使用リクエストで応答し、アプリケーションがそのリクエストの評価結果でClaudeに応答します。
コンピュータ使用には、Claudeがアプリケーションとウェブと安全に相互作用できるサンドボックス化されたコンピューティング環境が必要です。この環境には以下が含まれます:
仮想ディスプレイ:仮想X11ディスプレイサーバー(Xvfbを使用)で、Claudeがスクリーンショットを通じて見て、マウス/キーボードアクションで制御するデスクトップインターフェースをレンダリングします。
デスクトップ環境:Linuxで実行されるウィンドウマネージャー(Mutter)とパネル(Tint2)を備えた軽量UI。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, # 無限ループを防ぐため反復制限を追加
):
"""
Claudeコンピュータ使用相互作用のための簡単なエージェントループ。
この関数は以下の間のやり取りを処理します:
1. ユーザーメッセージをClaudeに送信
2. Claudeがツール使用をリクエスト
3. アプリケーションがそれらのツールを実行
4. ツール結果をClaudeに送信
"""
# ツールとAPIパラメータを設定
client = Anthropic(api_key=api_key)
beta_flag = "computer-use-2025-01-24" if "20250124" in tool_version else "computer-use-2024-10-22"
# ツールを設定 - これらは他の場所で既に初期化されているはずです
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"}
]
# メインエージェントループ(実行不可能なAPIコストを防ぐため反復制限付き)
iterations = 0
while True and iterations < max_iterations:
iterations += 1
# オプションのシンキングパラメータを設定(Claude Sonnet 3.7用)
thinking = None
if thinking_budget:
thinking = {"type": "enabled", "budget_tokens": thinking_budget}
# Claude APIを呼び出す
response = client.beta.messages.create(
model=model,
max_tokens=max_tokens,
messages=messages,
tools=tools,
betas=[beta_flag],
thinking=thinking
)
# Claudeの応答を会話履歴に追加
response_content = response.content
messages.append({"role": "assistant", "content": response_content})
# Claudeがツールを使用したかどうかを確認
tool_results = []
for block in response_content:
if block.type == "tool_use":
# 実際のアプリケーションでは、ここでツールを実行します
# 例えば:result = run_tool(block.name, block.input)
result = {"result": "Tool executed successfully"}
# Claudeの結果をフォーマット
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": result
})
# ツールが使用されなかった場合、Claudeは完了 - 最終メッセージを返す
if not tool_results:
return messages
# 次のClaudeイテレーション用にツール結果をメッセージに追加
messages.append({"role": "user", "content": tool_results})ループはClaudeがツールをリクエストせずに応答するか(タスク完了)、最大反復制限に達するまで続きます。このセーフガードは、予期しないAPIコストをもたらす可能性のある無限ループを防ぎます。
コンピュータ使用ツールを使用する場合、モデルバージョンに対応する適切なベータフラグを含める必要があります:
ドキュメントの残りを読む前に、リファレンス実装を試してみることをお勧めします。
最高品質の出力を得るためのいくつかのヒントを以下に示します:
各ステップの後、スクリーンショットを撮り、正しい結果を達成したかどうかを慎重に評価してください。明示的に思考を示してください:「ステップXを評価しました...」。正しくない場合は、もう一度試してください。ステップが正しく実行されたことを確認した場合にのみ、次のステップに進んでください。とプロンプトすることができます。<robot_credentials>などのxmlタグ内のプロンプトで提供します。ログインが必要なアプリケーション内でコンピュータ使用を使用すると、プロンプトインジェクションの結果として悪い結果のリスクが増加します。モデルにログイン認証情報を提供する前に、プロンプトインジェクション軽減ガイドを確認してください。明確な問題のセットに繰り返し遭遇する場合、またはClaudeが完了する必要があるタスクを事前に知っている場合は、システムプロンプトを使用して、タスクを正常に完了する方法に関する明示的なヒントまたは指示をClaudeに提供します。
Anthropic定義のツールの1つがClaude APIを通じてリクエストされた場合、コンピュータ使用固有のシステムプロンプトが生成されます。これはツール使用システムプロンプトに似ていますが、以下で始まります:
あなたは、ユーザーの質問に答えるために使用できる一連の関数にアクセスできます。これにはサンドボックス化されたコンピューティング環境へのアクセスが含まれます。現在、以下の関数を呼び出す以外に、ファイルを検査したり、外部リソースと相互作用したりする能力はありません。
通常のツール使用と同様に、ユーザー提供のsystem_promptフィールドは依然として尊重され、結合されたシステムプロンプトの構築で使用されます。
コンピュータ使用をすぐに始めるために必要なすべてを含むリファレンス実装を構築しました:
コンピュータ使用の中核は「エージェントループ」です。これは 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-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 コストをもたらす可能性のある無限ループを防ぎます。
コンピュータ使用ツールを使用する場合、モデルバージョンに適切なベータフラグを含める必要があります:
このドキュメントの残りを読む前に、リファレンス実装を試してみることをお勧めします。
最高品質の出力を得る方法に関するいくつかのヒントを以下に示します:
各ステップの後、スクリーンショットを撮り、正しい結果を達成したかどうかを慎重に評価します。明示的に思考を示します:「ステップ 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.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 |
最高のパフォーマンスのため、ディスプレイ解像度を 1280x800(WXGA)以下に保ちます。より高い解像度は画像のリサイズにより精度の問題を引き起こす可能性があります。
重要:コンピュータ使用ツールはアプリケーションによって明示的に実行される必要があります。Claude は直接実行できません。Claude のリクエストに基づいて、スクリーンショット キャプチャ、マウス移動、キーボード入力、およびその他のアクションを実装する責任があります。
| パラメータ | 必須 | 説明 |
|---|---|---|
type | はい | ツールバージョン(computer_20251124、computer_20250124、または computer_20241022) |
name | はい | 「computer」である必要があります |
display_width_px | はい | ディスプレイ幅(ピクセル) |
display_height_px | はい | ディスプレイ高さ(ピクセル) |
display_number | いいえ | X11 環境のディスプレイ番号 |
enable_zoom |
最高のパフォーマンスのため、ディスプレイ解像度を 1280x800(WXGA)以下に保ちます。より高い解像度は画像のリサイズにより精度の問題を引き起こす可能性があります。
重要:コンピュータ使用ツールはアプリケーションによって明示的に実行される必要があります。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...| パラメータ | 必須 | 説明 |
|---|---|---|
type | はい | ツールバージョン(computer_20251124、computer_20250124、または computer_20241022) |
name | はい | 「computer」である必要があります |
display_width_px | はい | ディスプレイ幅(ピクセル) |
display_height_px | はい | ディスプレイ高さ(ピクセル) |
display_number | いいえ | X11 環境のディスプレイ番号 |
enable_zoom |
最高のパフォーマンスのため、ディスプレイ解像度を 1280x800(WXGA)以下に保ちます。より高い解像度は画像のリサイズにより精度の問題を引き起こす可能性があります。
重要:コンピュータ使用ツールはアプリケーションによって明示的に実行される必要があります。Claude は直接実行できません。Claude のリクエストに基づいて、スクリーンショット キャプチャ、マウス移動、キーボード入力、およびその他のアクションを実装する責任があります。
コンピュータ使用ツールは、他のツールと組み合わせて、より強力な自動化ワークフローを作成できます。これは特に以下が必要な場合に役立ちます:
| パラメータ | 必須 | 説明 |
|---|---|---|
type | はい | ツールバージョン (computer_20251124、computer_20250124、または computer_20241022) |
name | はい | 「computer」である必要があります |
display_width_px | はい | ディスプレイ幅(ピクセル) |
display_height_px | はい | ディスプレイ高さ(ピクセル) |
display_number | いいえ | X11環境のディスプレイ番号 |
enable_zoom |
最適なパフォーマンスのため、ディスプレイ解像度を 1280x800 (WXGA) 以下に保ってください。より高い解像度は、画像のリサイズにより精度の問題を引き起こす可能性があります。
重要: コンピュータ使用ツールはアプリケーションによって明示的に実行される必要があります。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...コンピュータ使用ツールは他のツールと組み合わせて、より強力な自動化ワークフローを作成できます。これは以下が必要な場合に特に便利です:
リファレンス実装は、コンピュータ使用を開始するのに役立つことを目的としています。Claude がコンピュータを使用するために必要なすべてのコンポーネントが含まれています。ただし、ニーズに合わせてコンピュータ使用用の独自の環境を構築できます。以下が必要です:
tool_use 結果を実行するエージェントループコンピュータ使用ツールはスキーマレスツールとして実装されます。このツールを使用する場合、他のツールのような入力スキーマを提供する必要はありません。スキーマは Claude のモデルに組み込まれており、変更することはできません。
コンピュータ使用ツールを実装する場合、さまざまなエラーが発生する可能性があります。以下はそれらを処理する方法です:
コンピュータ使用機能はベータ版です。Claude の機能は最先端ですが、開発者はその制限を認識する必要があります:
left_mouse_down、left_mouse_up などのより正確なマウス制御アクションと新しい修飾キーサポートの追加により、スプレッドシート操作のマウスクリックが改善されました。これらの細粒度制御を使用し、修飾キーとクリックを組み合わせることで、セル選択がより信頼性が高くなります。常に Claude のコンピュータ使用アクションとログを慎重に確認および検証してください。完全な精度が必要なタスクや、人間の監視なしに機密ユーザー情報を必要とするタスクに Claude を使用しないでください。
コンピュータ使用機能はベータ版です。Claude の機能は最先端ですが、開発者はその制限を認識する必要があります:
left_mouse_down、left_mouse_up などのより正確なマウス制御アクションと新しい修飾キーサポートの追加により、スプレッドシート操作のマウスクリックが改善されました。これらの細粒度制御を使用し、修飾キーとクリックを組み合わせることで、セル選択がより信頼性が高くなります。常に Claude のコンピュータ使用アクションとログを慎重に確認および検証してください。完全な精度が必要なタスクや、人間の監視なしに機密ユーザー情報を必要とするタスクに Claude を使用しないでください。
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.
コンピュータ使用機能はベータ版です。Claude の機能は最先端ですが、開発者はその制限を認識する必要があります:
left_mouse_down、left_mouse_up などのより正確なマウス制御アクションと新しい修飾キーサポートの追加により、スプレッドシート操作のマウスクリックが改善されました。これらの細粒度制御を使用し、修飾キーとクリックを組み合わせることで、セル選択がより信頼性が高くなります。常に Claude のコンピュータ使用アクションとログを慎重に確認および検証してください。完全な精度が必要なタスクや、人間の監視なしに機密ユーザー情報を必要とするタスクに Claude を使用しないでください。
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.
import anthropic
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-sonnet-4-5", # or another compatible model
max_tokens=1024,
tools=[
{
"type": "computer_20250124",
"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-01-24"]
)
print(response)tool_use stop_reasonで応答し、ステップ3に戻る必要があります。import anthropic
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-sonnet-4-5", # または別の互換モデル
max_tokens=1024,
tools=[
{
"type": "computer_20250124",
"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-01-24"]
)
print(response)tool_use stop_reasonで応答し、ステップ3に戻る必要があります。| いいえ |
ズームアクションを有効にします(computer_20251124 のみ)。Claude が特定のスクリーン領域にズームできるようにするには true に設定します。デフォルト:false |
| いいえ |
ズームアクションを有効にします(computer_20251124 のみ)。Claude が特定のスクリーン領域にズームできるようにするには true に設定します。デフォルト:false |
| いいえ |
ズームアクションを有効にします(computer_20251124 のみ)。Claude が特定のスクリーン領域にズームできるようにするには true に設定します。デフォルト:false |
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-01-24" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 2000,
"tools": [
{
"type": "computer_20250124",
"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
}
}'| いいえ |
ズームアクションを有効にする (computer_20251124 のみ)。true に設定すると、Claude が特定の画面領域にズームインできるようになります。デフォルト: false |
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-01-24" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 2000,
"tools": [
{
"type": "computer_20250124",
"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 が対話する仮想ディスプレイを作成するか、既存のディスプレイに接続します。これは通常、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})ツール使用とカスタムツール作成について詳しく学ぶ