Estaba construyendo un sistema multi-agente donde un router LLM despachaba solicitudes entrantes a uno de cuatro agentes especializados: un agente de código, un agente de análisis de datos, un agente de resumen y un agente de preguntas y respuestas generales. El paso de routing parecía un problema resuelto: alimentas la consulta, obtienes una categoría, sigues adelante.
Esa suposición se rompió rápidamente una vez que añadí telemetría.
El Hallazgo Contraintuitivo
Lo que esperaba: que las decisiones de routing con baja confianza fueran las costosas. El router dudaría, elegiría el agente equivocado, el agente fallaría o produciría un mal resultado, y el manejo de errores descendente entraría en acción.
Lo que ocurrió fue lo contrario. Las decisiones de baja confianza casi siempre activaban un camino de fallback que había configurado: cuando la confianza caía por debajo de 0.65, el sistema redirigía a través del agente de Q&A general como alternativa segura. Recuperable, aunque más lento.
El daño real vino de los errores de alta confianza. Cuando el router puntuaba una decisión con 0.92 o más pero aún así elegía el agente equivocado, dos cosas salían mal simultáneamente. Primero, el agente especializado recibía una solicitud para la que no estaba preparado y producía un resultado confiado pero incorrecto. Segundo, la lógica de recuperación de errores nunca se ejecutaba, porque el sistema confiaba en el confidence score del router.
Había configurado los reintentos y la escalación solo en las ramas de baja confianza. El camino de alta confianza no tenía red de seguridad.
Qué Cambié
Dejé de tratar la confianza como una puerta de paso/fallo y empecé a rastrear la distribución conjunta confianza-precisión: con qué frecuencia las decisiones de alta confianza eran realmente correctas y con qué frecuencia estaban equivocadas de forma costosa.
def log_route(qid, agent, score, label):
correct = agent == label
bucket = "high" if score >= 0.8 else "low"
metrics.increment(
"router.decision",
tags={
"correct": str(correct),
"confidence_bucket": bucket,
}
)Después de una semana recopilando esto, la tasa de errores de alta confianza era del 12%. No catastrófico de por sí, pero ese 12% de los casos no tenía fallback, por lo que se estaba propagando silenciosamente hacia las salidas finales.
La solución fue directa: añadir un paso de validación después de cada despacho de alta confianza. El agente especializado devuelve un self-check breve junto con su salida principal. Si el self-check falla, el sistema escala independientemente de lo que haya dicho el router.
La lección que saqué de esto: la calibración importa más que la precisión bruta en las capas de routing. Un router bien calibrado que sabe cuándo es incierto es más seguro que un router de alta precisión que no lo sabe.