Creare un set di dati di valutazione (anteprima)

Importante

Agent Optimizer è attualmente in anteprima limitata ed è disponibile solo tramite un processo di iscrizione. Per accedere al servizio, completare il modulo di assunzione. 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 attività con criteri di valutazione. È possibile generare automaticamente un set di dati dall'interfaccia della riga di comando o crearne uno manualmente per il controllo completo.

Prerequisiti

Il modo più rapido per creare un set di dati di valutazione è con azd ai agent eval init. Questo comando genera un set di dati e analizzatori adattivi ottimizzati per il dominio dell'agente:

azd ai agent eval init

La procedura guidata interattiva rileva automaticamente l'agente da azure.yaml e richiede un'istruzione di generazione che descrive le operazioni dell'agente e gli scenari da testare.

Output di esempio:

Detecting agent...
  Found: my-support-agent (hosted)

Generation prompt
  Describe what this agent does and what scenarios to test.
  > This agent handles customer support for electronics. Test returns, troubleshooting, and out-of-scope requests.

Generating dataset and evaluators...
  Dataset generation:    done  (registered: my-support-agent-eval-seed/v1)
  Evaluator generation:  done  (registered: my-support-agent-quality/v1)

Eval suite created
  Config:     eval.yaml
  Dataset:    .azure/.foundry/datasets/my-support-agent-eval-seed.v1.jsonl
  Evaluator:  .azure/.foundry/evaluators/my-support-agent-quality.v1.yaml

Review the generated assets, then run:
  azd ai agent eval run

Modalità non interattiva

Per i flussi di lavoro con script, passare direttamente gli input:

azd ai agent eval init \
  --gen-instruction "Customer support agent. Test refund handling, troubleshooting, and out-of-scope deflection." \
  --eval-model gpt-4.1-mini \
  --max-samples 50

Usa i tuoi dati con valutatori generati

Se si dispone già di un set di dati di riferimento ma si desiderano valutatori generati automaticamente:

azd ai agent eval init --dataset ./my-golden-dataset.jsonl

Eseguire l'ottimizzazione con la configurazione generata

Dopo il completamento di eval init, 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

Per il flusso di lavoro completo di valutazione nella CLI, vedere Eseguire valutazioni degli agenti con la CLI di azd.

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", "prompt": "Your prompt here", "criteria": [{"name": "criterion_name", "instruction": "What the evaluator checks for"}]}
{"name": "task_2", "prompt": "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")
prompt 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).
groundTruth No Risposta prevista (usata da alcuni analizzatori per riferimento)

Esempio: Agente di supporto clienti

{"name": "refund_policy", "prompt": "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", "prompt": "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", "prompt": "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", "prompt": "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", "prompt": "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: 10

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.

Includi casi limite

Prova oltre il percorso felice. 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 groundTruth 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", "prompt": "What is the largest city in France by population?", "groundTruth": "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