Erstellen Sie einen Evaluierungsdatensatz und Evaluatoren (Vorschau)

Important

Agent Optimizer ist derzeit als Vorschau verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und sollte nicht für Produktionsworkloads verwendet werden. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Supplementale Nutzungsbedingungen für Microsoft Azure Previews.

Der Agent-Optimierer wertet Ihren Agent anhand eines Datasets aus – eine Sammlung von Aufgaben mit Auswertungskriterien – bewertet von Evaluatoren. Sie können beides entweder automatisch über die CLI generieren oder für die volle Kontrolle einen Datensatz manuell erstellen.

Voraussetzungen

Die schnellste Möglichkeit zum Erstellen von Auswertungsressourcen ist mit azd ai agent eval generate. Der Befehl erkennt Ihren Agenten automatisch, generiert dann sowohl einen Datensatz als auch adaptive Evaluatoren, die auf die Domäne Ihres Agenten abgestimmt sind, und erstellt eine ausführbare eval.yaml:

azd ai agent eval generate

Informationen zum interaktiven Assistenten, zu nicht-interaktiven Flags, zu den generierten Artefakten und zum vollständigen Auswertungsablauf finden Sie unter Auswertungsressourcen initialisieren.

Nachdem eval generate abgeschlossen ist, erkennt azd ai agent optimize das generierte eval.yaml automatisch:

azd ai agent optimize

Oder übergeben Sie es explizit:

azd ai agent optimize --config eval.yaml

Manuelles Erstellen eines benutzerdefinierten Datasets (erweitert)

Um die vollständige Kontrolle über Auswertungsaufgaben und -kriterien zu erhalten, erstellen Sie ein JSONL-Dataset manuell. Dies ist nützlich, wenn Sie präzise Kontrolle über Testszenarien benötigen oder produktionsbezogene Daten direkt verwenden müssen.

azd ai agent optimize verwendet standardmäßig einen integrierten Datensatz mit 3 allgemeinen Programmieraufgaben und 25 Kriterien. Um eine sinnvolle Optimierung Ihres spezifischen Agents zu ermöglichen, erstellen Sie ein benutzerdefiniertes Dataset , das die realen Anwendungsfälle Ihres Agenten widerspiegelt.

Datensatzformat

Datasets verwenden das JSONL-Format (JSON Lines). Jede Zeile ist ein JSON-Objekt, das eine einzelne Auswertungsaufgabe darstellt. Eine Aufgabe ist ein einzelnes Szenario im Dataset. Sie enthält einen Prompt und Bewertungskriterien.

{"name": "task_1", "query": "Your prompt here", "criteria": [{"name": "criterion_name", "instruction": "What the evaluator checks for"}]}
{"name": "task_2", "query": "Another prompt", "criteria": [{"name": "check_1", "instruction": "..."}, {"name": "check_2", "instruction": "..."}]}

Feldreferenz

Feld Erforderlich Description
name Ja Eindeutige Aufgabenkennung (z. B. "greeting", "math_test")
query Ja Die an den Agent gesendete Nachricht
criteria Ja Array von Bewertungskriterien – Regeln, die definieren, wie "gut" für die Aufgabe aussieht
criteria[].name Ja Kurzname für das Kriterium (z. B "is_polite". )
criteria[].instruction Ja Was der Evaluator überprüft. Seien Sie spezifisch und testbar. Der integrierte Evaluator (builtin.task_adherence) bewertet jedes Kriterium unabhängig als binärer Wert (0 oder 1).
ground_truth No Erwartete Antwort (verwendet von einigen Bewertern für Referenz)

Beispiel: Kundendienstmitarbeiter

{"name": "refund_policy", "query": "What is your refund policy?", "criteria": [{"name": "mentions_30_days", "instruction": "Response must mention the 30-day refund window"}, {"name": "polite_tone", "instruction": "Response must be professional and empathetic"}]}
{"name": "order_status", "query": "Where is my order #12345?", "criteria": [{"name": "asks_for_details", "instruction": "Agent should ask for email or order details to look up the order"}, {"name": "no_hallucination", "instruction": "Agent must NOT make up a fake order status"}]}
{"name": "out_of_scope", "query": "Can you help me fix my car?", "criteria": [{"name": "polite_decline", "instruction": "Agent should politely explain this is outside its scope"}, {"name": "redirect", "instruction": "Agent should suggest contacting an appropriate service"}]}

Beispiel: Codierungs-Assistent

