Consulta los ejemplos de gestión desde la aplicación y gestión mediante webhooks en el OpenAI Cookbook.
Consulta Sandboxes autoalojados para saber cómo configurar el ejecutor y qué requisitos debe cumplir la conexión.
Elige un modo de aprovisionamiento:
- Gestión desde la aplicación: sigue esta guía para iniciar y detener sandboxes desde tu aplicación.
- Gestión mediante webhooks: despliega un manejador que inicie o vuelva a conectar sandboxes al recibir webhooks de OpenAI.
Consulta Ciclo de vida del sandbox para comparar los dos modos.
Gestión mediante webhooks
Usa un controlador para verificar las notificaciones recibidas mediante webhooks de OpenAI y poner en cola las tareas de aprovisionamiento. Mantén el controlador separado del sandbox de trabajo donde se ejecuta el ejecutor de cada sesión. Sigue los pasos de Desplegar y conectar un manejador para registrar el punto de acceso y el secreto de firma.
Cuando recibas una solicitud environment_connection, inicia o vuelve a conectar el sandbox de trabajo. Libéralo si la sesión falla. Configura explícitamente los tiempos de espera del sandbox de trabajo y del controlador. Para detener los recursos de cómputo cuando no haya actividad, necesitas una política que coordine la detención con la llegada de nuevas tareas. Consulta Comportamiento durante el ciclo de vida.
Gestión desde la aplicación
Antes de empezar
Necesitas una clave de API de un proyecto de OpenAI, una clave de API de Daytona y el paquete de la CLI de Codex.
Configura DAYTONA_API_KEY y usa OPENAI_API_KEY para las solicitudes de la aplicación. Configura OPENAI_EXECUTOR_API_KEY con una clave de entorno y pasa solo esa clave al sandbox como CODEX_API_KEY.
1. Configura el entorno de Daytona
Crea una sesión autoalojada y guarda el ID de su entorno. Usa el SDK o la API de Daytona para crear un sandbox aislado con el directorio de trabajo configurado. Instala la CLI de Codex en el sandbox y luego inicia el ejecutor con ese ID y la clave de entorno.
La conexión del ejecutor con OpenAI es saliente y de larga duración. El mecanismo de detección de inactividad de Daytona no la registra. Configura auto_stop_interval=0 para evitar que el sandbox se detenga mientras el agente trabaja. Define también un límite de duración para que los recursos de cómputo no sigan activos indefinidamente si se interrumpe una ejecución.
Si usas el sandbox con frecuencia, incluye Codex y ripgrep en una instantánea de Daytona para que el sandbox pueda conectarse más rápido.
2. Ejecuta la sesión
Una vez que se conecte el ejecutor de Daytona, usa los ejemplos de HTTP de Ejecutar y continuar sesiones para enviar la entrada y recibir el resultado a medida que se genera. Al terminar, elimina la sesión y detén por separado el sandbox del proveedor.
Inicia el sandbox antes de enviar la entrada. El turno espera a que el entorno se conecte y la sesión informa de la conexión mediante agent.session.environment.connected en el flujo de eventos.
Usa agent.session.turn.completed para identificar los turnos que terminaron correctamente. El evento agent.session.idle también puede aparecer después de que un turno falle o se cancele. Por eso, que la sesión esté inactiva no basta para confirmar que el turno terminó correctamente. Si consultas la sesión inmediatamente después de un evento, es posible que durante un breve período sigas viendo el estado anterior.
Referencias
- Consulta la documentación de Daytona
- Consulta la referencia del SDK de Daytona para Python
- Consulta la referencia del SDK de Daytona para TypeScript