Beim Aufbau von Workflows zur Prompt-Evaluierung liefern Bewertungssysteme objektive Signale über die Qualität der Ausgabe. Ein Grader nimmt die Modellausgabe entgegen und gibt eine Art messbares Feedback zurück - typischerweise eine Zahl zwischen 1 und 10, wobei 10 hohe Qualität und 1 schlechte Qualität darstellt.
Arten von Gradern

Es gibt drei Hauptansätze zur Bewertung von Modellausgaben:
- Code-Grader - Bewerten Ausgaben programmatisch mithilfe benutzerdefinierter Logik
- Modell-Grader - Verwenden ein weiteres KI-Modell, um die Qualität zu beurteilen
- Menschliche Grader - Lassen Menschen Ausgaben manuell überprüfen und bewerten
Code-Grader
Code-Grader ermöglichen es dir, jede beliebige programmatische Prüfung zu implementieren, die du dir vorstellen kannst. Häufige Anwendungen umfassen:
- Überprüfung der Ausgabelänge
- Überprüfung, ob die Ausgabe bestimmte Wörter enthält oder nicht enthält
- Syntaxvalidierung für JSON, Python oder Regex
- Lesbarkeitswerte
Die einzige Anforderung ist, dass dein Code ein verwertbares Signal zurückgibt - normalerweise eine Zahl zwischen 1 und 10.
Modell-Grader
Modell-Grader speisen deine ursprüngliche Ausgabe in einen weiteren API-Aufruf zur Bewertung ein. Dieser Ansatz bietet enorme Flexibilität bei der Beurteilung von:
- Antwortqualität
- Qualität der Befolgung von Anweisungen
- Vollständigkeit
- Hilfsbereitschaft
- Sicherheit
Menschliche Grader
Menschliche Grader bieten die größte Flexibilität, sind aber zeitaufwändig und mühsam. Sie sind nützlich zur Bewertung von:
- Allgemeine Antwortqualität
- Umfassendheit
- Tiefe
- Prägnanz
- Relevanz
Definition von Bewertungskriterien

Bevor du einen Grader implementierst, benötigst du klare Bewertungskriterien. Bei einem Prompt zur Codegenerierung könntest du dich auf Folgendes konzentrieren:
- Format - Sollte nur Python, JSON oder Regex ohne Erklärung zurückgeben
- Gültige Syntax - Der erzeugte Code sollte eine gültige Syntax haben
- Aufgabenbefolgung - Die Antwort sollte die Aufgabe des Nutzers direkt mit korrektem Code adressieren

Die ersten beiden Kriterien funktionieren gut mit Code-Gradern, während die Aufgabenbefolgung aufgrund ihrer Flexibilität besser für Modell-Grader geeignet ist.
Implementierung eines Modell-Graders
So baust du eine Modell-Grader-Funktion:
def grade_by_model(test_case, output):
# Erstelle Bewertungsprompt
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) Der entscheidende Punkt ist, nach Stärken, Schwächen und Begründung zusammen mit der Bewertung zu fragen. Ohne diesen Kontext tendieren Modelle dazu, standardmäßig mittelmäßige Bewertungen um 6 zu vergeben. ## Integration der Bewertung in deinen Workflow Aktualisiere deinen Testfall-Runner, um den Grader aufzurufen: ``` def run_test_case(test_case): output = run_prompt(test_case) # Grade the output 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 \} ``` `` Berechne schließlich einen durchschnittlichen Score über alle Testfälle: ``` 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 ``` ` Dies gibt dir eine objektive Metrik, die du verfolgen kannst, während du deinen Prompt iterierst. Obwohl Modell-Grader etwas unberechenbar sein können, bieten sie eine konsistente Baseline zur Messung von Verbesserungen. ` ``