Veja os exemplos de gerenciamento pela aplicação e por webhooks no OpenAI Cookbook.
Consulte Sandboxes hospedados em infraestrutura própria para conhecer a configuração do executor e os requisitos de conexão.
Escolha um modo de provisionamento:
- Gerenciado pela aplicação: Siga este guia para iniciar e parar sandboxes a partir da sua aplicação.
- Gerenciado por webhooks: Implante um manipulador que inicie ou reconecte sandboxes a partir de webhooks da OpenAI.
Consulte Ciclo de vida do sandbox para comparar os dois modos.
Gerenciado por webhooks
Use um controlador para verificar as entregas de webhooks da OpenAI e enfileirar tarefas de provisionamento. Mantenha esse controlador separado do sandbox de processamento que executa o executor de cada sessão. Siga as instruções em Implante e conecte um manipulador para registrar o endpoint e o segredo de assinatura.
Trate as solicitações de environment_connection iniciando ou reconectando o processo de execução e libere-o quando a sessão falhar. Configure explicitamente os tempos limite do processo de execução e do controlador. Parar os recursos computacionais em caso de ociosidade exige uma política que coordene essa ação com a chegada de novas tarefas; consulte Comportamento do ciclo de vida.
Gerenciado pela aplicação
Antes de começar
Você precisa de uma chave de API de projeto da OpenAI, uma chave de API do Daytona e o pacote do Codex CLI.
Defina DAYTONA_API_KEY e use OPENAI_API_KEY nas requisições do aplicativo. Defina OPENAI_EXECUTOR_API_KEY como uma chave de ambiente e passe somente essa chave para o sandbox como CODEX_API_KEY.
1. Configure o ambiente do Daytona
Crie uma sessão auto-hospedada e salve o ID do respectivo ambiente. Use o SDK ou a API do Daytona para criar um sandbox isolado com o diretório de trabalho configurado. Instale o Codex CLI no sandbox e, em seguida, inicie seu executor com esse ID de ambiente e a chave de ambiente.
A conexão do executor com a OpenAI é de saída e de longa duração, e o monitoramento de inatividade do Daytona não a detecta. Defina auto_stop_interval=0 para que o Sandbox não seja parado enquanto o agente estiver trabalhando e configure um limite de duração para que execuções interrompidas não deixem recursos computacionais em funcionamento indefinidamente.
Para uso frequente, inclua o Codex e ripgrep em um instantâneo do Daytona para que o Sandbox possa se conectar mais rapidamente.
2. Execute a sessão
Use os exemplos HTTP em Execute e continue sessões para enviar dados de entrada e receber o resultado em fluxo após a conexão do executor do Daytona. Ao terminar, exclua a sessão e pare o sandbox do provedor separadamente.
Inicie o Sandbox antes de enviar dados de entrada. O turno aguarda a conexão do ambiente, e a sessão informa essa conexão por meio de agent.session.environment.connected no fluxo de eventos.
Use agent.session.turn.completed para identificar um turno concluído com sucesso. Um turno que falhou ou foi cancelado também pode ser seguido por agent.session.idle, portanto, não considere uma sessão ociosa como prova de que o turno foi bem-sucedido. Uma consulta à sessão imediatamente após um evento pode retornar o status anterior por um breve período.