Claude 4 OpusとSonnet、およびClaude Sonnet 3.7とClaude Sonnet 3.5(新)は、コンピュータデスクトップ環境を操作できるツールと連携する能力を持っています。Claude 4モデルは新しいアーキテクチャに最適化された更新版ツールを使用します。Claude Sonnet 3.7は追加ツールを導入し、思考プロセスを有効にすることでモデルの推論プロセスについてより多くの洞察を得ることができます。

コンピュータ使用はベータ機能です。コンピュータ使用は、標準APIの機能やチャットインターフェースとは異なる独自のリスクをもたらすことに注意してください。これらのリスクは、コンピュータ使用でインターネットとやり取りする場合に高まります。リスクを最小限に抑えるために、以下のような予防措置を検討してください:

  1. 直接的なシステム攻撃や事故を防ぐために、最小限の権限を持つ専用の仮想マシンまたはコンテナを使用してください。
  2. 情報盗難を防ぐために、アカウントのログイン情報などの機密データへのアクセスをモデルに与えないでください。
  3. 悪意のあるコンテンツへの露出を減らすために、インターネットアクセスを許可リストのドメインに制限してください。
  4. 重要な現実世界の結果をもたらす可能性のある決定や、クッキーの受け入れ、金融取引の実行、サービス利用規約への同意など、積極的な同意を必要とするタスクについては、人間に確認を求めてください。

状況によっては、Claudeはユーザーの指示と矛盾する場合でも、コンテンツ内の命令に従うことがあります。例えば、ウェブページやイメージに含まれるClaude向けの指示が、指示を上書きしたり、Claudeにミスを引き起こしたりする可能性があります。プロンプトインジェクションに関連するリスクを避けるために、Claudeを機密データやアクションから隔離するための予防措置を講じることをお勧めします。

私たちはモデルをこれらのプロンプトインジェクションに抵抗するように訓練し、さらに防御層を追加しました。コンピュータ使用ツールを使用する場合、プロンプトに対して自動的に分類器を実行し、プロンプトインジェクションの可能性のあるインスタンスにフラグを立てます。これらの分類器がスクリーンショット内でプロンプトインジェクションの可能性を特定すると、次のアクションに進む前にユーザーの確認を求めるようモデルを自動的に誘導します。この追加保護がすべてのユースケース(例えば、ループ内に人間がいないユースケース)に理想的ではないことを認識しているため、オプトアウトしてオフにしたい場合は、お問い合わせください

それでも、プロンプトインジェクションに関連するリスクを避けるために、Claudeを機密データやアクションから隔離するための予防措置を講じることをお勧めします。

最後に、関連するリスクをエンドユーザーに通知し、自社製品でコンピュータ使用を有効にする前に同意を得てください。

コンピュータ使用リファレンス実装

ウェブインターフェース、Dockerコンテナ、サンプルツール実装、エージェントループを含むコンピュータ使用リファレンス実装で迅速に開始できます。

注意: この実装はClaude 4とClaude Sonnet 3.7の両方の新しいツールを含むように更新されています。これらの新機能にアクセスするには、リポジトリの最新バージョンを取得してください。

モデルの応答の品質、API自体、またはドキュメントの品質についてフィードバックを提供するには、このフォームをご利用ください - あなたからのご意見をお待ちしています!

以下は、Messages APIを使用してClaudeにコンピュータ使用ツールを提供する方法の例です:

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-opus-4-20250514",
    "max_tokens": 1024,
    "tools": [
      {
        "type": "computer_20250124",
        "name": "computer",
        "display_width_px": 1024,
        "display_height_px": 768,
        "display_number": 1
      },
      {
        "type": "text_editor_20250429",
        "name": "str_replace_based_edit_tool"
      },
      {
        "type": "bash_20250124",
        "name": "bash"
      }
    ],
    "messages": [
      {
        "role": "user",
        "content": "Save a picture of a cat to my desktop."
      }
    ],
    "thinking": {
      "type": "enabled",
      "budget_tokens": 1024
    }
  }'

コンピュータ使用の仕組み

1. Claudeにコンピュータ使用ツールとユーザープロンプトを提供する

  • Anthropicが定義したコンピュータ使用ツールをAPIリクエストに追加します。
  • これらのツールを必要とする可能性のあるユーザープロンプト(例:「デスクトップに猫の画像を保存して」)を含めます。

2. Claudeがツールを使用することを決定する

  • Claudeは保存されたコンピュータ使用ツールの定義を読み込み、ユーザーのクエリに役立つツールがあるかどうかを評価します。
  • もしあれば、Claudeは適切にフォーマットされたツール使用リクエストを構築します。
  • APIレスポンスには、Claudeの意図を示すstop_reasontool_useとなります。

