TL;DR
Cuando un agente de IA realiza una accion, alguien tiene que decidir si esa accion es confiable. La via habitual es preguntarle a otro modelo de lenguaje (un juez LLM), lo que cuesta tokens, latencia y a veces enviar datos fuera de tu red. ZTC (Zero-Token Confidence) toma otro camino: lee el estado interno del propio modelo que ya hizo la inferencia y, a partir de esas senales, estima la confianza de la accion sin generar un solo token extra.
En nuestras mediciones, ZTC alcanza un AUC de 0.7289, practicamente a la par del juez LLM de referencia (JEV, AUC 0.7350), pero resuelve cada decision en 0.06 s frente a 0.59 s del juez. Es casi un orden de magnitud mas rapido, con cero tokens de generacion adicional, y corre on premise / en red cerrada porque no necesita llamar a ningun servicio externo.
Esta es una nota de ingenieria sobre que es ZTC, por que leer el estado interno funciona, y cuando conviene usarlo frente a un juez LLM.
Que problema resuelve ZTC?
En cualquier sistema agentico serio hay un segundo bucle de control: el modelo propone una accion (una respuesta, una llamada a herramienta, una consulta) y un componente de verificacion decide si esa accion se ejecuta, se bloquea o se escala a un humano. Ese componente es el que convierte un demo en un producto.
El patron dominante hoy es el juez LLM: se toma la salida del modelo y se envia a otro modelo con un prompt del estilo "evalua si esta respuesta es correcta y segura". Funciona, pero tiene tres costos que se acumulan a escala:
- Tokens. Cada juicio es otra inferencia completa. Si tu agente realiza miles de acciones por minuto, estas pagando dos modelos en lugar de uno.
- Latencia. El juez agrega cientos de milisegundos a cada accion, justo en la ruta critica del usuario.
- Superficie de datos. Si el juez es una API externa, cada decision implica sacar el contenido de tu red. En banca, salud o defensa eso suele ser inaceptable.
ZTC ataca los tres a la vez. En lugar de pedir una segunda opinion, aprovecha algo que el modelo ya produjo gratis durante la inferencia original.
Que es exactamente ZTC (Zero-Token Confidence)?
ZTC es un estimador de confianza que no genera texto. La idea central es simple de enunciar: cuando un modelo esta a punto de equivocarse, su estado interno se ve distinto a cuando esta seguro. Esa diferencia es medible.
Durante una inferencia normal, el modelo expone una enorme cantidad de senal que casi siempre se descarta: las distribuciones de probabilidad sobre el vocabulario en cada paso, la geometria de las representaciones internas, y los patrones de atencion. ZTC lee esas senales que ya existen y las convierte en un unico numero: la probabilidad de que la accion sea correcta.
El nombre lo dice todo. Cero tokens porque no hay generacion nueva: no se corre un segundo modelo, no se escribe un prompt de evaluacion, no se produce una sola palabra adicional. La parte de confianza es un clasificador ligero sobre esas senales internas, entrenado para separar acciones buenas de malas.
El contraste con el juez LLM es directo:
| Dimension | Juez LLM (JEV) | ZTC |
|---|---|---|
| Como decide | Genera una evaluacion con otro modelo | Lee el estado interno del modelo original |
| Tokens extra | Una inferencia completa por decision | Cero |
| Latencia por decision | 0.59 s | 0.06 s |
| AUC | 0.7350 | 0.7289 |
| Red cerrada / on premise | Depende de donde este el juez | Si, por diseno |
Que tan bueno es ZTC frente a un juez LLM?
La pregunta correcta no es "cual tiene mas AUC", sino "cuanta calidad cedo por cuanta velocidad gano". Los numeros:
- AUC: ZTC 0.7289 contra JEV 0.7350. La diferencia es de 0.0061, menos de un punto porcentual. En la practica, las dos curvas se solapan.
- Latencia: 0.06 s contra 0.59 s. ZTC es cercano a 10x mas rapido por decision.
- Costo de tokens: cero contra una inferencia completa. A escala, esto es la mitad del gasto de computo del sistema de verificacion.
Dicho de otra forma: pagas una perdida de calidad despreciable y a cambio recuperas latencia, presupuesto de tokens y soberania de datos. Para la mayoria de los bucles de control en produccion, ese intercambio es claramente favorable.
# Esquema conceptual (ilustrativo) del bucle de verificacion.
# El juez LLM corre una segunda inferencia; ZTC reutiliza lo que ya existe.
# --- Via tradicional: juez LLM ---
salida = modelo.generar(prompt) # inferencia 1
veredicto = juez_llm.generar( # inferencia 2: tokens + latencia + datos fuera
f"Evalua si esto es correcto: {salida}"
)
confianza = parsear(veredicto)
# --- Via ZTC: leer el estado interno ---
salida, estado = modelo.generar(prompt, exponer_estado=True) # misma inferencia
confianza = ztc.puntuar(estado) # clasificador ligero, 0 tokens generados
La clave del segundo bloque es exponer_estado=True: la senal que ZTC necesita se produce igualmente durante la inferencia. Solo hay que no tirarla.
Por que leer el estado interno funciona en absoluto?
Es razonable sospechar que un numero sin generar texto no puede competir con un modelo que razona en voz alta. La intuicion que lo explica es que el razonamiento del juez ya esta contenido, de forma comprimida, en la dinamica interna del modelo original.
Cuando el modelo esta seguro, concentra masa de probabilidad en pocos tokens y sus representaciones son estables. Cuando titubea, la distribucion se aplana, las representaciones se vuelven ambiguas y la senal se dispersa. Un juez LLM, en el fondo, vuelve a leer la misma salida para inferir esa incertidumbre. ZTC se salta el intermediario y mide la incertidumbre en la fuente.
Por eso el AUC queda tan cerca: ambos metodos miran la misma realidad subyacente. El juez la reconstruye con una segunda pasada cara; ZTC la observa directamente.
Cuando conviene ZTC y cuando un juez LLM?
ZTC no reemplaza todo. Es una herramienta con un perfil claro.
Usa ZTC cuando:
- La verificacion esta en la ruta critica y la latencia importa.
- El volumen de decisiones hace que duplicar inferencias sea caro.
- Operas en red cerrada o on premise y no puedes sacar datos a un juez externo.
- Necesitas un primer filtro barato que decida que acciones pasan y cuales se escalan.
Prefiere o combina con un juez LLM cuando:
- Necesitas una explicacion legible de por que una accion se rechazo.
- El dominio exige razonamiento multi paso sobre politicas complejas.
- Estas en el borde de decision y quieres una segunda opinion cara solo para los casos dudosos.
El patron mas potente es en cascada: ZTC filtra barato y rapido la gran mayoria de acciones, y solo los casos cerca del umbral pasan a un juez LLM. Asi obtienes la velocidad de ZTC en el caso comun y la profundidad del juez donde de verdad hace falta.
Que significa que corra en red cerrada?
Significa que todo el bucle de verificacion vive donde ya vive tu modelo. ZTC no hace llamadas de red, no depende de una API de terceros y no envia contenido fuera de tu infraestructura. Para sectores regulados esto no es un detalle de rendimiento, es la condicion que determina si puedes desplegar el sistema o no. Un juez LLM alojado por un proveedor externo convierte cada decision en una transferencia de datos; ZTC la mantiene dentro de tus paredes.
FAQ
Que significa "cero tokens" exactamente?
Que ZTC no genera texto nuevo para decidir. No corre una segunda inferencia ni escribe un prompt de evaluacion. Reutiliza las senales que la inferencia original ya produjo, asi que el costo marginal en tokens de generacion es cero.
ZTC es menos preciso que un juez LLM?
Marginalmente. AUC 0.7289 frente a 0.7350, una diferencia de 0.0061. En casi cualquier bucle de control esa brecha se compensa de sobra con 10x menos latencia y cero tokens extra.
Necesito reentrenar mi modelo base para usar ZTC?
No. El modelo base no cambia. ZTC es un clasificador ligero que se entrena sobre las senales internas que el modelo ya expone durante la inferencia.
Funciona con cualquier modelo?
Funciona con modelos cuyo estado interno sea accesible en tu despliegue, que es el caso tipico cuando sirves pesos abiertos on premise. Con una API cerrada que solo devuelve texto, no tienes acceso a esas senales y ZTC no aplica.
Puedo usar ZTC y un juez LLM juntos?
Si, y suele ser lo ideal. ZTC como primer filtro rapido y barato, y un juez LLM reservado para los casos cerca del umbral de decision. Obtienes velocidad en el caso comun y profundidad donde importa.
Por que no usar simplemente la probabilidad del token de salida?
Porque es solo una de las senales disponibles y por si sola es ruidosa. ZTC combina varias senales del estado interno en un unico estimador calibrado, lo que explica que se acerque tanto al juez LLM.
Further reading
- De los examenes al trabajo real: un modelo abierto de 180B lidera 10 clasificaciones oficiales de Hugging Face
- Como correr un modelo de 180B sin GPU: POCKET-Darwin-180B en GGUF con llama.cpp
Notas de ingenieria VIDRAFT. Las cifras provienen de nuestras mediciones internas; los bloques de codigo son ilustrativos.
Top comments (0)