00 Configuration
Notes formateur du module 00 : timing, fil conducteur, problèmes fréquents et procédures de reprise.
Guide d'animation de la leçon 00 Configuration.
Avant la session — provisionner une clé partagée pour les participants (usage équitable)
Lors d'une session publique animée par un formateur, ne donnez pas votre clé OpenRouter personnelle — ni une clé sans plafond — à des inconnus. L'API de gestion (provisionnement) d'OpenRouter crée par programmation des clés dédiées avec un plafond strict de crédits, afin que la dépense de l'atelier reste limitée et équitable.
1. Créez une clé de gestion (une seule fois). OpenRouter → Settings → Management API Keys (openrouter.ai/settings/management-keys) → Create New Key. Elle peut créer, inspecter et supprimer d'autres clés, et dépenser sur votre compte ; traitez-la comme un identifiant administrateur.
export OPENROUTER_PROVISIONING_KEY=sk-or-v1-<management-key> # instructor only — never share2. Provisionnez la clé partagée avec un plafond strict. Le dépôt fournit l'utilitaire (scripts/provision_workshop_keys.py), qui appelle POST https://openrouter.ai/api/v1/keys :
# one shared key the whole room uses, capped at $20 total (reset daily at 00:00 UTC):
python -m scripts.provision_workshop_keys --name "Agent Arena $(date +%F)" --limit 20 --dailyLa réponse de création affiche la chaîne de la clé une seule fois ; copiez-la et donnez-la aux participants comme OPENROUTER_API_KEY. Ensuite, seul son hash reste récupérable pour l'inspecter ou la supprimer. Vous préférez curl ? C'est le même appel :
curl -s https://openrouter.ai/api/v1/keys \
-H "Authorization: Bearer $OPENROUTER_PROVISIONING_KEY" \
-H "content-type: application/json" \
-d '{"name":"Agent Arena workshop","limit":20}'Plus équitable pour les grands groupes. Avec une clé partagée, un seul participant peut épuiser tout le budget. Au-delà de 20 personnes, créez plutôt une clé plafonnée par participant :
python -m scripts.provision_workshop_keys --name "Agent Arena $(date +%F)" --limit 2 --count 30Vous obtenez 30 clés plafonnées à 2 $ chacune. Distribuez-en une par participant.
3. Surveillez et nettoyez. Consultez les dépenses pendant la session et supprimez les clés à la fin :
python -m scripts.provision_workshop_keys --list
python -m scripts.provision_workshop_keys --delete <keyHash>La clé de gestion peut dépenser et créer/supprimer des clés sur votre compte. Conservez-la uniquement dans le .env du formateur, jamais dans les documents, diapositives ou le dépôt partagé. Les participants ne reçoivent que la clé normale, provisionnée et plafonnée sk-or-v1-….
Dimensionnement : les modèles appartiennent à la catégorie économique flash-lite et la grille ne compte que 6 × 3 = 18 configurations. Un plafond partagé de 20 $ couvre confortablement une salle entière exécutant l'Arena plusieurs fois ; c'est un garde-fou contre les boucles incontrôlées, pas un budget serré.
Timing
~25 à 30 minutes si les comptes existent déjà ; prévoyez plus pour leur création.
- 5 min — créer les trois comptes (OpenRouter, Langfuse Cloud et ClickHouse Cloud) si cela n'a pas été fait la veille.
- 5 min — cloner le dépôt, créer l'environnement virtuel et installer les dépendances.
- 5 min — renseigner
.env. - 5 min — exécuter
source .env && scripts/arena.sh upet confirmer le dashboard surhttp://localhost:5174.
Avant la session, ouvrez OpenRouter → Settings → Privacy → Data Policies → Zero Data Retention, désactivez Non-frontier (gris/désactivé), puis testez Qwen avec la clé participant. Qwen utilise l'endpoint sans ZDR d'Alibaba ; activer le ZDR non-frontier produit No endpoints available matching your guardrail restrictions and data policy même si Alibaba est autorisé et les guardrails assouplis. Ce réglage appartient au compte et ne peut pas être assoupli via l'API de gestion ou un paramètre de requête. Utilisez-le uniquement pour la charge synthétique de l'atelier et respectez les exigences de votre organisation pour les données réelles.
Fil conducteur
- Commencez par nommer les trois comptes — OpenRouter, ClickHouse Cloud et Langfuse Cloud — et dites clairement que Langfuse intervient dès le premier module, avant tout choix de modèle. Ce n'est pas un ajout de production au Module 03 : il exécutera la compétition et conservera les preuves pendant la publication, l'enquête et l'amélioration.
- Montrez le chemin de code partagé :
agents/est utilisé pareval/harness.py(benchmark) etserving/api.py(production), de sorte que ce qui est mesuré aujourd'hui correspond à ce qui sera publié au Module 03. - Décrivez ce que fait
scripts/arena.sh up: il crée la basearena, l'utilisateur en lecture seulearena_ro, génère les données e-commerce synthétiques dans ClickHouse, crée les vuesv_*, puis démarre l'API et l'interface web du dashboard. - Prévenez que l'onglet Leaderboard sera vide à la fin. C'est normal et prépare le Module 01.
Problèmes fréquents
- Placeholder
OPENROUTER_API_KEYlaissé àsk-or-...— le harness échouera avec401lors du premier appel de modèle au Module 01. Faites vérifier maintenant qu'une vraie clé se trouve dans.env. ARENA_RO_PASSWORDvide —scripts/arena.sh upcrée tout de mêmearena_ro, mais la politique de mots de passe du service peut faire rejeter le client. Définissez n'importe quelle valeur non vide.- Service ClickHouse Cloud encore en cours de provisionnement — un nouveau service peut mettre quelques minutes à accepter les connexions ; attendez et relancez
scripts/arena.sh up. .envnon chargé — exécutezsource .env && scripts/arena.sh upsur la même ligne ;scripts/arena.sh upseul dans un nouveau shell échoue faute de variablesCLICKHOUSE_CLOUD_*.- Port 5174 (ou 8000) déjà utilisé — un ancien processus tourne encore.
scripts/arena.sh stopnettoie les serveurs avant de répéterup.
Procédures de reprise
- Recréez tout avec
source .env && scripts/arena.sh up. La commande est idempotente, n'utilise ni Aurora, ni ClickPipes, ni ClickStack, et recrée la basearena, l'utilisateurarena_ro, les données synthétiques et les vuesv_*, puis redémarre l'API et l'interface. Les résultats du benchmark restent dans Langfuse. - Si seuls les serveurs locaux sont bloqués,
scripts/arena.sh stopsuivi descripts/arena.sh serveest plus rapide qu'unupcomplet. - Vérifiez l'état avec
scripts/arena.sh status: il affiche l'API, l'interface et le nombre de lignes de chaque vuev_*. - Si
.envcontient encore des placeholders, obtenez la vraie clé ou le véritable identifiant, puis relancezscripts/arena.sh up.