Prompts de puntuación basados en rúbricas
Criterios de evaluación estructurados: precisión, fluidez, relevancia y seguridad (escalas de 1 a 5).
Prompts de puntuación basados en rúbricas es una lección gratuita de AI Prompt Engineering en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AI Prompt Engineering, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Prompt Engineering incluye 4 lecciones en total.
¿Qué es la puntuación basada en rúbricas?
La puntuación basada en rúbricas proporciona al juez LLM un conjunto estructurado de criterios con definiciones explícitas para cada nivel de puntuación. En lugar de preguntar «¿qué tan bueno es esto?», se pregunta «¿qué puntuación obtiene en cada una de estas dimensiones específicas?»
Las rúbricas reducen el sesgo, aumentan la coherencia y hacen que los resultados de la evaluación sean interpretables y útiles para actuar.
Anatomía de una rúbrica de puntuación
Una rúbrica bien diseñada tiene tres componentes:
- Nombres de los criterios: qué dimensiones se deben evaluar (exactitud, completitud y claridad)
- Anclajes de puntuación: definiciones explícitas de lo que significa cada puntuación para ese criterio
- Ponderación o prioridad: qué criterios son más importantes para este caso de uso
Cada componente hace que el trabajo del juez esté más acotado y sea más reproducible.
Plantilla de prompt con tres criterios
A continuación se muestra una plantilla concreta de prompt de rúbrica para evaluar respuestas de IA en cuanto a exactitud, completitud y claridad. El juez devuelve JSON estructurado con puntuaciones para cada criterio.
import anthropic
import json
client = anthropic.Anthropic(api_key='sk-ant-...')
RUBRIC_PROMPT = (
'Score this response on a scale of 1-5 for each criterion:\n\n'
'ACCURACY: Is the response factually correct?\n'
' 1=Contains significant factual errors\n'
' 3=Mostly correct with minor inaccuracies\n'
' 5=Completely accurate with no errors\n\n'
'COMPLETENESS: Did it answer everything asked?\n'
' 1=Missed most of the question\n'
' 3=Answered the main question but missed sub-parts\n'
' 5=Addressed every part of the question\n\n'
'CLARITY: Is it easy to understand?\n'
' 1=Confusing, hard to follow\n'
' 3=Understandable but could be clearer\n'
' 5=Exceptionally clear and well-organized\n\n'
'Question: {question}\n'
'Response: {response}\n\n'
'Return JSON: {{"accuracy": N, "completeness": N, "clarity": N, '
'"overall": N, "notes": "one sentence"}}'
)
def rubric_judge(question, response):
prompt = RUBRIC_PROMPT.format(question=question, response=response)
r = client.messages.create(
model='claude-opus-4-5',
max_tokens=200,
messages=[{'role': 'user', 'content': prompt}]
)
return json.loads(r.content[0].text)
result = rubric_judge(
question='What is a REST API?',
response='A REST API is a way for applications to communicate over HTTP.'
)
print(result)Puntuación ponderada
No todos los criterios tienen la misma importancia. En un bot de atención al cliente, la utilidad importa más que el estilo literario. La puntuación ponderada le permite expresar estas prioridades en el cálculo de la puntuación final.
import anthropic
import json
client = anthropic.Anthropic(api_key='sk-ant-...')
def weighted_rubric_judge(question, response, weights):
"""
weights: dict of criterion -> weight (should sum to 1.0)
Example: {'accuracy': 0.5, 'completeness': 0.3, 'clarity': 0.2}
"""
RUBRIC = (
'Score this response 1-5 on:\n'
'Accuracy: Is it factually correct?\n'
'Completeness: Does it cover the full question?\n'
'Clarity: Is it easy to understand?\n\n'
'Q: {q}\nA: {a}\n\n'
'Return JSON: {{"accuracy":N,"completeness":N,"clarity":N}}'
)
r = client.messages.create(
model='claude-opus-4-5',
max_tokens=100,
messages=[{'role': 'user', 'content': RUBRIC.format(q=question, a=response)}]
)
scores = json.loads(r.content[0].text)
# Calculate weighted average
weighted_score = sum(
scores[criterion] * weight
for criterion, weight in weights.items()
if criterion in scores
)
print(f'Individual scores: {scores}')
print(f'Weighted score: {weighted_score:.2f}/5')
return weighted_score
weighted_rubric_judge(
'How do I reverse a string in Python?',
'Use slicing: s[::-1]',
weights={'accuracy': 0.5, 'completeness': 0.3, 'clarity': 0.2}
)Criterio: exactitud factual
La exactitud factual es el criterio más importante para las tareas que requieren muchos conocimientos. Una rúbrica específica de exactitud indica al juez que compruebe especialmente los datos incorrectos, la información desactualizada y las afirmaciones sin fundamento.
ACCURACY_RUBRIC = (
'Evaluate FACTUAL ACCURACY of the following response.\n\n'
'Score 1-5:\n'
'1 = Multiple factual errors that fundamentally mislead the reader\n'
'2 = At least one significant factual error (wrong date, number, or core fact)\n'
'3 = Factually correct but includes minor imprecisions or over-generalizations\n'
'4 = Factually correct with appropriate hedging of uncertain claims\n'
'5 = Factually precise, no errors, and correctly acknowledges uncertainty where present\n\n'
'Check specifically for:\n'
'- Wrong dates, statistics, or numerical values\n'
'- Misattributed quotes or inventions\n'
'- Outdated information presented as current\n'
'- Claims stated with false confidence (should be hedged)\n\n'
'Q: {question}\nA: {response}\n\n'
'Score and list any errors found:'
)
print(ACCURACY_RUBRIC[:400])Criterio: completitud
La completitud comprueba si la respuesta aborda todas las partes de una pregunta con varios elementos. Este criterio detecta las respuestas que contestan la primera pregunta pero ignoran la pregunta de seguimiento, o que ofrecen respuestas generales cuando se solicitaron detalles específicos.
COMPLETENESS_RUBRIC = (
'Evaluate COMPLETENESS of this response.\n\n'
'First, list every distinct question or requirement in the original query.\n'
'Then, check whether the response addressed each one.\n\n'
'Score 1-5:\n'
'1 = Only addressed 0-20% of what was asked\n'
'2 = Addressed 20-50% — missed major components\n'
'3 = Addressed 50-80% — answered main question but missed sub-parts\n'
'4 = Addressed 80-95% — minor omissions only\n'
'5 = Addressed 100% — every requirement was met\n\n'
'Q: {question}\nA: {response}\n\n'
'Requirements checklist and completeness score:'
)
# This rubric forces the judge to decompose the question first,
# which is much more reliable than asking 'was it complete?'
print(COMPLETENESS_RUBRIC[:400])Criterio: claridad
La evaluación de la claridad comprueba la legibilidad, la estructura y si la respuesta comunica realmente su significado al público objetivo. Este criterio detecta respuestas técnicamente correctas pero mal explicadas.
CLARITY_RUBRIC = (
'Evaluate CLARITY of this response for a {audience} audience.\n\n'
'Score 1-5:\n'
'1 = Incomprehensible — cannot extract meaning\n'
'2 = Very hard to follow — excessive jargon, poor structure\n'
'3 = Understandable with effort — some confusing parts\n'
'4 = Clear and well-organized — easy to read\n'
'5 = Exceptionally clear — ideal structure, appropriate vocabulary, '
'no unnecessary complexity\n\n'
'Consider:\n'
'- Is the vocabulary appropriate for the audience?\n'
'- Is the response logically organized?\n'
'- Are sentences a readable length?\n'
'- Is the main point stated early and clearly?\n\n'
'Q: {question}\nA: {response}\n\n'
'Clarity score and key issues:'
)
# Parameterize the audience for context-aware clarity assessment
print(CLARITY_RUBRIC.format(
audience='non-technical business stakeholder',
question='What is an API?',
response='REST APIs use HTTP to transfer data between client and server.'
)[:300])Rúbricas específicas de la tarea
Las rúbricas genéricas de exactitud, completitud y claridad funcionan en muchos contextos, pero las rúbricas específicas de cada tarea producen mejores evaluaciones para casos de uso especializados. Personalice los criterios para que se ajusten a lo que realmente importa en su aplicación.
# Customer support response rubric
SUPPORT_RUBRIC = (
'Evaluate this customer support response:\n\n'
'EMPATHY (1-5): Does it acknowledge the customer emotion?\n'
'RESOLUTION (1-5): Does it provide a clear solution or next step?\n'
'TONE (1-5): Is it professional, warm, and not condescending?\n'
'EFFICIENCY (1-5): Does it avoid unnecessary words or boilerplate?\n\n'
'Customer message: {customer_message}\n'
'Support response: {support_response}\n\n'
'Scores and notes (JSON):'
)
# Code review rubric
CODE_REVIEW_RUBRIC = (
'Evaluate this code explanation:\n\n'
'CORRECTNESS (1-5): Is the code technically correct?\n'
'EDGE_CASES (1-5): Does it handle edge cases (empty input, errors)?\n'
'EFFICIENCY (1-5): Is it reasonably efficient (no obvious O(n^2) where O(n) is easy)?\n'
'READABILITY (1-5): Is the code easy to read and understand?\n\n'
'Task: {task}\n'
'Code: {code}\n\n'
'Scores and notes (JSON):'
)
print('Specialized rubrics produce better signal for your domain')Pruebas de coherencia de la rúbrica
Pruebe la coherencia de su rúbrica enviando la misma respuesta cinco veces con una redacción del prompt ligeramente diferente y comprobando si las puntuaciones se mantienen estables. Una variación elevada indica que la rúbrica está insuficientemente especificada.
import anthropic
import json
import statistics
client = anthropic.Anthropic(api_key='sk-ant-...')
def test_rubric_consistency(rubric_prompt, question, response, n_trials=5):
scores = []
for i in range(n_trials):
r = client.messages.create(
model='claude-opus-4-5',
max_tokens=100,
messages=[{'role': 'user', 'content': rubric_prompt.format(
question=question, response=response
)}]
)
try:
data = json.loads(r.content[0].text)
overall = data.get('overall', sum(data.values()) / len(data))
scores.append(overall)
except Exception:
scores.append(None)
valid = [s for s in scores if s is not None]
if valid:
print(f'Scores: {valid}')
print(f'Mean: {statistics.mean(valid):.2f}')
print(f'Std dev: {statistics.stdev(valid):.2f}')
if statistics.stdev(valid) > 0.5:
print('WARNING: High variance — rubric may be underspecified')
return validDevolver JSON desde el juez
Indique siempre en el prompt a los jueces basados en rúbricas que devuelvan JSON estructurado. Esto hace que las puntuaciones sean legibles por máquinas, permite la agregación automatizada y evita que el juez oculte matices importantes en texto libre que su canalización ignora.
import anthropic
import json
client = anthropic.Anthropic(api_key='sk-ant-...')
def structured_rubric_judge(question, response):
prompt = (
'Score this response 1-5 on three criteria and return JSON.\n\n'
'Q: {q}\nA: {a}\n\n'
'Return ONLY this JSON structure (no other text):\n'
'{{\n'
' "accuracy": <1-5>,\n'
' "completeness": <1-5>,\n'
' "clarity": <1-5>,\n'
' "overall": <1-5>,\n'
' "primary_issue": "<what most needs improvement>",\n'
' "primary_strength": "<what the response does best>"\n'
'}}'
).format(q=question, a=response)
r = client.messages.create(
model='claude-opus-4-5',
max_tokens=200,
messages=[{'role': 'user', 'content': prompt}]
)
text = r.content[0].text.strip()
# Strip markdown code fences if present
if text.startswith('###'):
text = text.split('###')[1]
if text.startswith('json'):
text = text[4:]
return json.loads(text.strip())
result = structured_rubric_judge(
'Explain big O notation.',
'Big O describes algorithm time complexity.'
)
print(json.dumps(result, indent=2))Iteración en el diseño de rúbricas
Las rúbricas requieren iteración para funcionar bien. Empiece con una rúbrica sencilla de tres criterios, ejecútela con entre 20 y 30 casos de prueba y compárela con las valoraciones humanas. Perfeccione las definiciones de los criterios en los puntos donde el juez y las personas discrepen más.
Necesidades habituales de perfeccionamiento: el criterio de exactitud es demasiado amplio (divídalo en exactitud factual y coherencia lógica), el criterio de claridad mezcla legibilidad y concisión (sepárelos) o el nivel de puntuación 3 está mal anclado (la mayoría de las respuestas se agrupan allí de forma ambigua).
Comprobación de conocimientos: anclajes de la rúbrica
¿Por qué debe incluir una rúbrica de puntuación descripciones explícitas de lo que significa cada nivel de puntuación (anclajes de puntuación)?
Repaso: prompts de puntuación basados en rúbricas
La puntuación basada en rúbricas evalúa las respuestas según varios criterios identificados por nombre (exactitud, completitud y claridad), con anclajes de puntuación explícitos que definen lo que significa cada nivel. Los anclajes reducen la inflación de puntuaciones y aumentan la coherencia. Use la puntuación ponderada para dar prioridad a los criterios más importantes para su caso de uso. Las rúbricas específicas de cada tarea (atención al cliente, código o contenido creativo) superan a las genéricas en aplicaciones especializadas. Devuelva siempre JSON desde el juez para obtener resultados legibles por máquinas. Compruebe la coherencia de la rúbrica ejecutando la misma evaluación varias veces: una desviación estándar elevada indica que la rúbrica está insuficientemente especificada y necesita perfeccionarse.
Aprende AI Prompt Engineering con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 53
- Lecciones
- 199
Preguntas frecuentes
¿La lección «Prompts de puntuación basados en rúbricas» es gratis?
Sí — el texto completo de «Prompts de puntuación basados en rúbricas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AI Prompt Engineering, actualiza a CoddyKit PRO. El curso de AI Prompt Engineering incluye 4 lecciones en total.
¿Qué aprenderé en «Prompts de puntuación basados en rúbricas»?
Criterios de evaluación estructurados: precisión, fluidez, relevancia y seguridad (escalas de 1 a 5). Practicas AI Prompt Engineering con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar AI Prompt Engineering?
No se requiere experiencia previa. AI Prompt Engineering en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Prompts de puntuación basados en rúbricas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de AI Prompt Engineering?
Sí. Cada lección de AI Prompt Engineering incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Uso de un LLM para evaluar salidas de otro LLM
- Prompts de puntuación basados en rúbricas
- Evaluación comparativa: A frente a B
- Calibración y sesgos en jueces LLM