Share via


Sviluppare un flusso di valutazione in Azure AI Studio

Importante

Alcune funzionalità descritte in questo articolo potrebbero essere disponibili solo 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 presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

I flussi di valutazione sono tipi speciali di flussi che valutano se gli output di un'esecuzione sono ben allineati a criteri e obiettivi specifici.

Nel prompt flow è possibile personalizzare o creare flussi di valutazione personalizzati in base ad attività e obiettivi e quindi usarli per valutare altri flussi. In questo documento viene illustrato come:

  • Come sviluppare un metodo di valutazione.
  • Informazioni su input, output e metriche di registrazione per le valutazioni dei prompt flow.

Iniziare a sviluppare un metodo di valutazione

Esistono due modi per sviluppare i metodi di valutazione personalizzati:

  • Personalizzare un flusso di valutazione predefinito: modificare un flusso di valutazione predefinito.

    1. In Strumenti selezionare Flusso prompt.
    2. Selezionare Crea per aprire la creazione guidata del flusso.
    3. Nella raccolta di flussi in Esplora raccolta selezionare Flusso di valutazione per filtrare in base a tale tipo. Selezionare un esempio e selezionare Clona per eseguire la personalizzazione.
  • Creare un nuovo flusso di valutazione da zero: sviluppare un metodo di valutazione completamente nuovo da zero.

    1. In Strumenti selezionare Flusso prompt.
    2. Selezionare Crea per aprire la creazione guidata del flusso.
    3. Nella raccolta di flussi in Crea per tipo nella casella "Flusso di valutazione" selezionare Crea, quindi è possibile visualizzare un modello di flusso di valutazione.

Informazioni sulla valutazione in Prompt flow

In Prompt flow un flusso è una sequenza di nodi che elaborano un input e generano un output. I flussi di valutazione accettano anche gli input necessari e producono gli output corrispondenti.

Alcune funzionalità speciali dei metodi di valutazione sono:

  • In genere vengono eseguiti dopo l'esecuzione da testare ricevendo output da tale esecuzione.
  • Oltre agli output dell'esecuzione da testare, possono ricevere facoltativamente un altro set di dati che potrebbe contenere le verità di base corrispondenti.
  • Possono avere un nodo di aggregazione che calcola le prestazioni complessive del flusso testato in base ai singoli punteggi.
  • Possono registrare le metriche usando la funzione log_metric().

Viene illustrato come definire gli input e gli output nello sviluppo di metodi di valutazione.

Input

Una valutazione viene eseguita dopo un'altra esecuzione per valutare se gli output dell'esecuzione sono ben allineati a criteri e obiettivi specifici. Pertanto, la valutazione riceve gli output generati da tale esecuzione.

Potrebbero essere necessari anche altri input, come la verità a terra, che potrebbe provenire da un set di dati. Per impostazione predefinita, la valutazione usa lo stesso set di dati di quello di test fornito all'esecuzione testata. Tuttavia, se le etichette corrispondenti o i valori delle verità di base di destinazione si trovano in un set di dati diverso, è possibile passare facilmente a quest'ultimo.

Pertanto, per eseguire una valutazione, è necessario indicare le origini di questi input necessari. A tale scopo, quando si invia una valutazione, viene visualizzata una sezione "Mapping dell'input".

  • Se l'origine dati proviene dall'output di esecuzione, viene indicata come ${run.output.[OutputName]}
  • Se l'origine dati proviene dal set di dati di test, viene indicata come ${data.[ColumnName]}

Nota

Se la valutazione non richiede dati dal set di dati, non è necessario fare riferimento ad alcuna colonna del set di dati nella sezione mapping di input, perché la selezione del set di dati è una configurazione facoltativa. La selezione del set di dati non influisce sul risultato della valutazione.

Immettere la descrizione

Per ricordare quali input sono necessari per calcolare le metriche, è possibile aggiungere una descrizione per ogni input necessario. Le descrizioni vengono visualizzate quando si esegue il mapping delle origini nell'invio dell'esecuzione batch.

Per aggiungere descrizioni per ogni input, selezionare Mostra descrizione nella sezione corrispondente durante lo sviluppo del metodo di valutazione. Ed è possibile selezionare "Nascondi descrizione" per nasconderla.

Questa descrizione viene quindi visualizzata quando si usa questo metodo di valutazione nell'invio dell'esecuzione batch.

Output e metriche

Gli output di una valutazione sono i risultati che misurano le prestazioni del flusso sottoposto a test. L'output contiene in genere metriche, ad esempio punteggi, e può includere anche testo relativo a motivi e suggerimenti.

Output dei punteggi a livello di istanza

Nel prompt flow il flusso elabora ogni set di dati di esempio alla volta e genera un record di output. Analogamente, nella maggior parte dei casi di valutazione è presente una metrica per ogni output, che consente di controllare il livello di prestazioni del flusso con ogni singolo dato.

Per registrare il punteggio per ogni campione di dati, calcolare il punteggio per ogni output e registrare il punteggio come output del flusso impostandolo nella sezione di output. Questa esperienza di creazione è identica a quella per la definizione di un output di flusso standard.

Questo punteggio viene calcolato in line_process, che è possibile creare e modificare da zero durante la creazione in base al tipo. Si può anche sostituire questo nodo python con un nodo LLM in modo da usare LLM per calcolare il punteggio.

Quando questo metodo di valutazione viene usato per valutare un altro flusso, il punteggio a livello di istanza può essere visualizzato nella scheda Panoramica>Output.

Registrazione di metriche e nodo di aggregazione

Inoltre, è anche importante fornire un punteggio complessivo per l'esecuzione. È possibile controllare il "Imposta come aggregazione" di un nodo Python in un flusso di valutazione per trasformarlo in un nodo "reduce", consentendo al nodo di accettare gli input come elenco e di elaborarli in batch.

In questo modo, è possibile calcolare ed elaborare tutti i punteggi di ogni output del flusso e calcolare un risultato complessivo per ogni variante.

È possibile registrare le metriche in un nodo di aggregazione usando Prompt flow_sdk.log_metrics(). Le metriche devono essere numeriche (float/int). La registrazione di metriche dei tipi di stringa non è supportata.

Questo punteggio viene calcolato nel nodo aggregate, che è possibile creare e modificare da zero durante la creazione in base al tipo. Si può anche sostituire questo nodo Python con un nodo LLM in modo da usare LLM per calcolare il punteggio. Vedere l'esempio seguente per l'uso dell'API log_metric in un flusso di valutazione:

from typing import List
from promptflow import tool, log_metric

@tool
def calculate_accuracy(grades: List[str], variant_ids: List[str]):
    aggregate_grades = {}
    for index in range(len(grades)):
        grade = grades[index]
        variant_id = variant_ids[index]
        if variant_id not in aggregate_grades.keys():
            aggregate_grades[variant_id] = []
        aggregate_grades[variant_id].append(grade)

    # calculate accuracy for each variant
    for name, values in aggregate_grades.items():
        accuracy = round((values.count("Correct") / len(values)), 2)
        log_metric("accuracy", accuracy, variant_id=name)

    return aggregate_grades

Poiché questa funzione è stata chiamata nel nodo Python, non è necessario assegnarla altrove ed è possibile visualizzare le metriche in un secondo momento. Quando questo metodo di valutazione viene usato in un’esecuzione di un batch, il punteggio a livello di istanza può essere visualizzato nella scheda Panoramica ->Metriche.

Passaggi successivi