Al construir flujos de trabajo de evaluación de prompts, los evaluadores (graders) proporcionan señales objetivas sobre la calidad del resultado. Un evaluador toma el resultado del modelo y devuelve algún tipo de retroalimentación medible, típicamente un número entre 1 y 10, donde 10 representa alta calidad y 1 representa baja calidad.
Tipos de evaluadores

Existen tres enfoques principales para evaluar los resultados de los modelos:
- Evaluadores de código - Evalúan los resultados de forma programática utilizando lógica personalizada
- Evaluadores de modelo - Utilizan otro modelo de IA para evaluar la calidad
- Evaluadores humanos - Personas que revisan y califican manualmente los resultados
Evaluadores de código
Los evaluadores de código te permiten implementar cualquier verificación programática que puedas imaginar. Los usos comunes incluyen:
- Verificar la longitud del resultado
- Verificar que el resultado contenga o no determinadas palabras
- Validación de sintaxis para JSON, Python o regex
- Puntuaciones de legibilidad
El único requisito es que tu código devuelva alguna señal medible cuando se ejecuta.
Evaluadores de modelo
Los evaluadores de modelo realizan una solicitud adicional a la API para evaluar el resultado original. Este enfoque ofrece una enorme flexibilidad para evaluar:
- Calidad de la respuesta
- Calidad del seguimiento de instrucciones
- Integridad
- Utilidad
- Seguridad
Evaluadores humanos
Los evaluadores humanos ofrecen la mayor flexibilidad, pero requieren mucho tiempo y son tediosos. Son útiles para evaluar:
- Calidad general de la respuesta
- Exhaustividad
- Profundidad
- Concisión
- Relevancia
Definición de criterios de evaluación

Antes de implementar cualquier evaluador, necesitas criterios de evaluación claros. Para un prompt de generación de código, podrías centrarte en:
- Formato - Debe devolver únicamente Python, JSON o Regex sin explicación
- Sintaxis válida - El código producido debe tener una sintaxis válida
- Seguimiento de la tarea - La respuesta debe abordar directamente la tarea del usuario con código preciso

Los primeros dos criterios funcionan bien con evaluadores de código, mientras que el seguimiento de la tarea es más adecuado para evaluadores de modelo debido a su flexibilidad.
Implementación de un evaluador de modelo
Así es como se construye una función de evaluador de modelo:
def grade_by_model(test_case, output):
# Crear prompt de evaluación
eval_prompt = """
You are an expert code reviewer. Evaluate this AI-generated solution.
Task: {task}
Solution: {solution}
Provide your evaluation as a structured JSON object with:
- "strengths": An array of 1-3 key strengths
- "weaknesses": An array of 1-3 key areas for improvement
- "reasoning": A concise explanation of your assessment
- "score": A number between 1-10
"""
messages = []
add_user_message(messages, eval_prompt)
add_assistant_message(messages, "```json")
eval_text = chat(messages, stop_sequences=["```"])
return json.loads(eval_text) La idea clave es pedir fortalezas, debilidades y razonamiento junto con la puntuación. Sin este contexto, los modelos tienden a recurrir por defecto a puntuaciones intermedias alrededor de 6. ## Integración del evaluador Actualiza tu función de caso de prueba para usar el evaluador de modelo: ``` def run_test_case(test_case): output = run_prompt(test_case) # Get model evaluation model_grade = grade_by_model(test_case, output) score = model_grade["score"] reasoning = model_grade["reasoning"] return \{ "output": output, "test_case": test_case, "score": score, "reasoning": reasoning \} ``` `` ## Cálculo de puntuaciones promedio Para obtener una métrica de rendimiento general, calcula la puntuación promedio en todos los casos de prueba: ``` from statistics import mean def run_eval(dataset): results = [] for test_case in dataset: result = run_test_case(test_case) results.append(result) average_score = mean([result["score"] for result in results]) print(f"Average score: \{average_score\}") return results ``` ` Esto te proporciona una métrica concreta y objetiva para rastrear el rendimiento del prompt a lo largo del tiempo. Aunque los evaluadores de modelo pueden ser algo inconsistentes, proporcionan un punto de partida para medir y mejorar tus prompts de manera sistemática. ` ``