AI Prompt Engineering · Lektion

Bewertungs-Prompts mit Rubriken

Strukturierte Bewertungskriterien: Genauigkeit, Sprachfluss, Relevanz und Sicherheit auf Skalen von 1 bis 5.

Lektion 2 von 413 Schritte

Bewertungs-Prompts mit Rubriken ist eine kostenlose AI Prompt Engineering-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Prompt Engineering-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Prompt Engineering-Kurs umfasst insgesamt 4 Lektionen.

Was ist rubrikbasierte Bewertung?

Bei der rubrikbasierten Bewertung erhält der LLM-Judge eine strukturierte Reihe von Kriterien mit eindeutigen Definitionen für jede Bewertungsstufe. Statt zu fragen: „Wie gut ist das?“, fragen Sie: „Wie schneidet das in jeder dieser spezifischen Dimensionen ab?“

Bewertungsrubriken reduzieren Verzerrungen, erhöhen die Konsistenz und machen Evaluationsergebnisse verständlich und nutzbar.

Aufbau einer Bewertungsrubrik

Eine gut konzipierte Bewertungsrubrik besteht aus drei Komponenten:

  1. Kriteriennamen: Welche Dimensionen sollen bewertet werden (Genauigkeit, Vollständigkeit, Klarheit)
  2. Bewertungsanker: Eindeutige Definitionen dessen, was jede Bewertung für das jeweilige Kriterium bedeutet
  3. Gewichtung oder Priorität: Welche Kriterien für diesen Anwendungsfall am wichtigsten sind

Jede Komponente macht die Arbeit des Judges stärker eingegrenzt und reproduzierbarer.

Eine Bewertungsrubrik mit drei Kriterien als Prompt

Hier ist eine konkrete Vorlage für einen Bewertungsrubrik-Prompt zur Evaluation von KI-Antworten anhand von Genauigkeit, Vollständigkeit und Klarheit. Der Judge gibt strukturiertes JSON mit Bewertungen für jedes Kriterium zurück.

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)

Gewichtete Bewertung

Nicht alle Kriterien sind gleich wichtig. Bei einem Kundensupport-Bot ist die Hilfsbereitschaft wichtiger als der literarische Stil. Mit einer gewichteten Bewertung können Sie diese Prioritäten in der Berechnung der Gesamtbewertung ausdrücken.

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}
)

Kriterium: Faktische Genauigkeit

Faktische Genauigkeit ist das wichtigste Kriterium für wissensintensive Aufgaben. Eine spezielle Bewertungsrubrik für Genauigkeit weist den Judge an, gezielt auf falsche Fakten, veraltete Informationen und unbelegte Behauptungen zu achten.

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])

Kriterium: Vollständigkeit

Bei der Vollständigkeit wird geprüft, ob die Antwort jeden Teil einer mehrteiligen Frage behandelt. Dieses Kriterium erkennt Antworten, die zwar die erste Frage beantworten, aber die Anschlussfrage ignorieren, oder die allgemeine Antworten geben, obwohl konkrete Details verlangt wurden.

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])

Kriterium: Klarheit

Bei der Bewertung der Klarheit werden Lesbarkeit, Struktur und die Frage geprüft, ob die Antwort ihre Bedeutung der Zielgruppe tatsächlich vermittelt. Dieses Kriterium erkennt technisch korrekte, aber schlecht erklärte Antworten.

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])

Aufgabenspezifische Bewertungsrubriken

Allgemeine Bewertungsrubriken für Genauigkeit, Vollständigkeit und Klarheit funktionieren in vielen Fällen, aber aufgabenspezifische Bewertungsrubriken liefern für spezialisierte Anwendungsfälle bessere Evaluationsergebnisse. Passen Sie die Kriterien an das an, was für Ihre Anwendung tatsächlich wichtig ist.

# 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')

Konsistenztests für Bewertungsrubriken

