Analizzatori rubrici (anteprima)

Importante

Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente in anteprima pubblica. 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.

Un analizzatore di rubriche assegna un punteggio a un agente o una risposta del modello in base a criteri personalizzati e ponderati definiti dall'utente, usando un LLM come giudice. Ti dà il controllo completo sul significato "buono" per il tuo caso d'uso applicando tale giudizio in modo coerente su larga scala.

Un rubrico è un set di criteri che definisce come valutare la risposta. Ogni rubrico contiene dimensioni di assegnazione dei punteggi; ogni dimensione ha una descrizione delle misure e di un peso che ne riflette l'importanza relativa. Il giudice LLM assegna ogni dimensione applicabile da 1 a 5 per una singola risposta o conversazione a più turni. Il punteggio complessivo della rubrica è la media ponderata di tali punteggi, normalizzata in un intervallo da 0 a 1.

Usare gli analizzatori rubrici come misura principale della qualità dell'agente, perché consentono di esprimere i criteri esatti che interessano il caso d'uso. Associarli agli analizzatori predefiniti per la sicurezza, l'infondamento e il danno al contenuto per coprire i rischi che la rubrica non misura. Il resto di questo articolo descrive come generare un rubrico, i campi contenuti, come scegliere un modello di giudice LLM e come esaminare i risultati.

Generare un analizzatore di rubriche

È possibile creare un analizzatore di rubriche in due modi:

È possibile creare automaticamente un analizzatore di rubriche selezionando un modello LLM per generare la rubrica dal contesto dell'agente. Specificare almeno uno degli input di base seguenti:

  • Agente Foundry : selezionare un agente Foundry esistente. Il servizio esegue il pull delle istruzioni dell'agente (per gli agenti prompt) o della relativa descrizione (per gli agenti ospitati) da usare come contesto di generazione.
  • Prompt del sistema agente : incollare le istruzioni che definiscono il comportamento previsto dell'agente. Usare questa opzione quando l'agente non è registrato in Foundry o quando il contesto registrato non acquisisce completamente il proprio comportamento.
  • File di riferimento : documenti, contenuto della knowledge base o linee guida di dominio che descrivono il contesto dell'agente e la qualità della risposta prevista.

Per ottenere risultati ottimali, aggiungere tracce di produzione dell'agente sopra qualsiasi input di base sopra per basare il rubrico nell'utilizzo reale:

  • Tracce : tracce di produzione dell'agente raccolte dalla traccia Foundry in Application Insights. Le tracce non possono essere usate da sole; associarli a un agente Foundry, a un prompt del sistema agente o a file di riferimento.

Ogni rubrica generata contiene i campi seguenti:

