Sieh dir im OpenAI Cookbook die Beispiele zur Verwaltung durch die Anwendung und über Webhooks an.
Informationen zum Setup des Executors und zu den Verbindungsanforderungen findest du unter Selbst gehostete Sandboxen.
Wähle einen Bereitstellungsmodus:
- Von der Anwendung verwaltet: Folge dieser Anleitung, um Sandboxen aus deiner Anwendung heraus zu starten und zu stoppen.
- Über Webhooks verwaltet: Stelle einen Handler bereit, der auf OpenAI-Webhooks reagiert und Sandboxen startet oder erneut verbindet.
Einen Vergleich der beiden Modi findest du unter Sandbox-Lebenszyklus.
Über Webhooks verwaltet
Verwende einen Controller, um eingehende OpenAI-Webhooks zu verifizieren und Bereitstellungsaufgaben in eine Warteschlange einzureihen. Halte diesen Controller von der Worker-Sandbox getrennt, in der der Executor der jeweiligen Sitzung läuft. Folge der Anleitung unter Handler bereitstellen und verbinden, um den Endpunkt und das Signaturgeheimnis zu registrieren.
Verarbeite environment_connection-Anfragen, indem du den Worker startest oder erneut verbindest, und gib ihn frei, wenn die Sitzung fehlschlägt. Konfiguriere die Zeitlimits für Worker und Controller explizit. Um Rechenressourcen bei Inaktivität zu stoppen, brauchst du eine Richtlinie, die eingehende Aufgaben berücksichtigt. Siehe Verhalten im Lebenszyklus.
Von der Anwendung verwaltet
Bevor du beginnst
Du benötigst einen API-Schlüssel für ein OpenAI-Projekt, einen Daytona-API-Schlüssel und das Paket für die Codex CLI.
Setze DAYTONA_API_KEY und verwende OPENAI_API_KEY für Anfragen der Anwendung. Setze OPENAI_EXECUTOR_API_KEY auf einen Umgebungsschlüssel und übergib nur diesen Schlüssel als CODEX_API_KEY an die Sandbox.
1. Daytona-Umgebung einrichten
Erstelle eine selbst gehostete Sitzung und speichere ihre Umgebungs-ID. Verwende das Daytona SDK oder die API, um eine isolierte Sandbox mit dem konfigurierten Arbeitsverzeichnis zu erstellen. Installiere die Codex CLI in der Sandbox und starte anschließend ihren Executor mit dieser Umgebungs-ID und dem Umgebungsschlüssel.
Der Executor baut eine ausgehende, langlebige Verbindung zu OpenAI auf, die von Daytonas Inaktivitätserkennung nicht erfasst wird. Setze auto_stop_interval=0, damit die Sandbox nicht gestoppt wird, während der Agent arbeitet. Konfiguriere außerdem eine maximale Laufzeit, damit Rechenressourcen nach unterbrochenen Durchläufen nicht unbegrenzt weiterlaufen.
Nimm Codex und ripgrep für die regelmäßige Nutzung in einen Daytona-Snapshot auf, 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, nachdem sich der Daytona-Executor verbunden hat. 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.
Erkenne einen erfolgreichen Durchlauf anhand von agent.session.turn.completed. Auch auf einen fehlgeschlagenen oder abgebrochenen Durchlauf kann agent.session.idle folgen. Eine inaktive Sitzung ist daher kein Beleg dafür, dass der Durchlauf erfolgreich war. Wenn du eine Sitzung unmittelbar nach einem Ereignis abrufst, kann kurzzeitig noch der vorherige Status zurückgegeben werden.
Referenzen
- Lies die Daytona-Dokumentation
- Lies die Referenz zum Daytona Python SDK
- Lies die Referenz zum Daytona TypeScript SDK