3. ツール入力を抽出し、コンピュータ上でツールを評価し、結果を返す

  • あなた側では、Claudeのリクエストからツール名と入力を抽出します。
  • コンテナまたは仮想マシン上でツールを使用します。
  • tool_resultコンテンツブロックを含む新しいuserメッセージで会話を続けます。

4. Claudeはタスクが完了するまでコンピュータ使用ツールの呼び出しを続ける

  • Claudeはツール結果を分析して、さらにツールの使用が必要かタスクが完了したかを判断します。
  • Claudeが別のツールが必要だと判断した場合、別のtool_use stop_reasonで応答し、ステップ3に戻るべきです。
  • それ以外の場合は、ユーザーへのテキスト応答を作成します。

ユーザー入力なしでステップ3と4を繰り返すことを「エージェントループ」と呼びます - つまり、Claudeがツール使用リクエストで応答し、アプリケーションがそのリクエストを評価した結果をClaudeに返すことです。

コンピューティング環境

コンピュータ使用には、Claudeがアプリケーションやウェブと安全にやり取りできるサンドボックス化されたコンピューティング環境が必要です。この環境には以下が含まれます:

  1. 仮想ディスプレイ: Claudeがスクリーンショットを通じて見て、マウス/キーボードアクションで制御するデスクトップインターフェースをレンダリングする仮想X11ディスプレイサーバー(Xvfbを使用)。

  2. デスクトップ環境: ウィンドウマネージャー(Mutter)とパネル(Tint2)を備えたLinux上で動作する軽量UIで、Claudeが操作できる一貫したグラフィカルインターフェースを提供します。

  3. アプリケーション: Firefox、LibreOffice、テキストエディタ、ファイルマネージャーなど、Claudeがタスクを完了するために使用できる事前インストールされたLinuxアプリケーション。

  4. ツール実装: Claudeの抽象的なツールリクエスト(「マウスを移動する」や「スクリーンショットを撮る」など)を仮想環境内の実際の操作に変換する統合コード。

  5. エージェントループ: Claudeと環境間の通信を処理し、Claudeのアクションを環境に送信し、結果(スクリーンショット、コマンド出力など)をClaudeに返すプログラム。

コンピュータ使用を使用する場合、Claudeはこの環境に直接接続しません。代わりに、あなたのアプリケーションが:

  1. Claudeのツール使用リクエストを受け取る
  2. それらをコンピューティング環境内のアクションに変換する
  3. 結果(スクリーンショット、コマンド出力など)をキャプチャする
  4. これらの結果を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コストを招く可能性のある無限ループを防ぎます。

ツールの各バージョンには、APIリクエストで対応するベータフラグを使用する必要があります:

このドキュメントの残りを読む前に、リファレンス実装を試してみることをお勧めします。

プロンプトでモデルのパフォーマンスを最適化する

最高品質の出力を得るためのヒントをいくつか紹介します:

  1. シンプルで明確に定義されたタスクを指定し、各ステップに明示的な指示を提供します。
  2. Claudeは時々、その結果を明示的に確認せずにアクションの結果を想定することがあります。これを防ぐために、「各ステップの後、スクリーンショットを撮り、正しい結果を達成したかどうかを慎重に評価してください。あなたの思考を明示的に示してください:『ステップXを評価しました…』正しくない場合は、再試行してください。ステップが正しく実行されたことを確認した場合にのみ、次のステップに進んでください。」とClaudeにプロンプトできます。
  3. 一部のUI要素(ドロップダウンやスクロールバーなど)は、マウス移動を使用してClaudeが操作するのが難しい場合があります。これを経験した場合は、キーボードショートカットを使用するようモデルにプロンプトしてみてください。
  4. 繰り返し可能なタスクやUIインタラクションの場合、成功した結果のサンプルスクリーンショットとツール呼び出しをプロンプトに含めてください。
  5. モデルにログインが必要な場合は、<robot_credentials>などのXMLタグ内でユーザー名とパスワードをプロンプトで提供してください。ログインが必要なアプリケーション内でコンピュータ使用を使用すると、プロンプトインジェクションの結果として悪い結果が生じるリスクが高まります。モデルにログイン認証情報を提供する前に、プロンプトインジェクションの軽減に関するガイドを確認してください。

同じ問題が繰り返し発生する場合や、Claudeが完了する必要のあるタスクを事前に知っている場合は、システムプロンプトを使用して、タスクを正常に実行する方法に関する明示的なヒントや指示をClaudeに提供してください。

システムプロンプト

Anthropic APIを通じてAnthropicが定義したツールの1つがリクエストされると、コンピュータ使用に特化したシステムプロンプトが生成されます。これはツール使用システムプロンプトに似ていますが、次のように始まります:

