Por qué no usamos LLMs para evaluar datos generados por LLMs
Evaluar diálogo generado por IA con otra IA crea un sistema circular en el que ambas comparten los mismos modos de fallo. Aquí tienes un fallo concreto que puede pasar por alto, y las métricas deterministas que usamos en su lugar.
Hay una práctica en la generación de datos sintéticos que, una vez que la ves, ya no puedes dejar de verla: evaluar contenido generado por IA pidiéndole a otra IA que lo puntúe.
“¿Era coherente este diálogo? Puntúa del 1 al 10.” “¿Se comportó esta persona de forma coherente? Sí/No.” “¿Es esta conversación emocionalmente realista?”
El problema no es que los LLMs sean malos evaluadores. El problema es que comparten los mismos modos de fallo que los sistemas que generaron los datos en primer lugar. Un modelo de lenguaje entrenado para producir diálogo psicológicamente coherente también tenderá a puntuar como coherente un diálogo psicológicamente incoherente, porque no modela la psicología: modela texto que suena a psicología.
Has construido un sistema circular. Los datos parecen buenos porque tu evaluador se entrenó con la misma distribución que los produjo.
Así es como se ve ese fallo en la práctica.
El fallo que un evaluador LLM no va a detectar
belief_hostility: 0.88
belief_trust_other: 0.12
communication_act: reassurance
text: "I know you're trying your best. I believe in you."
Es muy posible que un evaluador LLM lea esto y diga: “Es un turno amable y de apoyo. Calidad: alta.”
Un hablante que cree que el otro es hostil al máximo y cuya confianza es casi nula no ofrece, bajo un modelo psicológico coherente, palabras de tranquilidad. El texto es gramaticalmente correcto. La cognición está rota.
Este es el modo de fallo que genera datos de entrenamiento con un aspecto estupendo pero que producen modelos que no entienden por qué la gente dice lo que dice. Un evaluador LLM no lo marcará porque el turno, por sí solo, suena plausible. La incoherencia solo aparece cuando compruebas si el comportamiento encaja con el estado interno, y para eso hace falta conocer el estado interno en primer lugar.
Nosotros sí conocemos el estado interno: el motor lo calculó antes de generar el texto y va incluido en cada turno, así que esa comprobación se puede hacer contra los datos.
Las métricas
Nuestras métricas de evaluación son deterministas. Sin LLM. Solo numpy, scikit-learn y sentence-transformers.
Las 5 métricas estructurales (no necesitan salida del sistema)
Se ejecutan sobre el propio dataset generado, antes de que ningún sistema posterior lo vea.
noise_rejection_rate
Cada dataset contiene turnos ruidosos etiquetados: intervenciones en las que una persona miente, se retracta o se contradice a propósito. Esta métrica mide si el motor los marca correctamente en el campo is_noisy. Rango saludable: de 0,70 a 1,00.
identity_stability Una persona definida como “apego evitativo, estilo de comunicación despectivo, baja vulnerabilidad” debería comunicarse así durante toda la conversación, no solo en los tres primeros turnos. La estabilidad de identidad mide la similitud del coseno de las distribuciones de actos comunicativos entre segmentos de la misma conversación. Nuestro umbral es 0,85; por debajo, consideramos que la persona se ha desviado.
behavioral_entropy
Entropía de Shannon de la distribución de communication_act. Demasiado baja (< 0,40): la conversación es monótona, todo acusaciones o todo evasivas. Demasiado alta (> 0,85): completamente aleatoria, sin una personalidad reconocible. La comunicación humana realista vive entre esos límites.
belief_consistency La comprobación de coherencia interna del pipeline: correlaciona las variaciones de creencias con la propia tabla de actualización del motor, lo que la convierte en una comprobación del pipeline y no en una prueba independiente sobre la persona.
belief_volatility Las creencias no saltan de 0,2 a 0,9 en un turno. El cambio psicológico real es gradual. Esta métrica mide si las variaciones de creencias se mantienen dentro de límites realistas (de 0,05 a 0,30 por turno). Un rango saludable indica una dinámica de creencias estable pero sensible.
Las métricas comparativas (necesitan salida del sistema)
Se ejecutan cuando le das los datos a un modelo posterior y comparas sus salidas con las etiquetas de referencia.
fact_f1: ¿Extrajo el sistema los hechos correctos de la conversación? Se mide contra el campo de referencia extractable_facts.
reembedding_drift: ¿Derivan los embeddings semánticos del sistema en la misma dirección que las métricas del estado de la relación? Si rel_trust está bajando, los embeddings deberían reflejar una distancia semántica creciente.
affinity_smoothness: ¿Sigue la curva de afinidad modelada por el sistema una trayectoria realista? Se calcula como la inversa de la segunda derivada: los saltos bruscos se penalizan.
cross_model_consistency: Ejecuta el mismo escenario dos veces. ¿Produce el sistema salidas similares? Mide la reproducibilidad.
episodic_segmentation_recall: Las conversaciones tienen episodios: una apertura, una escalada, un giro, un intento de resolución. ¿Identifica el sistema correctamente esas fronteras?
Por qué esto importa para los datos de entrenamiento
Si estás construyendo un modelo de diálogo y evalúas tus datos de entrenamiento con un LLM, estás optimizando para “le suena bien a un modelo de lenguaje”. Eso no es nada, pero no es lo que de verdad quieres.
Lo que quieres es: ¿representan estos datos toda la distribución del comportamiento conversacional humano, incluidas sus incoherencias, su dinámica emocional y sus momentos de engaño deliberado?
Las métricas deterministas responden preguntas que los LLMs no pueden responder de forma fiable:
- ¿Cae la entropía conductual en un rango realista? (Un LLM llamará “coherente” a un diálogo monótono en lugar de “aburrido”.)
- ¿Se desvía la persona? (Puede que un LLM no note la desviación si cada turno es plausible por separado.)
No son preguntas difíciles de responder con estadística sencilla. Simplemente se hacen poco.
La contrapartida
Las métricas deterministas no lo detectan todo. No miden si el diálogo resulta atractivo, si el vocabulario suena natural para el arquetipo ni si la textura emocional es la adecuada. Tienen limitaciones reales.
Lo que sí te dan: no comparten los modos de fallo del generador y son reproducibles. El mismo dataset produce siempre las mismas puntuaciones. Eso las hace útiles como líneas base.
Si estás generando datos de diálogo sintético y los evalúas con la misma clase de modelo que los generó, probablemente estés produciendo datos rotos de forma sutil, de maneras que no puedes ver. Nos parece un problema que merece la pena resolver.
De la evaluación estática al comportamiento en tiempo real
Estas métricas no sirven solo para validar datasets. Salen de un sistema que simula cómo evolucionan las creencias y las relaciones turno a turno, de forma determinista, antes de que se genere el lenguaje.
También puedes generar un humano sintético y empezar una conversación en stratasynth.com/demo/try. La demo ejecuta nuestro motor de sesiones conversacionales y te permite hablar con una persona muestreada a partir de datos de población.
Los LLMs juzgan lo que suena bien. Las métricas deterministas miden lo que de verdad ocurrió en los datos.
StrataSynth genera datasets de diálogo sintético con base psicológica.
stratasynth.com | Datasets en HuggingFace | pip install stratasynth-client