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

Cloudflare

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

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

Consulte os exemplos de provisionamento gerenciado pelo aplicativo e gerenciado por webhooks no OpenAI Cookbook.

Como funciona

  1. Seu aplicativo cria uma sessão da API de Agentes e envia dados de entrada.
  2. A OpenAI envia webhooks da sessão a um Worker na sua conta da Cloudflare.
  3. O Worker inicia ou reconecta um contêiner exclusivo da sessão que executa codex exec-server. O executor inicia uma conexão de saída com a OpenAI para que o agente possa executar comandos e trabalhar com arquivos.

Seu aplicativo usa a API de Agentes, e o Worker de referência gerencia o provisionamento do sandbox. Consulte Ciclo de vida do sandbox para entender como funcionam a conexão e a recuperação.

Antes de começar

Você precisa de uma conta da Cloudflare com acesso ao Cloudflare Containers. Use OPENAI_API_KEY nas solicitações do aplicativo. Atribua a OPENAI_EXECUTOR_API_KEY o valor de uma chave de ambiente e passe apenas essa chave para o contêiner como CODEX_API_KEY.

Crie um agente e salve o ID dele em OPENAI_AGENT_ID. Use o mesmo ID de agente no aplicativo e no Worker de referência.

Implante o Worker de referência

O Worker de referência da Cloudflare inclui o código que processa os webhooks, a imagem do contêiner, a configuração de implantação e o endpoint de limpeza.

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

openssl rand -hex 32

Implante o Worker na sua conta da Cloudflare:

Implantar na Cloudflare

Informe os valores a seguir quando solicitado:

Variável Valor
OPENAI_API_KEY Chave que o Worker usa para consultar o estado da sessão
OPENAI_EXECUTOR_API_KEY Chave de ambiente passada ao executor como CODEX_API_KEY
OPENAI_AGENT_ID ID do agente atendido por este Worker
OPENAI_WEBHOOK_SECRET pending-webhook-registration na primeira implantação
EXECUTOR_CLIENT_SECRET Segredo gerado para a limpeza

Salve a URL do Worker implantado em WORKER_URL.

Registre o webhook

Siga as instruções de configuração do webhook para registrar $WORKER_URL/webhook no seu projeto da OpenAI. Habilite os eventos listados na 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 o valor de OPENAI_WEBHOOK_SECRET pelo segredo de assinatura retornado pela OpenAI e implante a nova versão do Worker. Verifique a configuração do Worker. Os exemplos a seguir usam clientes HTTP padrão para chamar o Worker:

Verificar o funcionamento 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.

Quando a sessão exige a ação environment_connection, reconecte o executor que está offline. Um evento de inatividade, por si só, não indica que é seguro desligar o executor. Consulte Comportamento do ciclo de vida.

Execute uma sessão

Siga as etapas para executar uma sessão usando a OPENAI_API_KEY do aplicativo e o mesmo OPENAI_AGENT_ID configurado no Worker. Crie uma sessão auto-hospedada e peça ao agente que escreva no arquivo /workspace/hello.txt e leia seu conteúdo.

O Worker recebe os webhooks da sessão e conecta o executor do sandbox. Seu aplicativo transmite a saída do agente em tempo real pela API de Agentes.

Salve o ID da sessão em SESSION_ID. Para continuar a conversa, abra o fluxo de eventos da sessão antes de enviar novos dados de entrada. Se o executor estiver offline, o envio desses dados 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 contêiner anterior.

Execute seu aplicativo em um Worker

O aplicativo básico da Cloudflare para Workers usa o SDK @openai/agents-api para TypeScript para criar sessões, enviar dados de entrada no início e ao longo da sessão e liberar recursos. O endpoint POST /demo do aplicativo executa esse fluxo de trabalho.

Esse aplicativo também usa provisionamento gerenciado por webhooks. Mesmo quando o aplicativo é executado em um Worker, ele não precisa provisionar o sandbox diretamente.

Limpeza

Quando o aplicativo não precisar mais do sandbox, chame o endpoint de limpeza do Worker de referência, que exige autenticação:

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 dispara um webhook, portanto execute as duas operações para liberar os recursos imediatamente. Recupere os arquivos de que precisa antes de liberar o contêiner.

Uso avançado: provisionamento gerenciado pelo aplicativo

Para controlar diretamente o provisionamento do sandbox, use o Cloudflare Sandbox SDK e siga as orientações sobre o ciclo de vida gerenciado pelo aplicativo e as instruções para conectar o executor. Use um único controlador de provisionamento por sessão.

Referências