ユーザーの質問に答えるために使用できる一連の関数にアクセスできます。これには、サンドボックス化されたコンピューティング環境へのアクセスが含まれます。以下の関数を呼び出す以外に、ファイルを検査したり外部リソースと対話したりする能力は現在ありません。

通常のツール使用と同様に、ユーザーが提供するsystem_promptフィールドは引き続き尊重され、結合されたシステムプロンプトの構築に使用されます。

Anthropicが定義したツールを理解する

ベータ版として、これらのツール定義は変更される可能性があります。

Claudeが効果的にコンピュータを使用できるようにするツールのセットを提供しています。Anthropicが定義したツールを指定する場合、descriptiontool_schemaフィールドは不要であり、許可されていません。

Anthropicが定義したツールはユーザーが実行する

Anthropicが定義したツールはAnthropicによって定義されていますが、ツールの結果を明示的に評価し、tool_resultsをClaudeに返す必要があります。他のツールと同様に、モデルは自動的にツールを実行しません。

Anthropicが定義したツールのセットを提供しており、各ツールにはClaude 4、Claude Sonnet 3.7、Claude Sonnet 3.5に最適化されたバージョンがあります:

typeフィールドは検証目的のためにツールとそのパラメータを識別し、nameフィールドはモデルに公開されるツール名です。

モデルにこれらのツールの1つを使用するようプロンプトする場合、nameフィールドで明示的にツールを参照できます。nameフィールドはツールリスト内で一意である必要があります。同じAPIコール内でAnthropicが定義したツールと同じ名前のツールを定義することはできません。

Anthropicが定義したツールと同じ名前のツールを定義することはお勧めしません。 これらの名前を持つツールを再定義することはできますが(ツール名がtoolsブロック内で一意である限り)、 そうすることでモデルのパフォーマンスが低下する可能性があります。

Claude 4とClaude Sonnet 3.7で思考機能を有効にする

Claude Sonnet 3.7は、複雑なタスクに取り組む際のモデルの推論プロセスを見ることができる新しい「思考」機能を導入しました。この機能は、Claudeが問題にどのようにアプローチしているかを理解するのに役立ち、デバッグや教育目的に特に価値があります。

思考を有効にするには、APIリクエストにthinkingパラメータを追加します:

"thinking": {
  "type": "enabled",
  "budget_tokens": 1024
}

budget_tokensパラメータは、Claudeが思考に使用できるトークン数を指定します。これは全体のmax_tokens予算から差し引かれます。

思考が有効になると、Claudeはその推論プロセスをレスポンスの一部として返し、以下のことに役立ちます:

  1. モデルの意思決定プロセスを理解する
  2. 潜在的な問題や誤解を特定する
  3. 問題解決へのClaudeのアプローチから学ぶ
  4. 複雑な多段階操作についてより多くの可視性を得る

思考出力の例は次のようになります:

[Thinking]
デスクトップに猫の画像を保存する必要があります。これをステップに分解しましょう:

1. まず、デスクトップにあるものを確認するためにスクリーンショットを撮ります
2. 次に、猫の画像を検索するためのウェブブラウザを探します
3. 適切な画像を見つけた後、それをデスクトップに保存する必要があります

利用可能なものを確認するためにスクリーンショットを撮ることから始めましょう...

コンピュータ使用と他のツールを組み合わせる

