00 Configuración
Notas del instructor para el módulo 00: tiempos, guion, fallos habituales y pasos de recuperación.
Guía del facilitador para la lección 00 Configuración.
Antes de la sesión — aprovisiona una clave compartida para participantes (uso justo)
En una sesión pública dirigida por un instructor, no entregues tu clave personal de OpenRouter —ni una sin límite— a desconocidos. La API de administración (aprovisionamiento) de OpenRouter crea mediante código claves específicas con un límite estricto de créditos, por lo que el gasto del taller queda acotado y es justo.
1. Crea una clave de administración (una vez). OpenRouter → Settings → Management API Keys (openrouter.ai/settings/management-keys) → Create New Key. Puede crear, inspeccionar y eliminar otras claves y gastar en tu cuenta; trátala como una credencial administrativa.
export OPENROUTER_PROVISIONING_KEY=sk-or-v1-<management-key> # instructor only — never share2. Aprovisiona la clave compartida con límite estricto. El repositorio incluye el auxiliar (scripts/provision_workshop_keys.py), que llama a 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 respuesta de creación muestra la cadena de la clave una sola vez; cópiala y entrégala como OPENROUTER_API_KEY. Después solo se puede recuperar su hash para inspeccionarla o eliminarla. ¿Prefieres curl? Es la misma llamada:
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}'Más justo para grupos grandes. Con una clave compartida, una persona puede agotar todo el presupuesto. Para más de 20 participantes, crea una clave limitada por persona:
python -m scripts.provision_workshop_keys --name "Agent Arena $(date +%F)" --limit 2 --count 30Se crean 30 claves, cada una limitada a 2 USD. Entrega una a cada participante.
3. Supervisa y limpia. Revisa el gasto durante la sesión y elimina las claves al terminar:
python -m scripts.provision_workshop_keys --list
python -m scripts.provision_workshop_keys --delete <keyHash>La clave de administración puede gastar y crear/eliminar claves en tu cuenta. Guárdala únicamente en el .env del instructor; nunca en materiales, diapositivas ni en el repositorio compartido. Los participantes solo reciben la clave normal, aprovisionada y limitada sk-or-v1-….
Dimensionamiento: los modelos pertenecen al nivel económico flash-lite y la cuadrícula solo tiene 6 × 3 = 18 configuraciones. Un límite compartido de 20 USD cubre holgadamente una sala completa ejecutando la Arena varias veces; protege frente a bucles descontrolados, no es un presupuesto ajustado.
Tiempo
~25–30 minutos si las cuentas ya existen; reserva más para crearlas.
- 5 min — crear las tres cuentas (OpenRouter, Langfuse Cloud y ClickHouse Cloud) si no se hizo el día anterior.
- 5 min — clonar el repositorio, crear el entorno virtual e instalar dependencias.
- 5 min — completar
.env. - 5 min — ejecutar
source .env && scripts/arena.sh upy confirmar el dashboard enhttp://localhost:5174.
Antes de la sesión, abre OpenRouter → Settings → Privacy → Data Policies → Zero Data Retention, desactiva Non-frontier (gris/desactivado) y prueba Qwen con la clave del participante. Qwen se dirige al endpoint sin ZDR de Alibaba; activar ZDR para non-frontier produce No endpoints available matching your guardrail restrictions and data policy incluso con Alibaba permitida y guardrails flexibles. Es una opción de cuenta que no puede relajarse por la API de administración ni por un parámetro. Úsala solo para la carga sintética del taller y respeta los requisitos de tu organización para datos reales.
Guion
- Empieza nombrando las tres cuentas —OpenRouter, ClickHouse Cloud y Langfuse Cloud— y deja claro que Langfuse entra en el primer módulo, antes de elegir ningún modelo. No es un añadido de producción del Módulo 03: ejecutará la competición y conservará las pruebas durante la publicación, investigación y mejora.
- Señala la ruta de código compartida:
agents/se usa tanto eneval/harness.py(benchmark) como enserving/api.py(producción), así que lo medido hoy coincide con lo publicado en el Módulo 03. - Narra qué hace
scripts/arena.sh up: crea la basearena, el usuario de solo lecturaarena_ro, genera datos sintéticos de comercio electrónico en ClickHouse, crea las vistasv_*e inicia la API y la interfaz web del dashboard. - Advierte que la pestaña Leaderboard estará vacía al terminar. Es correcto y prepara el Módulo 01.
Fallos habituales
- Placeholder
OPENROUTER_API_KEYconservado comosk-or-...— el harness fallará con401cuando llame a un modelo en el Módulo 01. Pide que confirmen ahora una clave real en.env. ARENA_RO_PASSWORDvacío —scripts/arena.sh upaún creaarena_ro, pero la política de contraseñas del servicio puede rechazar al cliente. Define cualquier valor no vacío.- Servicio ClickHouse Cloud aún aprovisionándose — un servicio nuevo puede tardar unos minutos en aceptar conexiones; espera y vuelve a ejecutar
scripts/arena.sh up. .envno cargado — ejecutasource .env && scripts/arena.sh upen la misma línea;scripts/arena.sh upsolo, en otro shell, falla porque faltan variablesCLICKHOUSE_CLOUD_*.- Puerto 5174 (u 8000) en uso — queda un proceso anterior.
scripts/arena.sh stoplimpia los servidores antes de repetirup.
Pasos de recuperación
- Recrea todo con
source .env && scripts/arena.sh up. Es idempotente, no usa Aurora, ClickPipes ni ClickStack y recrea la basearena, el usuarioarena_ro, los datos sintéticos y las vistasv_*, y reinicia la API y la interfaz. Los resultados del benchmark permanecen en Langfuse. - Si solo se bloquearon los servidores locales,
scripts/arena.sh stopseguido descripts/arena.sh servees más rápido que unupcompleto. - Comprueba el estado con
scripts/arena.sh status: muestra la API, la interfaz y el recuento de filas de cada vistav_*. - Si
.envaún contiene placeholders, consigue la credencial real y ejecuta de nuevoscripts/arena.sh up.