Claude 3.7 SonnetとClaude 3.5 Sonnet(新)は、コンピュータのデスクトップ環境を操作できるツールと対話することができます。Claude 3.7 Sonnetは追加のツールを導入し、思考を有効にすることでモデルの推論プロセスについてより深い洞察を得ることができます。

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

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

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

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

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

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

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

ウェブインターフェース、Dockerコンテナ、ツール実装の例、エージェントループを含むコンピュータ使用のリファレンス実装で、すぐに始めることができます。

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

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

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


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

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

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

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

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

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

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

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

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

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

コンピューティング環境

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

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

  2. デスクトップ環境: Linuxで動作するウィンドウマネージャー(Mutter)とパネル(Tint2)を備えた軽量な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 3.7 Sonnet用)
        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は時々、その結果を明示的にチェックせずにアクションの結果を想定することがあります。これを防ぐために、次のようにClaudeにプロンプトを与えることができます:各ステップの後、スクリーンショットを撮り、正しい結果が得られたかどうかを慎重に評価してください。あなたの思考を明示的に示してください:"ステップXを評価しました..."。正しくない場合は、もう一度試してください。ステップが正しく実行されたことを確認してから、次のステップに進んでください。
  3. ドロップダウンやスクロールバーなどのUI要素は、マウスの動きを使用して操作するのが難しい場合があります。これを経験した場合は、キーボードショートカットを使用するようモデルにプロンプトを与えてみてください。
  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に返す必要があります。他のツールと同様に、モデルは自動的にツールを実行しません。

私たちは、Claude 3.5 Sonnet(新)とClaude 3.7 Sonnetの両方に最適化されたバージョンを持つAnthropicが定義したツールのセットを提供しています:

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

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

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

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

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

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

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

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

思考が有効な場合、Claudeは応答の一部として推論プロセスを返します。これは以下に役立ちます:

  1. モデルの意思決定プロセスを理解する
  2. 潜在的な問題や誤解を特定する
  3. Claudeの問題解決アプローチから学ぶ
  4. 複雑な多段階操作をより詳しく把握する

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

[思考]
デスクトップに猫の写真を保存する必要があります。これをステップに分解してみましょう:

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

スクリーンショットを撮って何が利用可能か確認してみましょう...

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

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

カスタムコンピュータ使用環境の構築

リファレンス実装は、コンピュータ使用を始めるのに役立つことを目的としています。これにはClaudeがコンピュータを使用するために必要なすべてのコンポーネントが含まれています。ただし、ニーズに合わせて独自のコンピュータ使用環境を構築することができます。必要なものは:

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

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

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

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

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


価格設定

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

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

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

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

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

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

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