Wird geladen

Modellbasierte Bewertung

Lektion 1415 Min.

Beim Aufbau von Workflows zur Prompt-Evaluierung liefern Grader objektive Signale über die Qualität der Ausgabe. Ein Grader nimmt die Modellausgabe 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 bewerten
  • Menschliche Grader – Lassen Menschen Ausgaben manuell überprüfen und bewerten

Code-Grader

Mit Code-Gradern kannst du jede programmatische Prüfung implementieren, die du dir vorstellen kannst. Häufige Anwendungsfälle sind:

  • Überprüfung der Ausgabelänge
  • Überprüfung, ob die Ausgabe bestimmte Wörter enthält oder nicht
  • Syntaxvalidierung für JSON, Python oder Regex
  • Lesbarkeitswerte

Die einzige Voraussetzung ist, dass dein Code bei der Ausführung ein messbares Signal zurückgibt.

Modell-Grader

Modell-Grader stellen eine zusätzliche API-Anfrage, um die ursprüngliche Ausgabe zu bewerten. Dieser Ansatz bietet enorme Flexibilität bei der Bewertung 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 zeitintensiv und mühsam. Sie sind nützlich für die Bewertung von:

  • Allgemeine Antwortqualität
  • Umfassendheit
  • Tiefe
  • Prägnanz
  • Relevanz

Definition von Bewertungskriterien

Bevor du einen Grader implementierst, benötigst du klare Bewertungskriterien. Für einen Code-Generierungs-Prompt 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:

python
def grade_by_model(test_case, output):
    # Bewertungs-Prompt erstellen
    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, neben der Bewertung auch nach Stärken, Schwächen und Begründung zu fragen. Ohne diesen Kontext tendieren Modelle dazu, standardmäßig mittelmäßige Bewertungen um 6 zu vergeben. ## Integration des Graders Aktualisiere deine Testfall-Funktion, um den Modell-Grader zu verwenden: ``` 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 \} ``` `` ## Berechnung der durchschnittlichen Bewertungen Um eine Gesamtleistungsmetrik zu erhalten, berechne die durchschnittliche Bewertung ü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 ``` ` Das gibt dir eine konkrete, objektive Metrik, um die Prompt-Leistung im Laufe der Zeit zu verfolgen. Obwohl Modell-Grader etwas inkonsistent sein können, bieten sie einen Ausgangspunkt, um deine Prompts systematisch zu messen und zu verbessern. ` ``