Skip to main content
サンドボックスを使用すると、スクリーンショット、マウスクリック、キーボード入力を通じて操作できる Linux デスクトップをエージェントに提供できます。このチュートリアルでは、サーバーレスキャパシティまたはご自身の CoreWeave Kubernetes Service (CKS) クラスター上で、使い捨てのサンドボックスを使って Chromium を実行します。ローカルマシン上の Python コントローラーが、デスクトップのスクリーンショットを OpenAI の computer ツールに送信し、返された action をサンドボックス内で実行して結果を取得します。 ここでは、サンプルのブラウザーフォームへの入力をエージェントに完了させます。フォームのサーバーが送信内容を独立して検証するため、成功かどうかはモデル自身の完了報告だけで判断されるわけではありません。

前提条件

開始する前に、以下が揃っていることを確認してください。
  • Python 3.11、3.12、または 3.13 と uv。
  • サンドボックスへのアクセス権を持つ Forge APIキーまたは CoreWeave API アクセストークン。認証情報の選択と取得を参照してください。サーバーレスの場合は、アカウントにサーバーレスサンドボックスへのアクセス権が必要です。CKS 配置の場合は、Sandbox User ロールを持つ CoreWeave トークンと、同じ組織内に設定済みのランナーが必要です。
  • gpt-5.6-sol と computer ツールへのアクセス権を持つ OpenAI APIキー。
  • コントローラーからサンドボックスサービスおよび OpenAI API へのアウトバウンドアクセス。サンドボックスは Debian リポジトリからパッケージをインストールします。
この例では、2 CPU と 4 ギビバイト (GiB) のメモリをリクエストし、サンドボックスのライフタイムの上限を 30 分に設定します。デフォルトはサーバーレスで、ランナーのセットアップは不要です。CKS を使用する場合は、独自のコンピューティングリソースを使用するの手順を完了してください。ランナーのポリシーで、ここで使用するイメージ、CPU、メモリ、およびアウトバウンドのパッケージダウンロードが許可されている必要があります。

認証情報を設定する

作業ディレクトリを作成し、入力内容を非表示にするプロンプトを使用できるように Bash を起動します。
サンドボックスで使用する認証情報を選択します。Python コードを sandbox_auth.py として作業ディレクトリに保存します。コントローラーとクリーンアップコマンドは、どちらもこの同じ設定をインポートします。
サーバーレス配置の場合は、Forge APIキーを使用します。
sandbox_auth.py
続けて同じシェルで、OpenAI の認証情報を入力します。
どちらのキーもローカルのコントローラー環境内に保持されます。スクリプトがこれらのキーをサンドボックスに渡すことはありません。コントローラーは、デスクトップのスクリーンショットとタスクのプロンプトをモデル API に送信します。

デスクトップコントローラーを作成する

作業ディレクトリに、次の完全な設定例を computer_use.py ファイルとして保存します。この例は 3 つのコンポーネントで構成されています。 Chromium は、ブラウザーのサンドボックスを有効にした状態で desktop ユーザーとして実行されます。フォームサーバーはサンドボックス内のループバックアドレスでリッスンします。この例では、パブリックエンドポイントの作成や、お使いのマシンでのブラウザーの起動は行いません。 アダプターは座標とキーの組み合わせを検証し、入力テキストはリテラル引数として渡します。ループは、サポートされていない action を受け取った場合や安全性レビューが要求された場合に停止します。モデルのターンは最大 20 回まで許可され、各ターンの間に 10 分の期限を超えていないかを確認します。
computer_use.py

タスクを実行して動作を確認する

同じシェルと作業ディレクトリで、コントローラーのサンドボックスを実行する場所を選択します。どちらのコマンドも wandb extra をインストールするため、サーバーレス配置ではどちらの認証情報も使用できます。
コントローラーはサンドボックスを作成し、デスクトップパッケージをインストールしてから、Chromium がフォームを読み込むのを待ちます。続いて、モデルがページを読み取り、表示されたフレーズを入力して Verify を選択します。パッケージのインストールには数分かかることがあります。モデルのターン数は実行ごとに異なる場合があります。 各 run の結果は、computer-use-results/ の下に新しく作成されるディレクトリに保存されます。 run が成功すると、result.json ファイルに "status": "passed"、"verified": true、"cleanup": "stopped" が記録されます。フォームに PASS と表示されていることを確認するには、agent/final.png ファイルを開きます。コントローラーは、フォームサーバーの検証ファイルを確認したうえで成功と判定します。 コントローラーは、タスクが失敗した場合も含め、finally ブロック内でサンドボックスの停止を試みます。クリーンアップで "failed" が報告された場合や、クリーンアップの完了前にコントローラーを終了した場合は、sandbox-id.txt ファイルに記録された ID を使用してサンドボックスを停止してください。[SANDBOX-ID] をその ID に置き換え、同じシェルでサンドボックスを停止します。
タスクが失敗した場合は、保存済みのトランスクリプトと、利用可能であれば最新の agent/turn-*.png ファイルを確認してください。API、デスクトップのインストール、ブラウザーの起動に関するエラーは、これらのファイルの一方または両方が作成される前に発生する場合があります。サンドボックスの接続エラーや実行エラーについては、サンドボックスのサポート記事を参照してください。

次のステップ

この例を応用するには、サンプルのフォームとタスクを、ご自身が管理するアプリケーションに置き換えてください。スクリーンショットと action のループはそのまま残し、アプリケーション固有の成功判定を追加します。繰り返し実行する場合は、起動時のインストールを省けるよう、デスクトップ用パッケージをコンテナーイメージに組み込んでおいてください。詳しくは サンドボックスの設定 を参照してください。 他のアプリケーションでエージェントを使用する前に、許可するアクセス先と action を定義し、機密性の高い操作には人による承認を必須にしてください。サンプルのプロンプトと入力の検証だけでは、Chromium の移動先は制限されません。コントローラーを拡張する際は、OpenAI の コンピューター操作 に関するガイダンス を確認してください。 エージェントをサンドボックスに接続するその他の方法については、エージェント を参照してください。ライフサイクル管理については、クリーンアップのパターン を参照してください。
最終更新日 2026年10月20日