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

Cloudflare

Conecte o Cloudflare Containers a uma sessão da API de Agentes.

Este guia usa provisionamento gerenciado por webhooks com o Worker de referência da Cloudflare.

Veja os exemplos de provisionamento gerenciado pela aplicação e gerenciado por webhooks no OpenAI Cookbook.

Como funciona

  1. Sua aplicação cria uma sessão da API de Agentes e envia dados de entrada.
  2. A OpenAI envia webhooks de sessão para um Worker na sua conta da Cloudflare.
  3. O Worker inicia ou reconecta um Container específico da sessão que executa codex exec-server. O executor estabelece uma conexão de saída com a OpenAI para que o agente possa executar comandos e trabalhar com arquivos.

Sua aplicação usa a API de Agentes; o Worker de referência gerencia o provisionamento do sandbox. Consulte Ciclo de vida do sandbox para entender o comportamento de conexão e recuperação.

Antes de começar

Você precisa de uma conta da Cloudflare com acesso ao Containers. 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 Container como CODEX_API_KEY.

Crie um agente e salve seu ID como OPENAI_AGENT_ID. Use o mesmo ID de agente na sua aplicação e no Worker de referência.

Implante o Worker de referência

O Worker de referência da Cloudflare inclui o manipulador de webhooks, a imagem do Container, a configuração de implantação e o endpoint de limpeza.

Gere um segredo para o endpoint de limpeza e salve-o como EXECUTOR_CLIENT_SECRET:

openssl rand -hex 32

Implante o Worker na sua conta da Cloudflare:

Implantar na Cloudflare

Insira estes valores quando solicitado:

VariávelValor
OPENAI_API_KEYChave usada pelo Worker para obter o estado da sessão
OPENAI_EXECUTOR_API_KEYChave de ambiente passada ao executor como CODEX_API_KEY
OPENAI_AGENT_IDID do agente atendido por este Worker
OPENAI_WEBHOOK_SECRETpending-webhook-registration para a primeira implantação
EXECUTOR_CLIENT_SECRETSegredo gerado para limpeza

Salve a URL do Worker implantado como WORKER_URL.

Registre o webhook

Siga as instruções de configuração de webhooks para registrar $WORKER_URL/webhook no seu projeto da OpenAI. Habilite os eventos listados pela integração de referência da Cloudflare:

  • agent.session.created
  • agent.session.action_required
  • agent.session.in_progress
  • agent.session.idle
  • agent.session.failed

Substitua OPENAI_WEBHOOK_SECRET pelo segredo de assinatura retornado pela OpenAI e implante a nova versão do Worker. Verifique sua configuração. Estes exemplos usam clientes HTTP padrão para chamar o Worker:

Verificar a integridade do Worker
# Replace the illustrative IDs and URLs below with your own resource values.
import urllib.request

url = "https://worker.example.com".rstrip("/") + "/health"
request = urllib.request.Request(url, method="GET")
with urllib.request.urlopen(request) as response:
    print(response.read().decode())

A resposta deve conter tanto "configured": true quanto "webhook_configured": true.

Uma ação obrigatória do tipo environment_connection é o sinal para reconectar um executor offline. Um evento de inatividade, por si só, não indica que é seguro encerrar o executor; consulte comportamento do ciclo de vida.

Execute uma sessão

Siga as etapas da sessão com a OPENAI_API_KEY da sua aplicação e o mesmo OPENAI_AGENT_ID configurado no Worker. Crie uma sessão auto-hospedada e peça ao agente para gravar e ler o arquivo /workspace/hello.txt.

O Worker recebe os webhooks da sessão e conecta o executor do sandbox. Sua aplicação transmite a saída do agente em streaming pela API de Agentes.

Salve o ID da sessão como SESSION_ID. Para continuar a conversa, abra o fluxo de eventos da sessão antes de enviar novas entradas. Se o executor estiver offline, a nova entrada solicita uma conexão com o ambiente e aguarda até que o Worker reconecte o executor. A reconexão, por si só, não restaura arquivos de um Container anterior.

Execute sua aplicação em um Worker

A aplicação básica em um Worker da Cloudflare usa o SDK para TypeScript @openai/agents-api para criar sessões, enviar entradas iniciais e subsequentes e limpar recursos. Seu endpoint POST /demo executa o fluxo de trabalho.

Esta aplicação também usa provisionamento gerenciado por webhooks. Executar sua aplicação em um Worker não significa que ela precise provisionar o sandbox diretamente.

Limpeza

Quando a aplicação não precisar mais do sandbox, chame o endpoint de limpeza autenticado do Worker de referência:

Limpar o sandbox do Worker
# Replace the illustrative IDs and URLs below with your own resource values.
import os
from urllib.parse import quote
import urllib.request

url = (
    "https://worker.example.com".rstrip("/")
    + "/executors/"
    + quote("sess_123", safe="")
)
request = urllib.request.Request(
    url,
    method="DELETE",
    headers={"Authorization": "Bearer " + os.environ["EXECUTOR_CLIENT_SECRET"]},
)
with urllib.request.urlopen(request) as response:
    print(response.read().decode())

Exclua a sessão da API de Agentes separadamente. A exclusão da sessão não emite um webhook, portanto, execute as duas operações para fazer a limpeza imediata. Recupere os arquivos de que precisa antes de liberar o Container.

Avançado: provisionamento gerenciado pela aplicação

Para controlar diretamente o provisionamento do sandbox, use o Cloudflare Sandbox SDK com o ciclo de vida gerenciado pela aplicação e as instruções de conexão do executor. Use um controlador de provisionamento por sessão.

Referências