Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questa guida introduttiva si crea un'app MSTest per valutare la qualità di una risposta di chat da un modello OpenAI. L'app di test utilizza le librerie Microsoft.Extensions.AI.Evaluation.
Annotazioni
Questa guida introduttiva illustra l'uso più semplice dell'API di valutazione. In particolare, non dimostra l'uso della funzionalità di memorizzazione nella cache delle risposte e creazione di report , che sono importanti se si creano unit test eseguiti come parte di una pipeline di valutazione "offline". Lo scenario illustrato in questa guida introduttiva è adatto nei casi d'uso come la valutazione in diretta delle risposte dell'intelligenza artificiale all'interno del codice di produzione e la registrazione dei punteggi nella telemetria, in cui la memorizzazione nella cache e la creazione di report non sono rilevanti. Per un'esercitazione che illustra la funzionalità di memorizzazione nella cache e creazione di report, vedere Esercitazione: Valutare la risposta di un modello con la memorizzazione nella cache delle risposte e la creazione di report
Prerequisiti
- .NET 8 o versione successiva
- Visual Studio Code (facoltativo)
Configurare il servizio di intelligenza artificiale
Per effettuare il provisioning di un Azure OpenAI service e di un modello usando il portale di Azure, completare i passaggi descritti nell'articolo Creare e distribuire una risorsa Servizio Azure OpenAI. Nel passaggio "Distribuisci un modello" selezionare il modello di gpt-5.
Creare l'app di test
Completare i passaggi seguenti per creare un progetto MSTest che si connette a un modello di intelligenza artificiale.
In una finestra del terminale passare alla directory in cui si vuole creare l'app e creare una nuova app MSTest con il
dotnet newcomando :dotnet new mstest -o TestAIPassare alla directory
TestAIe aggiungere i pacchetti necessari all'app:dotnet add package Azure.AI.OpenAI dotnet add package Azure.Identity dotnet add package Microsoft.Extensions.AI.Abstractions dotnet add package Microsoft.Extensions.AI.Evaluation dotnet add package Microsoft.Extensions.AI.Evaluation.Quality dotnet add package Microsoft.Extensions.AI.OpenAI dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecretsEsegui i comandi seguenti per aggiungere app secrets per l'endpoint Azure OpenAI e l'ID tenant:
dotnet user-secrets init dotnet user-secrets set AZURE_OPENAI_ENDPOINT <your-Azure-OpenAI-endpoint> dotnet user-secrets set AZURE_TENANT_ID <your-tenant-ID>A seconda dell'ambiente, potrebbe non essere necessario l'ID tenant. In tal caso, rimuovete l'ID dal codice che crea un'istanza di DefaultAzureCredential.
Aprire la nuova app nell'editor preferito.
Aggiungere il codice dell'app di test
Rinominare il file Test1.cs in MyTests.cs, quindi aprire il file e rinominare la classe in
MyTests.Aggiungere alla classe ChatConfiguration i membri del messaggio privato, della chat e della risposta. Il
s_messagescampo è un elenco che contiene due ChatMessage oggetti, uno indica il comportamento del chatbot e l'altro è la domanda dell'utente.private static ChatConfiguration? s_chatConfiguration; private static IList<ChatMessage> s_messages = [ new ChatMessage( ChatRole.System, """ You're an AI assistant that can answer questions related to astronomy. Keep your responses concise and try to stay under 100 words. Use the imperial measurement system for all measurements in your response. """), new ChatMessage( ChatRole.User, "How far is the planet Venus from Earth at its closest and furthest points?")]; private static ChatResponse s_response = new();Aggiungere il
InitializeAsyncmetodo allaMyTestsclasse .[ClassInitialize] public static async Task InitializeAsync(TestContext _) { /// Set up the <see cref="ChatConfiguration"/>, /// which includes the <see cref="IChatClient"/> that the /// evaluator uses to communicate with the model. s_chatConfiguration = GetAzureOpenAIChatConfiguration(); var chatOptions = new ChatOptions { Temperature = 0.0f, ResponseFormat = ChatResponseFormat.Text }; // Fetch the response to be evaluated // and store it in a static variable. s_response = await s_chatConfiguration.ChatClient.GetResponseAsync(s_messages, chatOptions); }Questo metodo esegue le attività seguenti:
- Configura l'oggetto ChatConfiguration.
- Imposta l'oggetto ChatOptions, incluso il Temperature e il ResponseFormat.
- Recupera la risposta da valutare chiamando GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken)e la archivia in una variabile statica.
Aggiungere il
GetAzureOpenAIChatConfigurationmetodo , che crea l'oggetto IChatClient usato dall'analizzatore per comunicare con il modello.private static ChatConfiguration GetAzureOpenAIChatConfiguration() { IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<MyTests>().Build(); string endpoint = config["AZURE_OPENAI_ENDPOINT"]; string tenantId = config["AZURE_TENANT_ID"]; string model = "gpt-5"; // Get a chat client for the Azure OpenAI endpoint. AzureOpenAIClient azureClient = new( new Uri(endpoint), new DefaultAzureCredential(new DefaultAzureCredentialOptions() { TenantId = tenantId })); IChatClient client = azureClient.GetChatClient(deploymentName: model).AsIChatClient(); return new ChatConfiguration(client); }Aggiungere un metodo di test per valutare la risposta del modello.
[TestMethod] public async Task TestCoherence() { IEvaluator coherenceEvaluator = new CoherenceEvaluator(); EvaluationResult result = await coherenceEvaluator.EvaluateAsync( s_messages, s_response, s_chatConfiguration); /// Retrieve the score for coherence from the <see cref="EvaluationResult"/>. NumericMetric coherence = result.Get<NumericMetric>(CoherenceEvaluator.CoherenceMetricName); // Validate the default interpretation // for the returned coherence metric. Assert.IsFalse(coherence.Interpretation!.Failed); Assert.IsTrue(coherence.Interpretation.Rating is EvaluationRating.Good or EvaluationRating.Exceptional); // Validate that no diagnostics are present // on the returned coherence metric. Assert.IsFalse(coherence.ContainsDiagnostics()); }Questo metodo esegue le operazioni seguenti:
- Richiama il CoherenceEvaluator per valutare la coerenza della risposta. Il EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) metodo restituisce un oggetto EvaluationResult che contiene un oggetto NumericMetric. Un
NumericMetricoggetto contiene un valore numerico che in genere rappresenta i punteggi numerici che rientrano in un intervallo ben definito. - Recupera il punteggio di coerenza da EvaluationResult.
- Convalida l'interpretazione predefinita per la metrica di coerenza restituita. Gli analizzatori possono includere un'interpretazione predefinita per le metriche restituite. È anche possibile modificare l'interpretazione predefinita in base ai requisiti specifici, se necessario.
- Verifica che non ci siano messaggi diagnostici presenti nella metrica di coerenza restituita. Gli analizzatori possono includere la diagnostica sulle metriche restituite per indicare errori, avvisi o altre condizioni eccezionali rilevate durante la valutazione.
- Richiama il CoherenceEvaluator per valutare la coerenza della risposta. Il EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) metodo restituisce un oggetto EvaluationResult che contiene un oggetto NumericMetric. Un
Eseguire il test/valutazione
Eseguire il test usando il flusso di lavoro di test preferito, ad esempio usando il comando dell'interfaccia a riga di comando dotnet test o tramite Esplora Test.
Pulire le risorse
Se non sono più necessari, eliminare la Azure risorsa OpenAI e la distribuzione del modello GPT-4.
- Nel portale Azure passare alla risorsa Azure OpenAI.
- Selezionare la risorsa Azure OpenAI e quindi selezionare Delete.
Passaggi successivi
- Valutare le risposte da diversi modelli OpenAI.
- Aggiungere la memorizzazione nella cache delle risposte e la creazione di report al codice di valutazione. Per altre informazioni, vedere Esercitazione: Valutare la risposta di un modello con la memorizzazione nella cache delle risposte e la creazione di report.