For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegação principal
Theme

Ciclo de vida do sandbox

Inicie, reconecte e encerre o ambiente do agente.

A sessão de um agente pode continuar existindo depois que seu ambiente é encerrado. Seu aplicativo gerencia os recursos computacionais e os arquivos usados pelo ambiente self_hosted.

Iniciar um ambiente

Seu aplicativo pode iniciar os recursos computacionais depois de criar uma sessão. Use o SDK ou a API do provedor e, em seguida, conecte o executor usando o ID do ambiente da sessão e uma chave de ambiente.

Consulte os exemplos de sandboxes gerenciados pelo aplicativo no OpenAI Cookbook.

O aplicativo envia dados de entrada, recebe eventos e controla os recursos computacionais do provedor. O executor do sandbox abre uma conexão de saída com a API de Agentes e usa essa conexão para trocar comandos e resultados.

Use um único componente para gerenciar o ambiente de cada sessão. Registre quais recursos computacionais do provedor correspondem a cada sessão. Solicitações repetidas ou simultâneas não devem criar ambientes duplicados.

Iniciar recursos computacionais por meio de webhooks

Você também pode esperar até que seja necessário conectar o ambiente para processar uma entrada. A API emite agent.session.action_required com required_action.type: "environment_connection" antes de aguardar o executor. O manipulador de webhook inicia ou reconecta o ambiente.

Consulte os exemplos de sandboxes gerenciados por webhooks no OpenAI Cookbook.

O aplicativo troca dados de entrada e eventos com a API de Agentes. Um controlador de webhooks verifica as solicitações de conexão, consulta a sessão atual e inicia ou reconecta um sandbox do provedor. O executor do sandbox abre uma conexão de saída e troca comandos e resultados.

Siga as instruções de configuração do webhook para registrar seu manipulador para os eventos agent.session.action_required e agent.session.failed. Mantenha o segredo de assinatura do manipulador e a credencial de leitura de sessões separados da chave de ambiente do executor. Se vários manipuladores de provedores compartilharem um projeto, encaminhe cada evento ao manipulador responsável pela sessão.

O manipulador e o processo de trabalho têm responsabilidades distintas.

  1. Verificar e colocar na fila. Verifique a assinatura do webhook. Coloque as solicitações de conexão na fila somente quando data.required_action.type for environment_connection. Coloque também os eventos de falha de sessão na fila. Retorne uma resposta HTTP de sucesso somente após confirmar que o evento entrou na fila.
  2. Verificar o estado atual. O processo de trabalho consulta a sessão. Ignore sessões excluídas e ações já resolvidas. Se uma sessão auto-hospedada ainda precisar de conexão, inicie ou reconecte o executor usando session.environment.id e session.environment.remote_url. Se a sessão ainda estiver em estado de falha, libere seus recursos computacionais.

O fluxo de eventos da sessão informa a mesma solicitação como agent.session.requires_action. Uma ação obrigatória do tipo function_call exige o resultado de uma função e não requer a inicialização do ambiente. A criação do turno e os eventos agent.session.in_progress ocorrem tarde demais para iniciar um executor que está offline.

Depois de implantar o manipulador, crie uma sessão auto-hospedada e envie os dados de entrada. Use o diretório de trabalho configurado no manipulador e respeite os filtros de agente que ele usar. Se o executor se conectar antes do fim do prazo, o processamento da solicitação original continuará.

Manter o ambiente disponível ou encerrá-lo

Mantenha os recursos computacionais em execução entre os turnos para reutilizá-los ou aguarde algum tempo após o fim de um turno antes de desligá-los. Coordene o desligamento com a chegada de novas tarefas. Cancele qualquer desligamento pendente ao receber uma solicitação de conexão ou quando a execução começar. Verifique o estado novamente antes de desligar os recursos computacionais.

Um evento de inatividade, por si só, não indica que é seguro desligar o ambiente. Ele pode chegar assim que uma solicitação de conexão deixa de estar pendente, antes que comece o turno da entrada que aguardava a conexão. Se o aplicativo não conseguir coordenar o desligamento com a chegada de novas tarefas, mantenha o ambiente em execução.

Reconectar após uma desconexão

Os eventos de conexão informam o estado da conexão. Use agent.session.environment.connected e agent.session.environment.disconnected para acompanhar as conexões. Durante a configuração, a API também pode emitir agent.session.environment.pending ou agent.session.environment.failed. Esses eventos não solicitam recursos computacionais. Use a ação obrigatória environment_connection para iniciar os recursos e verifique separadamente o estado do provedor.

Uma desconexão durante um turno pode causar uma falha na execução de uma ferramenta, mesmo que o turno seja concluído. Examine os resultados das ferramentas e a resposta final do agente. A desconexão não solicita automaticamente a reconexão por webhook nem reinicia um comando encerrado à força. Uma entrada posterior pode solicitar a reconexão.

Ao receber uma entrada que precisa de conexão, a API aguarda até cinco minutos para que a conexão seja estabelecida. Configure os tempos limite do cliente e do proxy para permitir essa espera. Se o prazo expirar, a solicitação falhará. O processamento da entrada inicial pode falhar de forma assíncrona e deixar a sessão no estado failed.

A API não garante a recuperação de entradas pendentes após uma falha do processo. Verifique o resultado da solicitação ou da sessão antes de tentar novamente. Não reenvie a entrada enquanto a solicitação original estiver aguardando. Uma conexão estabelecida depois do prazo não faz com que a API processe novamente a entrada cujo prazo expirou.

Reutilizar o ID do ambiente não restaura os arquivos nos recursos computacionais que substituem os anteriores. Use o armazenamento do provedor ou snapshots para preservar os arquivos.

Liberar recursos

Pare de aceitar novas entradas. Coordene a liberação dos recursos com qualquer inicialização já em andamento para evitar que os recursos computacionais continuem em execução.

Exclua a sessão e, em uma operação separada, desligue os recursos computacionais do provedor. A exclusão de uma sessão não encerra seu ambiente nem dispara um webhook de exclusão.