通常のツール使用とコンピュータ使用のためのAnthropicが定義したツールを組み合わせることができます。

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-opus-4-20250514",
    "max_tokens": 1024,
    "tools": [
      {
        "type": "computer_20250124",
        "name": "computer",
        "display_width_px": 1024,
        "display_height_px": 768,
        "display_number": 1
      },
      {
        "type": "text_editor_20250124",
        "name": "str_replace_editor"
      },
      {
        "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にコンピュータを使用させるために必要なすべてのコンポーネントが含まれています。ただし、ニーズに合わせて独自のコンピュータ使用環境を構築することもできます。必要なものは次のとおりです:

  • Claudeとのコンピュータ使用に適した仮想化またはコンテナ化された環境
  • Anthropicが定義したコンピュータ使用ツールの少なくとも1つの実装
  • Anthropic APIと対話し、ツール実装を使用してtool_use結果を実行するエージェントループ
  • エージェントループを開始するためのユーザー入力を可能にするAPIまたはUI

コンピュータ使用の制限を理解する

コンピュータ使用機能はベータ版です。Claudeの機能は最先端ですが、開発者はその制限を認識しておく必要があります:

  1. レイテンシ: 現在のコンピュータ使用の人間とAIの対話のレイテンシは、通常の人間が指示するコンピュータ操作と比較して遅すぎる可能性があります。スピードが重要でないユースケース(例:バックグラウンド情報収集、自動ソフトウェアテスト)に信頼できる環境で焦点を当てることをお勧めします。
  2. コンピュータビジョンの精度と信頼性: Claudeはアクションを生成する際に特定の座標を出力する際にミスをしたりハルシネーションを起こしたりする可能性があります。Claude Sonnet 3.7は、モデルの推論を理解し、潜在的な問題を特定するのに役立つ思考機能を導入しています。
  3. ツール選択の精度と信頼性: Claudeはアクションを生成する際にツールを選択する際にミスをしたりハルシネーションを起こしたりする可能性があり、問題を解決するために予期しないアクションを取ることがあります。さらに、ニッチなアプリケーションや複数のアプリケーションを同時に操作する場合、信頼性が低下する可能性があります。複雑なタスクをリクエストする際には、ユーザーがモデルを慎重にプロンプトすることをお勧めします。
  4. スクロールの信頼性: Claude Sonnet 3.5(新)にはスクロールに関する制限がありましたが、Claude Sonnet 3.7は方向制御を備えた専用のスクロールアクションを導入し、信頼性を向上させています。モデルは現在、指定された量だけ任意の方向(上/下/左/右)に明示的にスクロールできます。
  5. スプレッドシートの操作: スプレッドシートの操作のためのマウスクリックは、left_mouse_downleft_mouse_upなどのより正確なマウス制御アクションと新しい修飾キーサポートの追加により、Claude Sonnet 3.7で改善されています。セルの選択は、これらの細かい制御を使用し、修飾キーとクリックを組み合わせることでより信頼性が高くなります。
  6. ソーシャルおよびコミュニケーションプラットフォームでのアカウント作成とコンテンツ生成: Claudeはウェブサイトを訪問しますが、ソーシャルメディアのウェブサイトやプラットフォーム全体でアカウントを作成したり、コンテンツを生成して共有したり、その他の方法で人間の偽装に関与したりする能力を制限しています。将来的にこの機能を更新する可能性があります。
  7. 脆弱性: ジェイルブレイクやプロンプトインジェクションなどの脆弱性は、ベータ版コンピュータ使用APIを含むフロンティアAIシステム全体に存在する可能性があります。状況によっては、Claudeはユーザーの指示と矛盾する場合でも、コンテンツ内の命令に従うことがあります。例えば、ウェブページやイメージに含まれるClaude向けの指示が、指示を上書きしたり、Claudeにミスを引き起こしたりする可能性があります。以下をお勧めします: a. 最小限の権限を持つ仮想マシンやコンテナなどの信頼できる環境にコンピュータ使用を制限する b. 厳格な監視なしに機密アカウントやデータへのコンピュータ使用アクセスを与えることを避ける c. アプリケーションでコンピュータ使用機能を有効にしたり、必要な権限をリクエストしたりする前に、関連するリスクをエンドユーザーに通知し、同意を得る
  8. 不適切または違法なアクション: Anthropicの利用規約に従い、法律または許容使用ポリシーに違反するためにコンピュータ使用を使用してはなりません。

常にClaudeのコンピュータ使用アクションとログを慎重に確認して検証してください。人間の監視なしに完璧な精度や機密ユーザー情報を必要とするタスクにClaudeを使用しないでください。


価格設定

Claude Tool Use APIリクエストの価格設定方法の詳細な説明については、ツール使用の価格設定ドキュメントを参照してください。

ツール使用リクエストのサブセットとして、コンピュータ使用リクエストは他のClaude APIリクエストと同じ価格です。

また、コンピュータ使用を可能にする特別なシステムプロンプトをモデルに自動的に含めます。

モデルツール選択システムプロンプトのトークン数
Claude 4 Opus & Sonnetauto
any, tool
466トークン
499トークン
Claude Sonnet 3.7auto
any, tool
466トークン
499トークン
Claude Sonnet 3.5(新)auto
any, tool
466トークン
499トークン

基本トークンに加えて、Anthropicが定義したツールには以下の追加入力トークンが必要です:

ツール追加入力トークン
computer_20250124(Claude 4)735トークン
computer_20250124(Claude Sonnet 3.7)735トークン
computer_20241022(Claude Sonnet 3.5)683トークン
text_editor_20250429(Claude 4)700トークン
text_editor_20250124(Claude Sonnet 3.7)700トークン
text_editor_20241022(Claude Sonnet 3.5)700トークン
bash_20250124(Claude 4)245トークン
bash_20250124(Claude Sonnet 3.7)245トークン
bash_20241022(Claude Sonnet 3.5)245トークン

Claude 4またはClaude Sonnet 3.7で思考を有効にすると、思考に使用されるトークンは、思考パラメータで指定したbudget_tokensに基づいてmax_tokens予算から差し引かれます。