Testen Sie Ihre Bewertungsrubrik auf Konsistenz, indem Sie dieselbe Antwort fünfmal mit leicht unterschiedlich formulierten Prompts senden und prüfen, ob die Bewertungen stabil bleiben. Eine hohe Varianz bedeutet, dass die Bewertungsrubrik nicht präzise genug spezifiziert ist.

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 valid

JSON vom Judge zurückgeben

Weisen Sie Judges, die Bewertungsrubriken verwenden, immer an, strukturiertes JSON zurückzugeben. Dadurch werden Bewertungen maschinenlesbar, eine automatische Aggregation wird ermöglicht und der Judge kann wichtige Nuancen nicht in Freitext verbergen, den Ihre Pipeline ignoriert.

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))

Bewertungsrubriken iterativ weiterentwickeln

Bewertungsrubriken müssen iterativ weiterentwickelt werden, damit sie zuverlässig funktionieren. Beginnen Sie mit einer einfachen Bewertungsrubrik mit drei Kriterien, wenden Sie sie auf 20–30 Testfälle an und vergleichen Sie die Ergebnisse mit menschlichen Bewertungen. Präzisieren Sie die Definitionen der Kriterien, bei denen die größten Abweichungen zwischen Judge und Menschen auftreten.

Häufige Anpassungen sind: Das Kriterium „Genauigkeit“ ist zu breit gefasst (teilen Sie es in faktische Genauigkeit und logische Konsistenz auf), das Kriterium „Klarheit“ vermischt Lesbarkeit und Kürze (trennen Sie sie) oder Bewertungsstufe 3 ist schlecht verankert (die meisten Antworten sammeln sich dort uneindeutig).

Wissenscheck: Bewertungsanker

Warum sollte eine Bewertungsrubrik ausdrückliche Beschreibungen enthalten, die festlegen, was jede Bewertungsstufe bedeutet (Bewertungsanker)?

Zusammenfassung: Prompts für rubrikbasierte Bewertung

Bei der rubrikbasierten Bewertung werden Antworten anhand mehrerer benannter Kriterien (Genauigkeit, Vollständigkeit, Klarheit) mit eindeutigen Bewertungsankern evaluiert, die festlegen, was jede Bewertungsstufe bedeutet. Bewertungsanker reduzieren Bewertungsinflation und erhöhen die Konsistenz. Verwenden Sie eine gewichtete Bewertung, um die für Ihren Anwendungsfall wichtigsten Kriterien zu priorisieren. Aufgabenspezifische Bewertungsrubriken (Support, Code, Kreativinhalte) übertreffen bei spezialisierten Anwendungen allgemeine Rubriken. Lassen Sie den Judge immer JSON zurückgeben, damit die Ergebnisse maschinenlesbar sind. Testen Sie die Konsistenz der Bewertungsrubrik, indem Sie dieselbe Evaluation mehrfach durchführen – eine hohe Standardabweichung weist auf eine unzureichend spezifizierte Bewertungsrubrik hin, die weiterentwickelt werden muss.

Kostenlos starten

Lerne AI Prompt Engineering mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
53
Lektionen
199

Häufig gestellte Fragen

Ist die Lektion „Bewertungs-Prompts mit Rubriken“ kostenlos?

Ja — der vollständige Text von „Bewertungs-Prompts mit Rubriken“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Prompt Engineering-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Prompt Engineering-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Bewertungs-Prompts mit Rubriken“?

Strukturierte Bewertungskriterien: Genauigkeit, Sprachfluss, Relevanz und Sicherheit auf Skalen von 1 bis 5. Du übst AI Prompt Engineering mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um AI Prompt Engineering zu starten?

Keine Vorkenntnisse erforderlich. AI Prompt Engineering auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Bewertungs-Prompts mit Rubriken“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser AI Prompt Engineering-Lektion Code schreiben und ausführen?

Ja. Jede AI Prompt Engineering-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. LLMs zur Bewertung von LLM-Ausgaben einsetzen
  2. Bewertungs-Prompts mit Rubriken
  3. Vergleichende Bewertung: A vs. B
  4. Kalibrierung und Bias bei LLM-Judges
← Zurück zu AI Prompt Engineering