OpenAI Cookbook では、アプリケーション管理とウェブフック管理の実装例を参照できます。
プロビジョニング方式を選択します。
- アプリケーション管理: アプリケーションが E2B サンドボックスを作成し、セッションに直接接続します。
- ウェブフック管理: OpenAI からのウェブフックを受けてサンドボックスを起動または再接続するハンドラーをデプロイします。
両方式の違いについては、サンドボックスのライフサイクルを参照してください。
事前準備
E2B_API_KEY を設定し、アプリケーションからのリクエストには OPENAI_API_KEY を使用します。OPENAI_EXECUTOR_API_KEY に環境キーを設定し、そのキーだけを CODEX_API_KEY としてサンドボックスに渡します。
ウェブフック管理
OpenAI からのウェブフックを検証し、セッションごとに専用の E2B ワーカーを用意するコントローラーを実装します。認証情報の設定、エンドポイントの登録、署名の検証は、ハンドラーのデプロイと接続の手順に従ってください。
セッションとサンドボックスの対応関係を永続化します。接続リクエストを受けたら、ワーカーが一時停止中であれば再開し、削除済みであれば新しいワーカーに置き換えます。一時停止した場合はワーカー内のファイルが保持されますが、置き換えた場合は引き継がれません。コントローラーとワーカーの実行時間にタイムアウトを設定し、コントローラーの使用を終了したら OpenAI のウェブフックを削除してください。
アプリケーション管理
アプリケーションから E2B SDK または API を使用してサンドボックスを管理します。
- セルフホスト型セッションを作成し、その環境 ID を保存します。
- セッションの作業ディレクトリを備えた独立した E2B サンドボックスを作成し、その中に Codex CLI をインストールします。
- 環境 ID と環境キーを使用して、サンドボックス内でエグゼキューターを起動します。
- セッションの実行と継続の手順に従って入力を送信し、ターンの結果を確認します。
- 作業が完了したら、セッションを削除し、E2B サンドボックスを停止します。
サンドボックスの有効期間は、エグゼキューターの起動コマンドのタイムアウトとは別に設定します。コマンドにタイムアウトを設定しなくても、有効期間が過ぎるとサンドボックスは停止します。
参考資料
- E2B ドキュメントを参照
- E2B Python SDK を参照
- E2B TypeScript SDK を参照