En pocas palabras
Framework Python para evaluar sistemas LLM mediante métricas y casos de prueba.
Qué problema resuelve
Cambios de calidad que no se detectan con comparaciones textuales simples.
Cuándo utilizarlo
RAG, chatbots y agentes. Ejemplo: verificar relevancia y uso correcto de herramientas en CI.
De la idea a la práctica
Funcionamiento, ejemplos y decisiones para pasar al siguiente nivel.
En el Radar compartido: Trial (valoración de la edición aportada).
Cómo funciona
Combina casos de prueba con métricas de respuestas, contexto y comportamiento del agente. Permite definir criterios específicos y ejecutar evaluaciones en el flujo de desarrollo.
Ejemplo de uso
Preparar preguntas con contexto y respuestas esperadas, incluyendo casos sin información suficiente. Comparar versiones por corrección, abstención adecuada y llamadas a herramientas.
Prueba al estilo Pytest
# test_asistente.py
from deepeval import assert_test
from deepeval.test_case import LLMTestCase, LLMTestCaseParams
from deepeval.metrics import AnswerRelevancyMetric, FaithfulnessMetric, GEval
correccion = GEval(
name="Corrección",
criteria="La respuesta debe coincidir en fechas e importes con la respuesta esperada.",
evaluation_params=[
LLMTestCaseParams.INPUT,
LLMTestCaseParams.ACTUAL_OUTPUT,
LLMTestCaseParams.EXPECTED_OUTPUT,
],
threshold=0.7,
)
def test_vencimiento_cuota():
pregunta = "¿Cuándo vence mi próxima cuota?"
contexto = ["La cuota 7 del crédito 42 vence el 5 de noviembre por 250 000 COP."]
caso = LLMTestCase(
input=pregunta,
actual_output=asistente.responder(pregunta, contexto),
expected_output="El 5 de noviembre, por 250 000 COP.",
retrieval_context=contexto,
)
assert_test(caso, [AnswerRelevancyMetric(threshold=0.7), FaithfulnessMetric(threshold=0.8), correccion])
deepeval test run test_asistente.py
Catálogo de métricas
| Familia | Métricas | Pregunta |
|---|---|---|
| RAG – generación | Answer relevancy, Faithfulness | ¿Responde a lo pedido? ¿Se basa en el contexto? |
| RAG – recuperación | Contextual precision, recall, relevancy | ¿Se recuperaron los fragmentos correctos? |
| Agentes | Tool correctness, Task completion, Argument correctness | ¿Usó las herramientas adecuadas y logró el objetivo? |
| Personalizadas | G-Eval, DAG (árbol de decisiones) | Criterios propios del dominio |
| Seguridad | Bias, Toxicity, PII leakage, red teaming | ¿Hay respuestas dañinas o fugas? |
| Conversación | Knowledge retention, Role adherence, Conversation completeness | Calidad en diálogos de varios turnos |
Separar las métricas de recuperación de las de generación permite saber si un fallo se debe al buscador o al modelo.
Datasets y generación sintética
EvaluationDataset agrupa casos reutilizables, y el Synthesizer genera preguntas a partir de documentos para arrancar un conjunto de pruebas. Revisa los casos generados: incluye preguntas reales de usuarios, preguntas sin respuesta en las fuentes y casos adversariales (synthetic data).
En CI
Ejecuta un subconjunto rápido en cada pull request y la batería completa de forma programada. Fija el modelo evaluador y su versión: cambiar el juez cambia las puntuaciones. Los resultados pueden enviarse a Confident AI (la plataforma de los autores) o compararse localmente. La técnica de fondo está en LLM as a judge.
Criterios de implementación
Fijar dataset, rúbrica y modelo evaluador; revisar falsos positivos. Separar verificaciones deterministas, como argumentos válidos, de puntuaciones generadas por otro modelo.
Continúa en las fuentes
Documentación oficial para verificar detalles y explorar más.