Confira no OpenAI Cookbook os exemplos de gerenciamento pelo aplicativo e de gerenciamento por webhook.
Escolha um modo de provisionamento:
- Gerenciamento pelo aplicativo: Seu aplicativo cria e conecta o sandbox do E2B diretamente.
- Gerenciamento por webhook: Implante um manipulador que inicia ou reconecta sandboxes ao receber eventos de webhook da OpenAI.
Consulte Ciclo de vida do sandbox para comparar os dois modos.
Antes de começar
Defina E2B_API_KEY e use OPENAI_API_KEY nas requisições do aplicativo. Atribua a OPENAI_EXECUTOR_API_KEY o valor de uma chave de ambiente e passe apenas essa chave para o sandbox como CODEX_API_KEY.
Gerenciamento por webhook
Implemente um controlador que verifique os webhooks da OpenAI e provisione um worker exclusivo do E2B para cada sessão. Siga as instruções em Implante e conecte um manipulador para configurar as credenciais, registrar o endpoint e verificar as assinaturas.
Salve de forma persistente a associação entre cada sessão e seu sandbox. Ao receber uma solicitação de conexão, retome o worker se ele estiver pausado ou substitua-o se tiver sido excluído. Pausar o worker preserva seus arquivos. O worker substituto não terá esses arquivos. Defina limites de tempo de execução para o controlador e os workers. Remova o webhook da OpenAI quando deixar de usar o controlador.
Gerenciamento pelo aplicativo
Use o SDK ou a API do E2B no seu aplicativo para gerenciar o sandbox:
- Crie uma sessão auto-hospedada e salve o ID do ambiente dessa sessão.
- Crie um sandbox isolado do E2B com o diretório de trabalho da sessão e instale a CLI do Codex dentro dele.
- Inicie o executor no sandbox usando o ID e a chave do ambiente.
- Siga as instruções em Execute e continue sessões para enviar dados de entrada e verificar o resultado do turno.
- Ao terminar, exclua a sessão e encerre o sandbox do E2B.
Configure a duração do sandbox separadamente do limite de tempo do comando do executor. Quando a duração configurada chega ao fim, o sandbox deixa de funcionar mesmo que o comando não tenha limite de tempo.
Referências
- Consulte a documentação do E2B
- Consulte o SDK do E2B para Python
- Consulte o SDK do E2B para TypeScript