03 Publicar y detectar
Notas del instructor para publicar la política obsoleta preparada y demostrar un fallo real de la evaluación online.
Material del facilitador para 03 Publicar y detectar.
Duración
~15 minutos en total.
- 3 min — diferenciar evaluación operativa y valor para el usuario.
- 4 min — mostrar el preflight y publicar la configuración elegida con
policy-v1. - 4 min — formular la pregunta gobernada en Chat y obtener 👎.
- 4 min — localizar la traza, verificar ambas puntuaciones y reproducir con curl.
Preflight el día anterior
Ejecuta esto con el ganador previsto. La alternativa verificada es qwen3.7-flash__P2_fewshot:
cd ClickHouse_Demos/workshops/agent_arena
source .env
export WINNER_CONFIG_ID="${WINNER_CONFIG_ID:-qwen3.7-flash__P2_fewshot}"
.venv/bin/python -m schema.gen_schema_context
.venv/bin/python -m scripts.check_online_eval_scenario \
--config-id "$WINNER_CONFIG_ID"
.venv/bin/python -m scripts.provision_online_evaluators --operationalEl preflight hace un único reintento limitado cuando el primer resultado de una paráfrasis es ok/unknown, solo para la misma paráfrasis y configuración. Los demás fallos son definitivos.
No confíes en la memoria. Confirma en el entorno real:
stale_countycurrent_countexisten y son distintos;- las tres clasificaciones son
policy-v1; - la última línea dice que el incidente es reproducible;
- existe el evaluator
sql-execution-success; y - está habilitada la regla
agent-arena-sql-execution-online.
Para Qwen, desactiva OpenRouter Settings → Privacy → Data Policies → Zero Data Retention → Non-frontier para permitir la ruta Alibaba. Hazlo solo tras revisar los requisitos de datos. Los participantes necesitan una clave de runtime limitada, nunca la clave de aprovisionamiento del instructor.
Guion
-
Empieza con el ganador real del Módulo 02 y escribe
WINNER_CONFIG_IDa la vista. El núcleo y la configuración no cambian; solo el contexto de política publicado lleva una versión de retraso. -
Explica el límite:
sql-execution-successprueba que ClickHouse aceptó el SQL, no que implementa el significado actual de la métrica. -
Pregunta en Chat, muestra SQL, resultado y
policy_version=policy-v1; pulsa 👎 y esperafeedback sent. Esta traza raíz es el incidente autoritativo. -
Muestra la definición actual al lado:
SELECT uniqExact(customer_id) FROM v_orders WHERE order_ts >= now() - INTERVAL 30 DAY AND status NOT IN ('cancelled', 'returned') -
Di que el SQL basado en altas es válido bajo la
policy-v1suministrada. Es un fallo de publicación/proceso y un punto ciego del evaluator, no desobediencia del modelo. -
En Langfuse, filtra
user-thumbs = false, abre elchat_turnmás reciente y muestrasql-execution-success=truejunto auser-thumbs=false. La señal prioriza una investigación; no proporciona el diagnóstico ni se convierte por sí sola en verdad. -
Ejecuta después la reproducción curl obligatoria como diagnóstico sin puntuar. Llama al identificador
CURL_TRACE_ID, verifica solosql-execution-success=truey nunca envíes feedback ni lo entregues al Módulo 04. -
Registra ID/URL de la raíz y ambos recuentos para el Módulo 04. Mantén los identificadores en el proyecto y la hoja.
Evidencias esperadas de la traza
Abre la observación raíz chat_turn, no solo la hija llm_call:
| Campo | Valor esperado |
|---|---|
| nombre de traza/observación | chat_turn |
| tags | config_id, modelo, prompt, policy-v1, serving seleccionados |
metadata policyversion | policy-v1 |
| salida | SQL, columnas/filas, outcome_hint |
| puntuación operativa | sql-execution-success=true |
| puntuación de feedback | Boolean user-thumbs=false |
El código usa policy_version; el adaptador OpenTelemetry sanea las claves a caracteres alfanuméricos, por lo que Langfuse muestra policyversion.
El evaluator es asíncrono. Usa el verificador antes de tratar una puntuación ausente como fallo:
.venv/bin/python -m scripts.verify_online_scores "$CHAT_TRACE_ID" \
sql-execution-success=true user-thumbs=falseFallos comunes
- Proveedor bloqueado por ZDR — Qwen falla antes del SQL cuando se impone ZDR non-frontier y se impide la ruta Alibaba. Desactiva la restricción para el taller o usa la alternativa declarada tras revisar la privacidad.
- Dispatcher del evaluator detenido — llega la traza, pero no
sql-execution-success. Confirma el servicio/dispatcher y la reglaagent-arena-sql-execution-online; aprovisionar una regla no procesa puntuaciones sin workers. - Dependencias OpenTelemetry ausentes — no aparece traza aunque
/askresponda. Reinstala con.venv/bin/python -m pip install -r requirements.txt; el runtime usa la ruta OpenTelemetry de Langfuse v4. - Proceso de servidor antiguo — la respuesta indica
policy-v2aunque el comando usepolicy-v1. Detén por completo el proceso que ocupa el puerto 8100. - Puerto equivocado — Chat usa
http://localhost:8100. Si serving usa otro puerto, alineaVITE_SERVING_BASEo usacurlen el puerto real. - Feedback duplicado — el ID determinista es
user-thumbs-<trace_id>. Envía una valoración por traza; para valoraciones distintas, crea otra sesión/traza. - Puntuación pendiente — la evaluación es asíncrona. Deja que
scripts.verify_online_scoresconsulte antes de cambiar la configuración. - Recuentos de referencia iguales — no hay contraste en esta muestra. No inventes un fallo; vuelve a sembrar o diagnostica los datos.
Pasos de recuperación
Detén el servidor e inicia un proceso limpio con policy-v1:
scripts/arena.sh stop
scripts/arena.sh serve
source .env
.venv/bin/python -m schema.gen_schema_context
AGENT_ARENA_POLICY_VERSION=policy-v1 \
.venv/bin/uvicorn serving.api:app --port 8100scripts/arena.sh serve restaura dashboard e interfaz en segundo plano antes de que la API ocupe el terminal. Actualiza Chat para crear otra sesión. En la API bruta, usa otro ID de sesión u omítelo para que /ask cree uno. Repite preflight y aprovisionador en otra terminal; ambos son seguros.
Política de alternativa
Usa qwen3.7-flash__P2_fewshot solo si el ganador ya no sigue la política explícita en las tres preguntas. Declara la sustitución: conserva un incidente didáctico determinista, mientras el ganador del leaderboard sigue siendo el resultado medido. No cambies en silencio ni ocultes recuentos iguales, credenciales, enrutamiento o infraestructura.
Entrega al Módulo 04
Antes de avanzar, confirma que la hoja contiene ID/URL de la raíz autoritativa de Chat, recuentos obsoleto y actual, sql-execution-success=true y Boolean user-thumbs=false. El Módulo 04 parte de esa discrepancia y añade juicio humano; no debe partir de un diagnóstico prefabricado separado de la traza.