Agent ArenaClickHouse Workshops

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 --operational

El 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_count y current_count existen 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_ID a 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-success prueba 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 espera feedback 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-v1 suministrada. Es un fallo de publicación/proceso y un punto ciego del evaluator, no desobediencia del modelo.

  • En Langfuse, filtra user-thumbs = false, abre el chat_turn más reciente y muestra sql-execution-success=true junto a user-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 solo sql-execution-success=true y 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:

CampoValor esperado
nombre de traza/observaciónchat_turn
tagsconfig_id, modelo, prompt, policy-v1, serving seleccionados
metadata policyversionpolicy-v1
salidaSQL, columnas/filas, outcome_hint
puntuación operativasql-execution-success=true
puntuación de feedbackBoolean 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=false

Fallos 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 regla agent-arena-sql-execution-online; aprovisionar una regla no procesa puntuaciones sin workers.
  • Dependencias OpenTelemetry ausentes — no aparece traza aunque /ask responda. 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-v2 aunque el comando use policy-v1. Detén por completo el proceso que ocupa el puerto 8100.
  • Puerto equivocado — Chat usa http://localhost:8100. Si serving usa otro puerto, alinea VITE_SERVING_BASE o usa curl en 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_scores consulte 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 8100

scripts/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.

En esta página

ES