Últimamente circula un género de artículos sobre “agentes de IA listos para producción” que prometen apilar restricciones deterministas sobre la incertidumbre de los LLM. La dirección es correcta —los bucles ReAct definitivamente necesitan guardarraíles—, pero ¿realmente funcionan los mecanismos concretos que proponen?
Para averiguarlo, ejecuté cuatro experimentos. Y la conclusión es contundente: los tres pilares del “determinismo” que estos artículos promocionan fallan en la capa semántica. Incluso mi propio intento de arreglarlos con modelos de embeddings también falló.
“El problema no es la dirección. Es el aterrizaje. Estos artículos tratan tres mecanismos específicos como respuestas resueltas, y su comportamiento real no sobrevive a la medición.”
Experimento 1: ¿Solapamiento léxico = semántica?
El primer mecanismo propone usar umbrales de solapamiento léxico (Jaccard similarity) para decidir si la interjección de un usuario es una nueva tarea o una adenda a la tarea actual. Los umbrales mágicos: ≥0.24 misma tarea, ≤0.08 nueva tarea.
Resultado: 50% de clasificaciones erróneas. En 30 pares etiquetados, el algoritmo acertó solo el 44% de las veces. Los peores casos:
- “Elimina el artículo sobre loop engineering” se clasificó como “misma tarea que escribir el artículo” (solapamiento 0.615). ¡El usuario dijo eliminar y el sistema siguió escribiendo!
- “La página de pago está fallando” vs “arregla el bug del checkout” tuvo solapamiento 0.000 → clasificado como nueva tarea, cuando cualquier humano ve la misma tarea.
Las paráfrasis, los pares cross-lingüísticos y los antónimos fueron los peores: 0/16 aciertos. Los umbrales solo funcionan en casos fáciles.
Experimento 2: Temperatura 0 ≠ determinismo
El segundo pilar: poner el evaluador a temperatura 0.0 para que las evaluaciones sean “casi enteramente deterministas”. Probé el mismo prompt 20 veces con temperatura 0 en tres categorías.
Resultado: el texto abierto solo fue 70% consistente. Mientras que las matemáticas (17×23=391) fueron 100% deterministas, la evaluación creativa produjo 5 versiones distintas en 20 ejecuciones, con una similitud mínima de solo 0.198 entre pares.
El evaluador LLM genera campos como reason y evidence que son inherentemente abiertos. La temperatura 0 solo es determinista cuando el espacio de respuestas es muy reducido. En cuanto hay cualquier apertura, el determinismo se rompe.
“La reproducibilidad del evaluador es los cimientos de todo el motor de bucles. Evaluación inestable → señal de ‘done’ inestable → máquina de estados de decisión inestable.”
Experimento 3: Compuerta de fase ≠ finalización de tarea
El tercer mecanismo —y el más audaz— promete transformar “la finalización de tareas, de una autodeclaración del LLM a un hecho objetivo verificable”. La compuerta de fase verifica: ¿el script salió con código 0?, ¿existe el archivo?, ¿se cumplió el conteo de archivos?
Resultado: 100% de tasa de aprobación, 50% de contenido correcto. La compuerta dejó pasar un pato que dice “cuac cuac”, un punto solitario, archivos con solo “TODO”, y tests con 0 casos ejecutados. Los cuatro falsos positivos pasaron la compuerta.
El problema fundamental: la compuerta verifica que una acción ocurrió, no que el resultado sea correcto. Entre ambos conceptos hay una brecha semántica que ningún chequeo de existencia de archivos puede cruzar.
Experimento 4: Mi propia solución también falló
Preparé un “upgrade constructivo”: usar embeddings neuronales (Qwen3-embedding:0.6b, 1024 dimensiones) para separar sinónimos de antónimos. El resultado fue igual de frustrante:
- Sinónimos: similitud media 0.766
- Antónimos: similitud media 0.739
- Diferencia: apenas 0.026 — demasiado cerca para separar.
“Optimiza el rendimiento del código” vs “No optimices el rendimiento del código” tuvo una similitud de 0.881, más alta que 10 de los 12 pares de sinónimos. Los embeddings solo pueden separar “relacionado” de “no relacionado”, no distinguir dirección.
Conclusión honesta
Bajo el stack tecnológico actual, este problema no tiene una solución puramente técnica. Cuando un usuario interjecta algo direccionalmente ambiguo, la ingeniería no debería dejar que un algoritmo decida unilateralmente. La opción correcta es detectar la superposición temática y preguntar al humano. No auto-adjudicar.
“Si quieres un agente autónomo sin supervisión —ni el diseño del género ni el mío te llevan allí hoy. Si debes garantizar cero clasificaciones erróneas —la confirmación humana es la única estrategia conocida.”
La lección: No copies umbrales mágicos. No confíes en que temperatura 0 te dé determinismo. No asumas que una compuerta de fase aprobada significa que la tarea está hecha. Y no asumas que un modelo de embeddings te compra semántica. Cada una de estas afirmaciones tiene datos de medición que las refutan.
Sigue explorando estos temas en el blog de DojoFullStack. La ingeniería de agentes de IA es un campo fascinante donde la medición honesta vale más que las promesas grandiosas.