Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto rychlém startu vytvoříte aplikaci MSTest, která vyhodnotí kvalitu odpovědi na chat z modelu OpenAI. Testovací aplikace používá knihovny Microsoft.Extensions.AI.Evaluation .
Poznámka:
Tento rychlý start ukazuje nejjednodušší použití rozhraní API pro vyhodnocení. Zejména to neukazuje použití funkcionality ukládání odpovědí do mezipaměti a generování sestav, což je důležité, pokud vytváříte jednotkové testy, které běží jako součást "offline" hodnoticího kanálu. Scénář uvedený v tomto rychlém startu je vhodný v případech použití, jako je například online vyhodnocení odpovědí AI v rámci produkčního kódu a protokolování skóre do telemetrie, kdy nepotřebujete ukládání do mezipaměti ani generování sestav. Kurz, který ukazuje funkci ukládání do mezipaměti a generování sestav, najdete v kurzu: Vyhodnocení odpovědi modelu pomocí ukládání odpovědí do mezipaměti a generování sestav.
Požadavky
- .NET 8 nebo novější verze
- Visual Studio Code (volitelné)
Konfigurace služby AI
Pokud chcete zřídit službu a model Azure OpenAI pomocí webu Azure Portal, proveďte kroky v článku Vytvoření a nasazení prostředku služby Azure OpenAI. V kroku Nasazení modelu vyberte gpt-5 model.
Vytvoření testovací aplikace
Provedením následujících kroků vytvořte projekt MSTest, který se připojuje k modelu AI.
V okně terminálu přejděte do adresáře, do kterého chcete aplikaci vytvořit, a pomocí příkazu vytvořte novou aplikaci
dotnet newMSTest:dotnet new mstest -o TestAIPřejděte do adresáře
TestAIa přidejte do aplikace potřebné balíčky: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 --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecretsSpuštěním následujících příkazů přidejte tajné kódy aplikací pro koncový bod Azure OpenAI a ID tenanta:
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>(V závislosti na vašem prostředí nemusí být ID tenanta potřeba. V takovém případě ho odeberte z kódu, který vytvoří instanci objektu DefaultAzureCredential.)
Otevřete novou aplikaci v libovolném editoru.
Přidání kódu testovací aplikace
Přejmenujte soubor Test1.cs na MyTests.cs a pak soubor otevřete a přejmenujte třídu na
MyTests.Přidejte do třídy soukromou ChatConfiguration a chatovou zprávu a členy
MyTestsodpovědí. Poles_messagesje seznam, který obsahuje dva ChatMessage objekty – jeden dává pokyn chování chatovacího robota a druhý je otázka od uživatele.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();Přidejte metodu
InitializeAsyncMyTestsdo třídy.[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); }Tato metoda provádí následující úlohy:
- Nastaví ChatConfiguration.
- Nastaví ChatOptions, včetně Temperature a ResponseFormat.
- Načte odpověď, která se má vyhodnotit voláním GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken), a uloží ji do statické proměnné.
Přidejte metodu
GetAzureOpenAIChatConfiguration, která vytvoří IChatClient, jež evaluátor používá ke komunikaci s modelem.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); }Přidejte testovací metodu pro vyhodnocení odpovědi modelu.
[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()); }Tato metoda provede následující:
- Vyvolá CoherenceEvaluator k vyhodnocení soudržnosti odpovědi. Metoda EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) vrátí EvaluationResult hodnotu, která obsahuje NumericMetric. A
NumericMetricobsahuje číselnou hodnotu, která se obvykle používá k reprezentaci číselných skóre, která spadají do dobře definované oblasti. - Načte skóre soudržnosti z EvaluationResult
- Ověří výchozí interpretaci vrácené metriky soudržnosti. Vyhodnocovače můžou obsahovat výchozí interpretaci metrik, které vrací. V případě potřeby můžete také změnit výchozí interpretaci tak, aby vyhovovala vašim konkrétním požadavkům.
- Ověřuje, že žádná diagnostická data nejsou přítomna na vrácené metrikě soudržnosti. Vyhodnocovače mohou zahrnovat diagnostiku metrik, které se vrátí, aby indikovala chyby, upozornění nebo jiné výjimečné podmínky vyskytující se během hodnocení.
- Vyvolá CoherenceEvaluator k vyhodnocení soudržnosti odpovědi. Metoda EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) vrátí EvaluationResult hodnotu, která obsahuje NumericMetric. A
Spuštění testu/vyhodnocení
Spusťte test pomocí preferovaného testovacího pracovního postupu, například pomocí příkazu dotnet test rozhraní příkazového řádku nebo průzkumníka testů.
Vyčistěte zdroje
Pokud už je nepotřebujete, odstraňte prostředek Azure OpenAI a odeberte nasazený model GPT-4.
- Na webu Azure Portal přejděte k prostředku Azure OpenAI.
- Vyberte prostředek Azure OpenAI a pak vyberte Odstranit.
Další kroky
- Vyhodnoťte odpovědi z různých modelů OpenAI.
- Přidejte do evaluačního kódu ukládání odpovědí do mezipaměti a generování sestav. Další informace najdete v Kurzu: Vyhodnocení odpovědi modelu pomocí ukládání odpovědi do mezipaměti a generování sestav.