Veja os exemplos de gerenciamento pela aplicação e por webhooks no OpenAI Cookbook.
Consulte Sandboxes hospedados em infraestrutura própria para ver 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.
Antes de começar
Você precisa de uma chave de API de projeto da OpenAI, uma chave de API e um workspace da Blaxel e o pacote do Codex CLI.
Defina BL_API_KEY e BL_WORKSPACE e use OPENAI_API_KEY para as requisições da aplicação. Defina OPENAI_EXECUTOR_API_KEY como uma chave de ambiente e passe apenas essa chave para o sandbox como CODEX_API_KEY.
Escolha a região do sandbox no código de provisionamento. Use us-was-1 se precisar da opção de persistência do Agent Drive descrita abaixo.
1. Configure o ambiente da Blaxel
Crie uma sessão auto-hospedada e salve o ID do ambiente dela. Use o SDK ou a API da Blaxel 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 imagem Node da Blaxel usa Alpine Linux, portanto instale ripgrep com apk. Passe a chave de ambiente como CODEX_API_KEY apenas para o processo do executor. Defina keep_alive=True para evitar que a capacidade do sandbox seja reduzida a zero enquanto o executor estiver em execução. Os limites de tempo para a configuração, o executor e o sandbox impedem que recursos abandonados continuem em execução indefinidamente.
Para uso frequente, crie uma imagem da Blaxel com o Codex e ripgrep já instalados para que o sandbox possa se conectar mais rapidamente.
2. Execute a sessão
Use os exemplos de HTTP em Execute e continue sessões para enviar a entrada e transmitir o resultado após a conexão do executor da Blaxel. Ao terminar, exclua a sessão e pare o sandbox do provedor separadamente.
Inicie o sandbox antes de enviar a entrada. O turno aguarda a conexão do ambiente, e a sessão informa a conexão por meio de agent.session.environment.connected no fluxo de eventos.
Use agent.session.turn.completed para identificar um turno bem-sucedido. 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.
Opcional: preserve arquivos entre sessões
Use o Blaxel Agent Drive para preservar arquivos entre sandboxes e sessões. Monte a mesma unidade em cada sandbox para compartilhar arquivos; o Agent Drive exige a região us-was-1 e não transfere o histórico de conversas nem o estado da sessão.
Referências
- Leia a documentação do Blaxel Sandbox
- Consulte o SDK da Blaxel para Python
- Consulte o SDK da Blaxel para TypeScript