Leggere in inglese

Condividi tramite


Esercitazione: Valutare i completamenti di prompt di un LLM

In questa esercitazione viene valutata la coerenza, la pertinenza e l'attendibilità dei completamenti dei prompt di un LLM usando Azure OpenAI e Semantic Kernel SDK per .NET.

'interfaccia utente principale dell'applicazione di valutazione

In questa esercitazione si apprenderà come:

  • Clonare e compilare l'applicazione di valutazione
  • Configurare i modelli
  • Generare dati di test di valutazione
  • Eseguire una valutazione dell'LLM
  • Esaminare i risultati di una valutazione

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Prerequisiti

1 - Clonare l'applicazione di valutazione

Ottieni l'origine per l'applicazione di valutazione e assicurati che possa essere costruita.

  1. Clona il repository dotnet/ai-samples.

  2. Dalla finestra del terminale o dal prompt dei comandi, passare alla directory ai-samples/src/llm-eval.

  3. Compilare l'applicazione di valutazione:

    CLI .NET
    dotnet build .
    

2 - Configurare i modelli

Impostare il modello da testare e i modelli per eseguire valutazioni e generare dati di test.

È consigliabile usare un modello GPT-4 per eseguire la valutazione. È possibile usare una risorsa OpenAI di Azure, un'istanza OpenAI o qualsiasi LLM supportato da Semantic Kernel SDK. Questo articolo usa un modello GPT-4 distribuito in una risorsa OpenAI di Azure per le valutazioni.

La classe KernelFactory (src/LLMEval.Test/KernelFactory.cs) crea i kernel per le valutazioni, generando sia i dati di test che l'LLM da testare.

Configurare il modello per il test

L'applicazione di valutazione verifica il modello restituito dal metodo KernelFactory.CreateKernelTest.

Semantic Kernel SDK può integrare qualsiasi modello che supporti l'API OpenAI Chat Completion .

Aggiornare il metodo KernelFactory.CreateKernelTest per restituire un oggetto Kernel che utilizza il modello da testare. L'esempio seguente, ad esempio, crea un oggetto Kernel che usa un modello Llama 3 distribuito e ospitato localmente usando Ollama:

C#
public static Kernel CreateKernelTest()
{
    IKernelBuilder builder = Kernel.CreateBuilder();

    builder.AddOpenAIChatCompletion(
        modelId: "phi3",
        endpoint: new Uri("http://localhost:11434"),
        apiKey: "api"
    );

    return builder.Build();
}

Configurare il modello per eseguire valutazioni

Usare i segreti utente .NET per archiviare le informazioni di distribuzione di Azure OpenAI. Dalla directory ai-samples/src/llm-eval/LLMEval.Test eseguire i comandi seguenti:

CLI .NET
dotnet user-secrets init
dotnet user-secrets set "AZURE_OPENAI_MODEL" "<deployment-name>"
dotnet user-secrets set "AZURE_OPENAI_ENDPOINT" "<deployment-endpoint>"
dotnet user-secrets set "AZURE_OPENAI_KEY" "<deployment-key>"

L'applicazione di valutazione è configurata per usare questi segreti per connettersi a un modello OpenAI di Azure per eseguire valutazioni. È possibile aggiornare questa configurazione nel metodo KernelFactory.CreateKernelEval:

C#
public static Kernel CreateKernelEval()
{
    IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    IKernelBuilder builder = Kernel.CreateBuilder();

    builder.AddAzureOpenAIChatCompletion(
        config["AZURE_OPENAI_MODEL"],
        config["AZURE_OPENAI_ENDPOINT"],
        config["AZURE_OPENAI_KEY"]
    );

    return builder.Build();
}

Configurare il modello per generare dati di test

L'applicazione di valutazione è configurata per l'uso di i segreti impostati nel passaggio precedente per connettersi a un modello OpenAI di Azure per generare dati di test. È possibile aggiornare questa configurazione nel metodo KernelFactory.CreateKernelGenerateData:

C#
public static Kernel CreateKernelGenerateData()
{
    IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    IKernelBuilder builder = Kernel.CreateBuilder();

    builder.AddAzureOpenAIChatCompletion(
        config["AZURE_OPENAI_MODEL"],
        config["AZURE_OPENAI_ENDPOINT"],
        config["AZURE_OPENAI_KEY"]
    );

    return builder.Build();
}

