OpenAI Cookbook のアプリケーション管理と Webhook 管理のサンプルを参照してください。
エグゼキューターのセットアップと接続要件については、セルフホスト型サンドボックスを参照してください。
プロビジョニングモードを選択します。
- アプリケーション管理: このガイドに従い、アプリケーションからサンドボックスを起動・停止します。
- Webhook 管理: OpenAI の Webhook に応じてサンドボックスを起動または再接続するハンドラーをデプロイします。
2 つのモードの比較については、サンドボックスのライフサイクルを参照してください。
事前準備
OpenAI のプロジェクト API キー、Blaxel の API キーとワークスペース、Codex CLI パッケージが必要です。
BL_API_KEY と BL_WORKSPACE を設定し、アプリケーションからのリクエストには OPENAI_API_KEY を使用します。OPENAI_EXECUTOR_API_KEY に環境キーを設定し、そのキーだけを CODEX_API_KEY としてサンドボックスに渡します。
プロビジョニングコードでサンドボックスのリージョンを選択します。後述の Agent Drive による永続化オプションが必要な場合は、us-was-1 を使用します。
1. Blaxel 環境のセットアップ
セルフホスト型セッションを作成し、その環境 ID を保存します。Blaxel SDK または API を使用して、設定した作業ディレクトリを持つ隔離されたサンドボックスを作成します。サンドボックスに Codex CLI をインストールし、その環境 ID と環境キーを使用してエグゼキューターを起動します。
Blaxel の Node イメージは Alpine Linux を使用しているため、apk で ripgrep をインストールします。環境キーは CODEX_API_KEY としてエグゼキューターのプロセスにのみ渡します。エグゼキューターの実行中にサンドボックスがゼロにスケールダウンしないように、keep_alive=True を設定します。セットアップ、エグゼキューター、サンドボックスそれぞれにタイムアウトを設定することで、放置されたリソースが無期限に稼働し続けるのを防ぎます。
継続的に利用する場合は、Codex と ripgrep をあらかじめインストールした Blaxel イメージをビルドすると、サンドボックスの接続までの時間を短縮できます。
2. セッションの実行
Blaxel エグゼキューターの接続後、セッションの実行と継続にある HTTP のサンプルを使用して入力を送信し、結果をストリーミングで受信します。完了したら、セッションを削除し、それとは別にプロバイダー側のサンドボックスも停止します。
入力を送信する前にサンドボックスを起動します。ターンは環境の接続を待機し、セッションはイベントストリームの agent.session.environment.connected を通じて接続を通知します。
ターンが成功したかどうかは、agent.session.turn.completed で確認します。失敗またはキャンセルされたターンの後にも agent.session.idle が発生することがあるため、セッションがアイドル状態であることをターン成功の証拠とみなさないでください。
オプション:セッション間でのファイルの永続化
Blaxel Agent Drive を使用すると、サンドボックスやセッションをまたいでファイルを保持できます。各サンドボックスに同じドライブをマウントしてファイルを共有します。Agent Drive には us-was-1 リージョンが必要で、会話履歴やセッションの状態は転送されません。