{"name": "python_function", "query": "Write a Python function to reverse a linked list", "criteria": [{"name": "correct_algorithm", "instruction": "The function must correctly reverse a singly linked list"}, {"name": "handles_empty", "instruction": "The function must handle an empty list without errors"}, {"name": "includes_docstring", "instruction": "The function should include a descriptive docstring"}]}
{"name": "explain_concept", "query": "Explain what a closure is in JavaScript", "criteria": [{"name": "accurate_definition", "instruction": "Must correctly define a closure as a function that captures variables from its enclosing scope"}, {"name": "includes_example", "instruction": "Must include at least one working code example"}]}

Verwenden eines benutzerdefinierten Datasets

Verweisen Sie in einer YAML-Konfigurationsdatei auf Ihr Dataset:

# eval.yaml
agent:
  name: my-agent

dataset_file: ./my_eval_dataset.jsonl

evaluators:
  - builtin.task_adherence

options:
  eval_model: gpt-4.1-mini
  optimization_model: gpt-5.1
  max_iterations: 5

Führen Sie dann Folgendes aus:

azd ai agent optimize --config eval.yaml

Überprüfen Sie vor dem Ausführen des Befehls die JSONL-Syntax:

python -c "import json; [json.loads(l) for l in open('my_eval_dataset.jsonl')]"

Tipps zum Schreiben guter Datasets

In Kriterien spezifisch sein

Schlecht:

{"name": "good_answer", "instruction": "The response should be good"}

Gut:

{"name": "mentions_30_days", "instruction": "Response must explicitly mention the 30-day refund window"}

Bestimmte Kriterien geben dem Evaluator ein klares, binäres Signal. Vage Kriterien führen zu einer inkonsistenten Bewertung.

Randfälle berücksichtigen

Testen Sie über den „Happy Path“ hinaus. Einfügen:

  • Anfragen außerhalb des Zuständigkeitsbereichs — Eingaben, die Ihr Agent ablehnen oder weiterleiten sollte
  • Mehrdeutige Abfragen – Aufgaben, bei denen der Agent nach Klärung fragen sollte
  • Adversariale Eingaben – Versuche, den Agenten zu schlechtem Verhalten zu verleiten
  • Mehrstufige Aufgaben – Komplexe Anforderungen, die strukturiertes Denken erfordern

Größenrichtlinien

Datasetgröße Kompromiss
3–5 Aufgaben Schnelle Iteration, begrenztes Signal
5–10 Aufgaben Gute Balance zwischen Geschwindigkeit und Abdeckung
10–20 Aufgaben Umfassende Auswertung, längere Läufe
20+ Aufgaben Gründlich, aber langsam – erwägen Sie die endgültige Validierung

Jeder Vorgang kann mehrere Kriterien aufweisen. Ein Dataset mit 5 Vorgängen × jeweils 4 Kriterien = 20 Auswertungssignale.

Schreiben Sie Prompts wie echte Nutzer

Verwenden Sie nach Möglichkeit tatsächliche Nachrichten von Ihren Benutzern. Echte Eingabeaufforderungen erfassen das Vokabular und den Kontext, mit dem Ihr Agent in der Produktion konfrontiert ist.

Kriterien werden unabhängig bewertet.

Jedes Kriterium erhält eine binäre Bewertung (0 oder 1). Die Aufgabenbewertung ist der Durchschnitt der Kriterienbewertungen. Die Gesamtpunktzahl ist der Durchschnitt über alle Aufgaben hinweg. Dies bedeutet Folgendes:

  • Eine Aufgabe mit 4 Kriterien, bei der 3 bestandene Kriterien 0,75 ergeben
  • Ein Agent, der bei 2 von 3 Aufgaben alle Kriterien erfüllt, erreicht 0,67.

Ground Truth ist optional.

Das ground_truth Feld stellt eine Referenzantwort für Evaluatoren bereit, die es unterstützen. Dieses Feld ist nicht erforderlich. Der builtin.task_adherence Bewerter funktioniert vollständig aus Kriterienanweisungen.

{"name": "geography_fact", "query": "What is the largest city in France by population?", "ground_truth": "Paris", "criteria": [{"name": "correct_answer", "instruction": "Response must state that Paris is the largest city in France by population"}]}

Problembehandlung

Problem Ursache Beheben
dataset_file not found Falscher Pfad in eval.yaml Verwenden eines Pfads relativ zum Speicherort der Konfigurationsdatei
invalid JSON on line N Falsch formatierter JSONL-Code Überprüfen Sie, ob jede Zeile json gültig ist. Überprüfen Sie auf abschließende Kommas.
Die Punktzahlen sind zwischen den Durchläufen inkonsistent. Vage Kriterien Kriterien spezifisch und binärtestbar machen