Campo Description
id Slug stabile e leggibile assegnato dal servizio alla prima generazione. Quando si modificano i criteri e si salva come nuova versione, ripetere l'identità esistente id per mantenere l'identità tra le versioni. Il servizio non riassegna gli ID alla modifica.
description Ciò che questo criterio misura : una dimensione di qualità chiara e specifica.
weight Importanza relativa del criterio. La pipeline di generazione assegna esattamente un criterio un peso di 8-10 (la dimensione più decisiva del risultato) e tutti gli altri 1-6. Le modifiche degli utenti non sono vincolate da questa euristica.
always_applicable Quando true, il giudice LLM assegna sempre il punteggio a questo criterio indipendentemente dalla pertinenza (ignora la valutazione dell'applicabilità). Utilizzato per il criterio di qualità generale. Di default è false.

Scegliere un modello di giudice LLM

Non tutti i modelli eseguono altrettanto come giudici rubrici. La tabella seguente elenca i modelli di chat supportati per la generazione e l'assegnazione dei punteggi.

Modello Raccomandazione
gpt-5.5 Raccomandato
gpt-5.4 Raccomandato
gpt-5.4-mini Consigliato: migliore equilibrio tra prestazioni e costi
gpt-5.4-nano Raccomandato
gpt-5.2 Raccomandato
gpt-5.1 Raccomandato
gpt-5 Raccomandato
gpt-5-mini Raccomandato
gpt-5-nano Raccomandato
gpt-4.1 Accettabile
gpt-4o Accettabile

Creare manualmente una rubrica

Scrivere una rubrica personalizzata definendo id, descriptione weight. Usare questo approccio quando si ha già una rubrica definita altrove che si vuole inserire in Foundry.

Tip

Per iniziare, creare un analizzatore di rubrico generato automaticamente e perfezionarlo manualmente. La generazione automatica offre una linea di base forte che è possibile modificare in base agli standard di qualità specifici.

Rivedere e modificare la rubrica

Dopo aver generato o creato una rubrica, esaminare le dimensioni per verificare che corrispondano alle aspettative per la qualità dell'agente. È possibile:

  • Modificare id, descriptione weight : ridefinire il linguaggio in modo che sia più specifico sugli elementi qualificati per ogni livello di dimensione. Descrizioni precise e peso migliorano la coerenza dei punteggi.
  • Aggiungere o rimuovere dimensioni : inserire dimensioni di qualità importanti per il dominio o rimuovere quelle che non si applicano.
  • Regolare le soglie : impostare la soglia di superamento per controllare il punteggio complessivo qualificato come superato. I valori sono compresi tra 0,0 e 1,0, dove 1,0 è il punteggio più alto. Aumentare la soglia per uno standard di qualità più rigoroso o abbassarla per essere più permissiva.
  • Imposta sempre applicabile : selezionare o deselezionare la casella di controllo Sempre applicabile per un criterio. Se selezionato, il giudice LLM assegna il punteggio a questo criterio per ogni risposta senza prima controllare la pertinenza.

Nelle impostazioni avanzate per ogni rubrico è anche possibile visualizzare il livello di valutazione e la categoria per questo analizzatore di rubriche.

Eseguire l'iterazione sulla rubrica fino a quando non distingue in modo affidabile le risposte dell'agente accettabili e inaccettabili. Eseguire una piccola valutazione su un set di dati di esempio per verificare che i punteggi rubrici siano allineati al proprio giudizio prima di usarlo su larga scala.

Rubrica di esempio

L'esempio seguente mostra una rubrica per un agente di prenotazione ristorante. Ogni criterio è destinato a una dimensione di qualità specifica, con pesi che riflettono l'importanza relativa:

[
  {
    "id": "intent_recognition",
    "description": "Correctly identifies the user's reservation intent (book, modify, cancel, inquire) and pursues the appropriate workflow without unnecessary clarification.",
    "weight": 9
  },
  {
    "id": "tool_usage_accuracy",
    "description": "Calls the correct tool with correct parameters. Does not call tools unnecessarily, and does not skip tool calls when they are needed.",
    "weight": 6
  },
  {
    "id": "policy_enforcement",
    "description": "Enforces business rules: dinner service 17:00-22:00, max party size 8, 30-day booking window. Does not create reservations that violate these constraints.",
    "weight": 5
  },
  {
    "id": "information_gathering",
    "description": "Collects all required information (date, time, party size, contact) before attempting to create a reservation. Does not ask for information already provided.",
    "weight": 4
  },
  {
    "id": "communication_clarity",
    "description": "Provides clear, concise responses. Confirms reservation details before finalizing. Uses a professional and helpful tone.",
    "weight": 2
  },
  {
    "id": "general_quality",
    "description": "Other important quality factors not already covered by the listed criteria.",
    "weight": 5,
    "always_applicable": true
  }
]

In questa rubrica, intent_recognition ha il peso più alto (9) perché identifica correttamente ciò che l'utente vuole è il fattore più decisivo per il risultato. Il general_quality criterio usa always_applicable: true in modo che il giudice lo punteggi per ogni risposta, anche quando altri criteri potrebbero non essere applicati.

Usare analizzatori di rubriche per eseguire la valutazione

Gli analizzatori rubrici funzionano bene per criteri di qualità specifici del dominio o dell'organizzazione che gli analizzatori per utilizzo generico non possono acquisire. Definire una rubrica quando è necessario assegnare un punteggio che rifletta gli standard di qualità specifici del team, ad esempio il tono del supporto clienti, l'accuratezza medica o la conformità legale.

Il giudice LLM legge la rubrica, esamina i dati di input mappati, assegna un punteggio e fornisce un motivo per la decisione di assegnazione dei punteggi. Questo approccio combina la flessibilità dei criteri personalizzati con la coerenza della valutazione basata su LLM.

Per informazioni dettagliate sull'esecuzione di valutazioni e sulla configurazione delle origini dati, vedere Eseguire valutazioni dall'SDK.

Per un esempio eseguibile, vedere sample_rubric_evaluator_generation_basic.py. Per altri esempi di rubriche (generazione di tutte le origini, modifica iterativa, ciclo di vita completo e creazione manuale), vedere gli esempi di valutazioni README.

Output di esempio

L'analizzatore di rubriche restituisce un punteggio ponderato per ogni dimensione, un punteggio complessivo, un'etichetta pass/fail e un motivo che spiega la decisione. La soglia pass predefinita è 0,5. I punteggi al di sopra o al di sopra della soglia vengono considerati superati.

Esempio di passaggio

In questo esempio, un utente chiede di prenotare una tabella per 4 il venerdì alle 17:30. L'agente identifica correttamente la finalità di prenotazione, chiama lo strumento di prenotazione con parametri validi e conferma la prenotazione:

{
  "score": 0.9419354839,
  "label": "pass",
  "reason": "The verdict is driven most by intent_recognition (5), tool_usage_accuracy (5), and policy_enforcement (5). The assistant correctly identified the booking intent, called the reservation tool with valid parameters (Friday 7:30 PM, party of 4), and returned a clear confirmation with the reservation details.",
  "threshold": 0.5,
  "passed": true,
  "properties": {
    "dimension_scores": [
      {
        "id": "intent_recognition",
        "score": 5,
        "applicable": true,
        "weight": 9,
        "reason": "The user's request to book a table is correctly identified, and the assistant pursues the booking workflow without unnecessary clarification."
      },
      {
        "id": "tool_usage_accuracy",
        "score": 5,
        "applicable": true,
        "weight": 6,
        "reason": "The reservation tool is called once with the correct date, time, and party size parameters derived from the user's request."
      },
      {
        "id": "policy_enforcement",
        "score": 5,
        "applicable": true,
        "weight": 5,
        "reason": "The reservation falls within dinner service hours, the party size is within the maximum of 8, and the date is within the 30-day booking window."
      },
      {
        "id": "information_gathering",
        "score": 4,
        "applicable": true,
        "weight": 4,
        "reason": "All required information (date, time, party size, contact) is captured from the request without asking for details already provided."
      },
      {
        "id": "communication_clarity",
        "score": 5,
        "applicable": true,
        "weight": 2,
        "reason": "The confirmation is concise and includes the reservation date, time, and party size in a single clear message."
      },
      {
        "id": "general_quality",
        "score": 4,
        "applicable": true,
        "weight": 5,
        "reason": "Overall execution is strong: the assistant handles the booking end to end with no unnecessary turns or recovery steps."
      }
    ]
  }
}

Esempio di errore

In questo esempio, un utente chiede di prenotare una tabella per 12 persone il sabato. La dimensione massima della parte è 8, ma l'agente procede comunque senza contrassegnare la violazione dei criteri:

{
  "score": 0.3548387097,
  "label": "fail",
  "reason": "The verdict is driven by very low policy_enforcement (1), tool_usage_accuracy (1), and general_quality (1). The user requested a table for 12, which exceeds the maximum party size of 8, but the assistant proceeded to call the reservation tool and confirmed a booking that violates business rules.",
  "threshold": 0.5,
  "passed": false,
  "properties": {
    "dimension_scores": [
      {
        "id": "intent_recognition",
        "score": 3,
        "applicable": true,
        "weight": 9,
        "reason": "The booking intent is identified, but the assistant fails to flag that the requested party size cannot be accommodated under business rules."
      },
      {
        "id": "tool_usage_accuracy",
        "score": 1,
        "applicable": true,
        "weight": 6,
        "reason": "The reservation tool is called with a party size that the business rules prohibit, producing an invalid booking."
      },
      {
        "id": "policy_enforcement",
        "score": 1,
        "applicable": true,
        "weight": 5,
        "reason": "The 8-person maximum party size is not enforced; the assistant should have declined or offered to split the party before attempting to book."
      },
      {
        "id": "information_gathering",
        "score": 2,
        "applicable": true,
        "weight": 4,
        "reason": "The assistant collected the party size and date but did not confirm a specific time, leaving required information incomplete."
      },
      {
        "id": "communication_clarity",
        "score": 2,
        "applicable": true,
        "weight": 2,
        "reason": "The final confirmation message is clear in form, but it asserts a booking that the system shouldn't have allowed, creating a misleading outcome."
      },
      {
        "id": "general_quality",
        "score": 1,
        "applicable": true,
        "weight": 5,
        "reason": "Overall quality is poor: the assistant violates a core business rule without warning the user or recovering, undermining trust in the booking outcome."
      }
    ]
  }
}

Ogni elemento di output include punteggi per dimensione con motivi. Le dimensioni contrassegnate "applicable": false vengono ignorate e non contribuiscono al punteggio complessivo. Il punteggio complessivo è una media ponderata di tutti i punteggi di dimensione applicabili, normalizzati in un intervallo compreso tra 0 e 1.

Annotazioni

Gli analizzatori rubrici usano l'assegnazione dei punteggi come giudice LLM e comportano costi di inferenza del modello per ogni chiamata di valutazione. L'affidabilità dei punteggi può variare per risposte molto brevi. Scrivere descrizioni rubriche specifiche e non ambigue per migliorare la coerenza dei punteggi tra le valutazioni.

Configurare la valutazione continua con analizzatori di rubriche

Una volta che l'analizzatore di rubriche riflette in modo affidabile gli standard di qualità, configurarlo per la valutazione continua e pianificata nelle impostazioni di monitoraggio. La valutazione continua esegue automaticamente la rubrica sul nuovo traffico dell'agente, in modo da poter intercettare le regressioni di qualità nell'ambiente di produzione, senza attivare esecuzioni manuali.

Per i passaggi di installazione, vedere Monitorare gli agenti nel dashboard.