For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navigation principale

Cloudflare

Connectez Cloudflare Containers à une session de l’API Agents.

Ce guide utilise le provisionnement géré par webhooks avec le Worker de référence de Cloudflare.

Consultez les exemples de provisionnement géré par l’application et géré par webhooks dans l’OpenAI Cookbook.

Fonctionnement

  1. Votre application crée une session de l’API Agents et envoie des données d’entrée.
  2. OpenAI envoie les webhooks de session à un Worker dans votre compte Cloudflare.
  3. Le Worker démarre ou reconnecte un Container propre à la session qui exécute codex exec-server. L’exécuteur établit une connexion sortante vers OpenAI pour que l’agent puisse exécuter des commandes et travailler avec des fichiers.

Votre application utilise l’API Agents ; le Worker de référence gère le provisionnement du bac à sable. Consultez la page Cycle de vie du bac à sable pour connaître le fonctionnement de la connexion et de la reprise.

Avant de commencer

Vous devez disposer d’un compte Cloudflare avec accès à Containers. Utilisez OPENAI_API_KEY pour les requêtes de l’application. Affectez une clé d’environnement à OPENAI_EXECUTOR_API_KEY et transmettez uniquement cette clé au Container dans la variable CODEX_API_KEY.

Créez un agent et enregistrez son identifiant dans OPENAI_AGENT_ID. Utilisez le même identifiant d’agent dans votre application et dans le Worker de référence.

Déployez le Worker de référence

Le Worker de référence de Cloudflare comprend le gestionnaire de webhooks, l’image du Container, la configuration de déploiement et le point de terminaison de nettoyage.

Générez un secret pour le point de terminaison de nettoyage et enregistrez-le dans EXECUTOR_CLIENT_SECRET :

openssl rand -hex 32

Déployez le Worker dans votre compte Cloudflare :

Déployer sur Cloudflare

Saisissez ces valeurs lorsque vous y êtes invité :

VariableValeur
OPENAI_API_KEYClé utilisée par le Worker pour récupérer l’état de la session
OPENAI_EXECUTOR_API_KEYClé d’environnement transmise à l’exécuteur dans la variable CODEX_API_KEY
OPENAI_AGENT_IDIdentifiant de l’agent pris en charge par ce Worker
OPENAI_WEBHOOK_SECRETpending-webhook-registration pour le premier déploiement
EXECUTOR_CLIENT_SECRETSecret généré pour le nettoyage

Enregistrez l’URL du Worker déployé dans WORKER_URL.

Enregistrez le webhook

Suivez les instructions de configuration des webhooks pour enregistrer $WORKER_URL/webhook dans votre projet OpenAI. Activez les événements indiqués par l’intégration de référence de Cloudflare :

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

Remplacez OPENAI_WEBHOOK_SECRET par le secret de signature renvoyé par OpenAI, puis déployez la nouvelle version du Worker. Vérifiez sa configuration. Ces exemples utilisent des clients HTTP standard pour appeler le Worker :

Vérifiez l’état de santé du 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 réponse devrait contenir à la fois "configured": true et "webhook_configured": true.

Une action requise de type environment_connection indique qu’il faut reconnecter un exécuteur hors ligne. Un événement d’inactivité ne suffit pas, à lui seul, à déterminer si l’arrêt peut se faire sans risque ; consultez le fonctionnement du cycle de vie.

Exécutez une session

Suivez les étapes d’exécution d’une session avec la clé OPENAI_API_KEY de votre application et le même identifiant OPENAI_AGENT_ID que celui configuré dans le Worker. Créez une session auto-hébergée et demandez à l’agent d’écrire dans /workspace/hello.txt, puis d’en lire le contenu.

Le Worker reçoit les webhooks de session et connecte l’exécuteur du bac à sable. Votre application diffuse la sortie de l’agent en continu via l’API Agents.

Enregistrez l’identifiant de session dans SESSION_ID. Pour poursuivre la conversation, ouvrez le flux d’événements de la session avant d’envoyer de nouvelles données d’entrée. Si l’exécuteur est hors ligne, ces nouvelles données déclenchent une demande de connexion à l’environnement et leur traitement attend que le Worker reconnecte l’exécuteur. La reconnexion ne restaure pas à elle seule les fichiers d’un Container précédent.

Exécutez votre application dans un Worker

L’application Worker de base de Cloudflare utilise le SDK TypeScript @openai/agents-api pour créer des sessions, envoyer les données d’entrée initiales et suivantes, et nettoyer les ressources. Son point de terminaison POST /demo exécute le workflow.

Cette application utilise également le provisionnement géré par webhooks. Exécuter votre application dans un Worker n’implique pas qu’elle doive provisionner directement le bac à sable.

Nettoyage

Lorsque l’application n’a plus besoin du bac à sable, appelez le point de terminaison de nettoyage du Worker de référence, qui nécessite une authentification :

Nettoyez le bac à sable du 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())

Supprimez la session de l’API Agents séparément. La suppression d’une session n’émet pas de webhook : effectuez donc les deux opérations pour un nettoyage immédiat. Récupérez les fichiers dont vous avez besoin avant de libérer le Container.

Avancé : provisionnement géré par l’application

Pour contrôler directement le provisionnement du bac à sable, utilisez le SDK Cloudflare Sandbox en suivant le cycle de vie géré par l’application et les instructions de connexion de l’exécuteur. Utilisez un seul contrôleur de provisionnement par session.

Références