Wird geladen

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:

python
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. ` ``