OpenAI Cookbook には、アプリケーション管理とウェブフック管理の実装例があります。
エグゼキューターのセットアップ手順と接続要件は、セルフホスト型サンドボックスを参照してください。
プロビジョニング方式を選びます。
- アプリケーション管理: このガイドに沿って、アプリケーションからサンドボックスを起動・停止します。
- ウェブフック管理: OpenAI からのウェブフックを受けてサンドボックスを起動または再接続するハンドラーをデプロイします。
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 を使用しているため、ripgrep は apk でインストールします。環境キーは 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 リージョンが必要です。会話履歴やセッションの状態は引き継がれません。
参考資料
- Blaxel のサンドボックスに関するドキュメントを参照
- Blaxel Python SDK のリファレンスを参照
- Blaxel TypeScript SDK のリファレンスを参照