3 - Generare dati di test

L'applicazione di valutazione confronta l'output di un LLM con le risposte "ground truth", che sono coppie di domande-risposta ideali. È consigliabile avere almeno 200 coppie di domande-risposta per una valutazione.

È possibile usare l'applicazione di valutazione per generare un set iniziale di coppie di domande-risposte. Quindi curali manualmente riscrivendo o rimuovendo eventuali risposte di bassa qualità.

Suggerimenti per la generazione di dati di test:

  • Generare più coppie di domande-risposta di quelle necessarie, quindi eliminarle manualmente in base alla qualità e alla sovrapposizione. Rimuovere risposte di bassa qualità e rimuovere domande troppo simili ad altre domande.
  • Tenere presente la distribuzione delle informazioni in modo da campionare in modo efficace le domande nello spazio conoscenze pertinente.
  • Una volta che l'applicazione è attiva, campionare continuamente domande utente reali (in conformità all'informativa sulla privacy) per assicurarsi di rappresentare i tipi di domande che gli utenti stanno chiedendo.
  1. Dalla directory ai-samples/src/llm-eval/LLMEval.Test eseguire il comando seguente:

    CLI .NET
    dotnet run .
    
  2. Selezionare Genera le QA associate a un argomento ed esportale in JSON, quindi premere INVIO.

    passaggio di selezione scenario dell'applicazione di valutazione

  3. Immettere il numero di coppie di risposte alle domande da generare e il relativo argomento.

    numeri e argomenti come input per la generazione di domande e risposte con l'applicazione di valutazione

  4. Viene visualizzata un'anteprima delle coppie di domande-risposte generate in formato JSON; immettere il percorso del file in cui salvare il file JSON.

    dati di input dal file di output per la generazione di domande e risposte con l'applicazione di valutazione

  5. Esaminare il codice JSON di output e aggiornare o rimuovere eventuali risposte errate o secondarie.

4 - Eseguire una valutazione

Dopo aver curato le coppie di domande-risposta, l'applicazione di valutazione può usarle per valutare gli output del modello di test.

  1. Copiare il file JSON contenente le coppie di domande e risposte in ai-samples/src/llm-eval/LLMEval.Test/assets/qa-02.json.

  2. Dalla directory ai-samples/src/llm-eval/LLMEval.Test eseguire il comando seguente:

    CLI .NET
    dotnet run .
    
  3. Selezionare Elenco Q&A da un file, quindi premere INVIO.

    elenco dei passaggi dell'applicazione di valutazione con l'opzione 'Elenco di domande e risposte da un file' selezionata

  4. I risultati della valutazione vengono stampati in formato tabella.

    Tabella che mostra l'output dell'applicazione di valutazione

5 - Esaminare i risultati della valutazione

I risultati della valutazione generati nel passaggio precedente includono una metrica di coerenza , pertinenza e di fondatezza . Queste metriche sono simili alle metriche predefinite fornite da Azure AI Studio.

  • Coerenza: misura come il modello linguistico riesca a produrre output che fluiscono senza problemi, si leggano naturalmente e assomiglino a un linguaggio umano.
    • Basato su ai-samples/src/LLMEval.Core/_prompts/coherence/skprompt.txt
  • Rilevanza: Valuta la capacità delle risposte di cogliere i punti chiave del contesto.
    • Basato su ai-samples/src/LLMEval.Core/_prompts/relevance/skprompt.txt
  • Aderenza al contesto: valuta la corrispondenza tra le affermazioni in una risposta generata dall'intelligenza artificiale e il contesto di origine, assicurandosi che queste affermazioni siano giustificate dal contesto.
    • Basato su ai-samples/src/LLMEval.Core/_prompts/groundedness/skprompt.txt

Pulire le risorse

Se non sono più necessari, eliminare la risorsa OpenAI di Azure e la distribuzione del modello GPT-4.

  1. Nel portale di Azure passare alla risorsa OpenAI di Azure.
  2. Selezionare la risorsa OpenAI di Azure e quindi selezionare Elimina.