Skapa en utvärderingsdatauppsättning och utvärderare (förhandsversion)

Important

Agentoptimeraren är för närvarande i förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

Agentoptimeraren utvärderar din agent mot en datauppsättning – en samling uppgifter – som utvärderarna har gjort. Du kan generera båda automatiskt från CLI eller skapa en datauppsättning manuellt för fullständig kontroll.

Båda delarna är viktiga för god optimering: datauppsättningen definierar vad som ska testas och utvärderarna definierar hur varje svar ska bedömas. Svaga utvärderare producerar bullriga poäng som leder till dålig optimering, så investera i starka utvärderare lika mycket som representativa uppgifter.

Att skapa dessa resurser är det andra steget i optimeringsarbetsflödet, efter att du har gjort din agent redo för optimering . Optimeraren använder dem för att poängsätta din baslinje och rangordna kandidater.

Förutsättningar

Det snabbaste sättet att skapa utvärderingstillgångar är med azd ai agent eval generate. Kommandot identifierar din agent automatiskt och genererar allt som optimeraren behöver:

azd ai agent eval generate

Som standard genererar den:

  • En startdatauppsättning med uppgifter som är anpassad för din agents domän.
  • Utvärderare som bedömer svar – en inbyggd utvärderare (till exempel builtin.task_adherence) samt en anpassad bedömningsmatris-utvärderare anpassad till din agent.
  • En runnable eval.yaml som kopplar ihop dem.

Den interaktiva guiden, icke-interaktiva flaggor och information om de genererade artefakterna finns i Initiera utvärderingstillgångar.

Efter genereringen identifierar azd ai agent optimize automatiskt eval.yaml:

azd ai agent optimize

Information om hur du anpassar de genererade tillgångarna finns i Anpassa utvärderare och Skapa en anpassad datauppsättning. Om du vill ändra körningsalternativen redigerar du eval.yaml; se Konfigurera optimeringskörningen.

Anpassa utvärderare (avancerat)

Utvärderare bedömer varje agentsvar. Optimeraren stöder två typer:

  • Inbyggda utvärderare, till exempel builtin.task_adherence, som poängsätter varje kriterium på aktivitetsnivå som godkänt eller misslyckat.
  • Anpassade bedömare för bedömningsmatriser, som bedömer svar utifrån flera kvalitetsdimensioner anpassade för din agent. azd ai agent eval generate skapar en automatiskt som en redigerbar rubric_dimensions.json fil.

För de flesta agenter ger den genererade bedömningsutvärderaren de mest meningsfulla resultaten eftersom den är skräddarsydd för din domän. Redigera den genererade rubric_dimensions.json för att förfina dimensioner och kör azd ai agent eval update sedan för att registrera ändringarna som en ny version. Mer information om hur du genererar, redigerar och versionsutvärderar utvärderare finns i Initiera utvärderingstillgångar.

Information om hur du kopplar utvärderare till körningskonfigurationen finns i Konfigurera optimeringskörningen.

Skapa en anpassad datauppsättning (avancerat)

Skapa en anpassad datauppsättning när du behöver exakt kontroll över testscenarier eller har produktionsdata att använda direkt. Den rekommenderade metoden är att iterera vidare på det ursprungsdataset som azd ai agent eval generate producerar – förfina det till ett lokalt dataset eller peka på ett annat dataset som redan är registrerat i ditt Foundry-projekt.

Välj en datauppsättningskälla

En datauppsättning kan komma från någon av två källor:

  • Foundry-datauppsättning – en datauppsättning som redan har registrerats i ditt Foundry-projekt. Hänvisa till den i eval.yaml av name och version.
  • Lokal datauppsättning – en JSONL-fil som du skapar och behåller i projektet. Hänvisa till den i eval.yaml med local_uri.

Båda källorna använder samma aktivitetsschema som beskrivs i nästa avsnitt. Information om eval.yaml ledningar finns i Konfigurera optimeringskörningen.

Schema för datauppsättning

En datauppsättning använder JSONL-format (JSON Lines). Varje rad är ett JSON-objekt som representerar en enda utvärderingsaktivitet – ett enskilt scenario. En uppgift har en fråga (query) och, om du vill, uppgiftsnivå criteria.

{"name": "task_1", "query": "Your prompt here"}
{"name": "task_2", "query": "Another prompt", "ground_truth": "Expected answer"}
Fält Obligatoriskt Description
name Ja Unik aktivitetsidentifierare (till exempel "greeting", "math_test").
query Ja Meddelandet som skickas till agenten.
ground_truth No Förväntat svar som används av utvärderare som stöder en referens.
criteria No Valfria kontroller på uppgiftsnivå. Se Lägg till villkor på aktivitetsnivå.

När du använder en lokal datauppsättning validerar du JSONL-syntaxen innan du kör optimering:

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

Lägg till kriterier på uppgiftsnivå

Villkor är valfria. De utvärderare som du konfigurerar i eval.yaml gäller för varje uppgift i datauppsättningen. Lägg till criteria per uppgift endast när en specifik uppgift behöver kontroller utöver de gemensamma evaluatorerna. När de finns poängsätts en uppgifts criteria och aggregeras tillsammans med de delade utvärderarna för att skapa uppgiftens övergripande poäng.

Fält Obligatoriskt Description
criteria[].name Ja Kort namn på kriteriet (till exempel "is_polite").
criteria[].instruction Ja Vad utvärderaren kontrollerar. Vara specifik och testbar.

Följande datauppsättning för kundsupport visar uppgifter med kriterier på uppgiftsnivå:

{"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"}]}

Råd för att skriva bra datauppsättningar

Inkludera gränsfall

Testa bortom den lyckliga vägen. Inkluderar:

  • Förfrågningar utanför omfånget – Indata som din agent bör avvisa eller omdirigera
  • Tvetydiga frågor – Uppgifter där agenten bör be om förtydligande
  • Kontradiktoriska indata – Försök att lura agenten till dåligt beteende
  • Uppgifter i flera steg – Komplexa begäranden som kräver strukturerade resonemang

Riktlinjer för storlek

Datamängdens storlek Kompromiss
3–5 uppgifter Snabb iteration, begränsad signal
5–10 uppgifter Bra balans mellan hastighet och täckning
10–20 uppgifter Omfattande utvärdering, längre körningar
Över 20 uppgifter Grundlig men långsam – överväg för slutlig validering

Större datamängder ger bredare täckning men tar längre tid att utvärdera.

Ange grund sanning när det är användbart

Fältet ground_truth ger utvärderarna ett referenssvar att jämföra med. Det krävs inte – utvärderare kan också bedöma svar utifrån sina instruktioner och eventuella uppgiftsspecifika kriterier.

{"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"}]}

Skriv promptar som om du vore en riktig användare

Använd faktiska meddelanden från dina användare om möjligt. Faktiska promptar fångar upp det ordval och den kontext som agenten möter i produktion, vilket också hjälper dig att skriva realistiska kriterier på uppgiftsnivå.

Var specifik i kriterier

Vaga kriterier leder till inkonsekvent bedömning. Gör varje kriterium specifikt och testbart.

Dålig:

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

Bra:

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

Troubleshooting

Problem Orsak Reparera
dataset not found Fel sökväg i eval.yaml För dataset.local_uri använder du en sökväg som är relativ i förhållande till konfigurationsfilens plats. För en Foundry-datauppsättning kontrollerar du dataset.name och dataset.version.
invalid JSON on line N Felaktigt JSONL Kontrollera att varje rad är giltig JSON. Sök efter avslutande kommatecken.
Poängen är inkonsekventa mellan körningar Vaga kriterier Gör kriterier specifika och testbara.