For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegación principal

Cloudflare

Conecta Cloudflare Containers a una sesión de la API de agentes.

Esta guía usa el aprovisionamiento gestionado mediante webhooks con el Worker de referencia de Cloudflare.

Consulta los ejemplos de aprovisionamiento gestionado por la aplicación y gestionado mediante webhooks en el OpenAI Cookbook.

Cómo funciona

  1. Tu aplicación crea una sesión de la API de agentes y envía datos de entrada.
  2. OpenAI envía webhooks de sesión a un Worker en tu cuenta de Cloudflare.
  3. El Worker inicia o reconecta un Container específico de la sesión que ejecuta codex exec-server. El ejecutor establece una conexión saliente con OpenAI para que el agente pueda ejecutar comandos y trabajar con archivos.

Tu aplicación usa la API de agentes; el Worker de referencia gestiona el aprovisionamiento del sandbox. Consulta Ciclo de vida del sandbox para conocer el comportamiento de conexión y recuperación.

Antes de comenzar

Necesitas una cuenta de Cloudflare con acceso a Containers. Usa OPENAI_API_KEY para las solicitudes de la aplicación. Configura OPENAI_EXECUTOR_API_KEY con una clave de entorno y pasa solo esa clave al Container como CODEX_API_KEY.

Crea un agente y guarda su ID como OPENAI_AGENT_ID. Usa el mismo ID de agente en tu aplicación y en el Worker de referencia.

Despliega el Worker de referencia

El Worker de referencia de Cloudflare incluye el controlador de webhooks, la imagen del Container, la configuración de despliegue y el punto de acceso de limpieza.

Genera un secreto para el punto de acceso de limpieza y guárdalo como EXECUTOR_CLIENT_SECRET:

openssl rand -hex 32

Despliega el Worker en tu cuenta de Cloudflare:

Desplegar en Cloudflare

Ingresa estos valores cuando se te soliciten:

VariableValor
OPENAI_API_KEYClave que usa el Worker para obtener el estado de la sesión
OPENAI_EXECUTOR_API_KEYClave de entorno que se pasa al ejecutor como CODEX_API_KEY
OPENAI_AGENT_IDID del agente atendido por este Worker
OPENAI_WEBHOOK_SECRETpending-webhook-registration para el primer despliegue
EXECUTOR_CLIENT_SECRETSecreto generado para la limpieza

Guarda la URL del Worker desplegado como WORKER_URL.

Registra el webhook

Sigue las instrucciones de configuración de webhooks para registrar $WORKER_URL/webhook en tu proyecto de OpenAI. Habilita los eventos indicados en la integración de referencia de Cloudflare:

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

Reemplaza OPENAI_WEBHOOK_SECRET por el secreto de firma que devuelve OpenAI y luego despliega la nueva versión del Worker. Verifica su configuración. Estos ejemplos usan clientes HTTP estándar para llamar al Worker:

Verifica el estado del 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())

La respuesta debería contener tanto "configured": true como "webhook_configured": true.

Una acción requerida de tipo environment_connection es la señal para reconectar un ejecutor desconectado. Un evento de inactividad por sí solo no indica que sea seguro apagarlo; consulta el comportamiento del ciclo de vida.

Ejecuta una sesión

Sigue los pasos de la sesión con la OPENAI_API_KEY de tu aplicación y el mismo OPENAI_AGENT_ID configurado en el Worker. Crea una sesión autoalojada y pídele al agente que escriba y lea /workspace/hello.txt.

El Worker recibe los webhooks de sesión y conecta el ejecutor del sandbox. Tu aplicación transmite la salida del agente en streaming a través de la API de agentes.

Guarda el ID de la sesión como SESSION_ID. Para continuar la conversación, abre el flujo de eventos de la sesión antes de enviar datos de entrada de seguimiento. Si el ejecutor está desconectado, los nuevos datos de entrada solicitan una conexión al entorno y esperan a que el Worker vuelva a conectar el ejecutor. La reconexión por sí sola no restaura los archivos de un Container anterior.

Ejecuta tu aplicación en un Worker

La aplicación básica de Worker de Cloudflare usa el SDK de TypeScript @openai/agents-api para crear sesiones, enviar datos de entrada iniciales y de seguimiento, y limpiar recursos. Su punto de acceso POST /demo ejecuta el flujo de trabajo.

Esta aplicación también usa aprovisionamiento gestionado mediante webhooks. Ejecutar tu aplicación en un Worker no significa que deba aprovisionar el sandbox directamente.

Limpieza

Cuando la aplicación ya no necesite el sandbox, llama al punto de acceso de limpieza del Worker de referencia, que requiere autenticación:

Limpia el sandbox del 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())

Elimina la sesión de la API de agentes por separado. La eliminación de la sesión no emite un webhook, así que realiza ambas operaciones para una limpieza inmediata. Recupera los archivos que necesites antes de liberar el Container.

Avanzado: aprovisionamiento gestionado por la aplicación

Para controlar directamente el aprovisionamiento del sandbox, usa el SDK de Cloudflare Sandbox con el ciclo de vida gestionado por la aplicación y las instrucciones de conexión del ejecutor. Usa un controlador de aprovisionamiento por sesión.

Referencias