Creare un set di dati di valutazione e analizzatori (anteprima)

Importante

Agent Optimizer è attualmente in anteprima. Questa anteprima viene fornita senza un contratto di servizio e non è consigliabile per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero avere funzionalità limitate. Per ulteriori informazioni, vedere Condizioni supplementari per l'uso delle versioni di anteprima di Microsoft Azure.

L'ottimizzatore dell'agente valuta il tuo agente rispetto a un dataset, ovvero una raccolta di compiti con criteri di valutazione, a cui viene assegnato un punteggio dai valutatori. È possibile generare entrambi automaticamente dall'interfaccia della riga di comando o creare manualmente un set di dati per il controllo completo.

Prerequisiti

Il modo più rapido per creare asset di valutazione è con azd ai agent eval generate. Il comando rileva automaticamente l'agente, quindi genera sia un set di dati che gli analizzatori adattivi ottimizzati per il dominio dell'agente e scrive un eseguibile eval.yaml:

azd ai agent eval generate

Per la procedura guidata interattiva, i flag non interattivi, gli artefatti generati e il flusso di lavoro di valutazione completo, vedere Inizializzare gli asset di valutazione.

Dopo il completamento di eval generate, azd ai agent optimize rileva automaticamente eval.yaml generato:

azd ai agent optimize

Oppure passarlo in modo esplicito:

azd ai agent optimize --config eval.yaml

Creare manualmente un set di dati personalizzato (avanzato)

Per il controllo completo sulle attività e i criteri di valutazione, creare un set di dati JSONL a mano. Ciò è utile quando è necessario un controllo preciso sugli scenari di test o avere dati di produzione da usare direttamente.

Per impostazione predefinita, azd ai agent optimize usa un set di dati predefinito con 3 attività di codifica generali e 25 criteri. Per un'ottimizzazione significativa dell'agente specifico, creare un set di dati personalizzato che rifletta i casi d'uso reali dell'agente.

Formato del dataset

I set di dati usano il formato JSONL (json lines). Ogni riga è un oggetto JSON che rappresenta una singola attività di valutazione. Un'attività è un singolo scenario nel set di dati. Contiene un prompt e criteri di valutazione.

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

Informazioni di riferimento sul campo

Campo Obbligatorio Descrizione
name Identificatore univoco dell'attività (ad esempio, "greeting", "math_test")
query Messaggio inviato all'agente
criteria Matrice di criteri di valutazione: regole che definiscono l'aspetto "buono" per l'attività
criteria[].name Nome breve per il criterio (ad esempio, "is_polite")
criteria[].instruction Che cosa controlla l'analizzatore . Essere specifici e testabili. L'analizzatore predefinito (builtin.task_adherence) assegna punteggi a ogni criterio in modo indipendente come valore binario (0 o 1).
ground_truth No Risposta prevista (usata da alcuni analizzatori per riferimento)

Esempio: Agente di supporto clienti

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

Esempio: Assistente per la scrittura del codice

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

Usare un set di dati personalizzato

Fare riferimento al set di dati in un file di configurazione YAML:

# 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

Poi eseguire:

azd ai agent optimize --config eval.yaml

Prima di eseguire il comando, convalidare la sintassi JSONL:

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

Suggerimenti per la scrittura di set di dati validi

Essere specifici nei criteri

Scadente:

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

Buono:

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

I criteri specifici forniscono all'analizzatore un segnale binario chiaro e chiaro. I criteri vaghi comportano un punteggio incoerente.

Includere i casi limite

Esegui i test al di là dello scenario ideale. Includere:

  • Richieste fuori ambito — input che il tuo agente dovrebbe rifiutare o reindirizzare
  • Query ambigue : attività in cui l'agente deve richiedere chiarimenti
  • Input avversari — Tentativi di indurre l'agente a comportarsi in modo scorretto
  • Attività in più passaggi : richieste complesse che richiedono un ragionamento strutturato

Linee guida per le dimensioni

Dimensioni del set di dati Compromesso
3-5 attività Iterazione rapida, segnale limitato
5-10 attività Buon equilibrio tra velocità e copertura
10-20 attività Valutazione completa, esecuzioni di maggiore durata
20+ attività Accurato ma lento: prendere in considerazione la convalida finale

Ogni attività può avere più criteri. Un set di dati con 5 attività × 4 criteri ogni = 20 segnali di valutazione.

Scrivere richieste come utenti reali

Se possibile, usare i messaggi effettivi degli utenti. I prompt reali racchiudono il vocabolario e il contesto che il tuo agente affronta in produzione.

I criteri vengono valutati indipendentemente

Ogni criterio ottiene un punteggio binario (0 o 1). Il punteggio dell'attività è la media dei punteggi dei criteri. Il punteggio complessivo è la media di tutte le attività. Ciò significa:

  • Un'attività con 4 criteri in cui 3 corrispondono a un punteggio di superamento di 0,75
  • Un agente che supera tutti i criteri su 2 di 3 attività assegna 0,67

La verità di riferimento è facoltativa

Il ground_truth campo fornisce una risposta di riferimento per gli analizzatori che lo supportano. Questo campo non è obbligatorio. Il valutatore builtin.task_adherence opera esclusivamente sulla base delle istruzioni dei criteri.

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

Risoluzione dei problemi

Problema Motivo Correzione
dataset_file not found Percorso errato in eval.yaml Usare un percorso relativo al percorso del file di configurazione
invalid JSON on line N JSONL non valido Verificare che ogni riga sia json valido. Verificare la presenza di virgole finali.
I punteggi sono incoerenti tra le esecuzioni Criteri vaghi Rendere specifici e verificabili in modo binario i criteri