Sieh dir im OpenAI Cookbook die Beispiele für die anwendungsgesteuerte und webhookgesteuerte Verwaltung an.
Informationen zum Setup des Executors und zu den Verbindungsanforderungen findest du unter Selbst gehostete Sandboxen.
Wähle einen Bereitstellungsmodus:
- Anwendungsgesteuert: Folge dieser Anleitung, um Sandboxen aus deiner Anwendung heraus zu starten und zu stoppen.
- Webhookgesteuert: Stelle einen Handler bereit, der über OpenAI-Webhooks Sandboxen startet oder erneut verbindet.
Einen Vergleich der beiden Modi findest du unter Sandbox-Lebenszyklus.
Bevor du beginnst
Du benötigst einen OpenAI-Projekt-API-Schlüssel, einen Blaxel-API-Schlüssel und einen Blaxel-Workspace sowie das Paket für die Codex CLI.
Setze BL_API_KEY und BL_WORKSPACE und verwende OPENAI_API_KEY für Anfragen deiner Anwendung. Setze OPENAI_EXECUTOR_API_KEY auf einen Umgebungsschlüssel und übergib nur diesen Schlüssel als CODEX_API_KEY an die Sandbox.
Wähle die Region der Sandbox in deinem Code zur Bereitstellung. Verwende us-was-1, wenn du die unten beschriebene Option zur persistenten Speicherung mit Agent Drive benötigst.
1. Blaxel-Umgebung einrichten
Erstelle eine selbst gehostete Sitzung und speichere ihre Umgebungs-ID. Verwende das Blaxel SDK oder die API, um eine isolierte Sandbox mit dem konfigurierten Arbeitsverzeichnis zu erstellen. Installiere die Codex CLI in der Sandbox und starte dann ihren Executor mit dieser Umgebungs-ID und dem Umgebungsschlüssel.
Das Blaxel-Node-Image verwendet Alpine Linux. Installiere ripgrep daher mit apk. Übergib den Umgebungsschlüssel als CODEX_API_KEY ausschließlich an den Executor-Prozess. Setze keep_alive=True, damit die Sandbox nicht auf null herunterskaliert wird, während der Executor läuft. Zeitlimits für das Setup, den Executor und die Sandbox verhindern, dass nicht mehr genutzte Ressourcen unbegrenzt weiterlaufen.
Erstelle für die regelmäßige Nutzung ein Blaxel-Image, in dem Codex und ripgrep bereits installiert sind, damit die Sandbox schneller eine Verbindung herstellen kann.
2. Sitzung ausführen
Verwende die HTTP-Beispiele unter Sitzungen ausführen und fortsetzen, um Eingaben zu senden und das Ergebnis zu streamen, sobald der Blaxel-Executor verbunden ist. Wenn du fertig bist, lösche die Sitzung und stoppe die Sandbox beim Anbieter separat.
Starte die Sandbox, bevor du Eingaben sendest. Der Durchlauf wartet, bis die Umgebung verbunden ist. Die Sitzung meldet die Verbindung über agent.session.environment.connected im Ereignisstream.
An agent.session.turn.completed erkennst du einen erfolgreichen Durchlauf. Auch nach einem fehlgeschlagenen oder abgebrochenen Durchlauf kann agent.session.idle folgen. Eine Sitzung im Leerlauf ist daher kein Beleg dafür, dass der Durchlauf erfolgreich war.
Optional: Dateien über Sitzungen hinweg speichern
Verwende Blaxel Agent Drive, um Dateien über Sandboxen und Sitzungen hinweg zu erhalten. Binde in jeder Sandbox dasselbe Laufwerk ein, um Dateien gemeinsam zu nutzen. Agent Drive erfordert die Region us-was-1 und überträgt weder den Gesprächsverlauf noch den Sitzungszustand.
Referenzen
- Lies die Dokumentation zu Blaxel Sandbox
- Lies die Dokumentation zum Blaxel Python SDK
- Lies die Dokumentation zum Blaxel TypeScript SDK