Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tej instrukcji szybkiego startu utworzysz aplikację do czatu, która żąda odpowiedzi w formie ustrukturyzowanej odpowiedzi. Ustrukturyzowana odpowiedź wyjściowa to odpowiedź czatu, która jest typu, jaki określisz, zamiast zwykłego tekstu. Aplikacja do czatu utworzona w tym przewodniku szybkiego startu analizuje tonację różnych recenzji produktów, kategoryzując każdą recenzję zgodnie z wartościami niestandardowego wyliczenia.
Wymagania wstępne
- .NET 8 lub nowsza wersja
- Visual Studio Code (opcjonalnie)
Konfigurowanie usługi sztucznej inteligencji
Aby aprowizować usługę Azure OpenAI i model przy użyciu witryny Azure Portal, wykonaj kroki opisane w artykule Tworzenie i wdrażanie zasobu usługi Azure OpenAI Service. W kroku "Wdrażanie modelu" wybierz gpt-4o model.
Tworzenie aplikacji do czatu
Wykonaj poniższe kroki, aby utworzyć aplikację konsolową, która łączy się z modelem gpt-4o AI.
W oknie terminalu przejdź do katalogu, w którym chcesz utworzyć aplikację, i utwórz nową aplikację konsolową za
dotnet newpomocą polecenia :dotnet new console -o SOChatPrzejdź do katalogu
SOChati dodaj niezbędne pakiety do aplikacji:dotnet add package Azure.AI.OpenAI dotnet add package Azure.Identity dotnet add package Microsoft.Extensions.AI dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecretsUruchom następujące polecenia, aby dodać sekrety aplikacji dla punktu końcowego usługi Azure OpenAI, nazwy modelu i identyfikatora dzierżawy:
dotnet user-secrets init dotnet user-secrets set AZURE_OPENAI_ENDPOINT <your-Azure-OpenAI-endpoint> dotnet user-secrets set AZURE_OPENAI_GPT_NAME gpt-4o dotnet user-secrets set AZURE_TENANT_ID <your-tenant-ID>Uwaga / Notatka
W zależności od środowiska identyfikator dzierżawy może nie być potrzebny. W takim przypadku usuń go z kodu, który tworzy wystąpienie obiektu DefaultAzureCredential.
Otwórz nową aplikację w wybranym edytorze.
Dodawanie kodu
Zdefiniuj wyliczenie opisujące odmienne uczucia.
public enum Sentiment { Positive, Negative, Neutral }Utwórz element IChatClient , który będzie komunikować się z modelem.
IConfigurationRoot config = new ConfigurationBuilder() .AddUserSecrets<Program>() .Build(); string endpoint = config["AZURE_OPENAI_ENDPOINT"]; string model = config["AZURE_OPENAI_GPT_NAME"]; string tenantId = config["AZURE_TENANT_ID"]; // Get a chat client for the Azure OpenAI endpoint. AzureOpenAIClient azureClient = new( new Uri(endpoint), new DefaultAzureCredential(new DefaultAzureCredentialOptions() { TenantId = tenantId })); IChatClient chatClient = azureClient .GetChatClient(deploymentName: model) .AsIChatClient();Uwaga / Notatka
DefaultAzureCredential wyszukuje poświadczenia uwierzytelniania w twoim środowisku lub lokalnych narzędziach. Musisz przypisać
Azure AI Developerrolę do konta użytego do zalogowania się do programu Visual Studio lub interfejsu wiersza polecenia platformy Azure. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie usług Azure AI za pomocą .NET.Wyślij żądanie do modelu przy użyciu pojedynczej recenzji produktu, a następnie wyświetl przeanalizowane emocje w konsoli. Żądany typ danych wyjściowych ze strukturą można zadeklarować, przekazując go jako argument typu do ChatClientStructuredOutputExtensions.GetResponseAsync<T>(IChatClient, String, ChatOptions, Nullable<Boolean>, CancellationToken) metody rozszerzenia.
string review = "I'm happy with the product!"; var response = await chatClient.GetResponseAsync<Sentiment>($"What's the sentiment of this review? {review}"); Console.WriteLine($"Sentiment: {response.Result}");Ten kod generuje dane wyjściowe podobne do następujących:
Sentiment: PositiveZamiast analizować pojedynczy przegląd, możesz przeanalizować kolekcję przeglądów.
string[] inputs = [ "Best purchase ever!", "Returned it immediately.", "Hello", "It works as advertised.", "The packaging was damaged but otherwise okay." ]; foreach (var i in inputs) { var response2 = await chatClient.GetResponseAsync<Sentiment>($"What's the sentiment of this review? {i}"); Console.WriteLine($"Review: {i} | Sentiment: {response2.Result}"); }Ten kod generuje dane wyjściowe podobne do następujących:
Review: Best purchase ever! | Sentiment: Positive Review: Returned it immediately. | Sentiment: Negative Review: Hello | Sentiment: Neutral Review: It works as advertised. | Sentiment: Neutral Review: The packaging was damaged but otherwise okay. | Sentiment: NeutralZamiast prosić tylko o przeanalizowaną wartość wyliczenia, możesz poprosić o odpowiedź tekstową wraz z przeanalizowaną wartością.
Zdefiniuj typ rekordu , aby zawierał odpowiedź tekstową i przeanalizowaną tonację:
record SentimentRecord(string ResponseText, Sentiment ReviewSentiment);(Ten typ rekordu jest definiowany przy użyciu podstawowej składni konstruktora . Konstruktory podstawowe łączą definicję typu z parametrami niezbędnymi do utworzenia wystąpienia dowolnego wystąpienia klasy. Kompilator języka C# generuje właściwości publiczne dla podstawowych parametrów konstruktora).
Wyślij żądanie przy użyciu typu rekordu jako argumentu typu do :
GetResponseAsync<T>var review3 = "This product worked okay."; var response3 = await chatClient.GetResponseAsync<SentimentRecord>($"What's the sentiment of this review? {review3}"); Console.WriteLine($"Response text: {response3.Result.ResponseText}"); Console.WriteLine($"Sentiment: {response3.Result.ReviewSentiment}");Ten kod generuje dane wyjściowe podobne do następujących:
Response text: Certainly, I have analyzed the sentiment of the review you provided. Sentiment: Neutral
Uprzątnij zasoby
Jeśli już ich nie potrzebujesz, usuń zasób usługi Azure OpenAI oraz wdrożenie modelu GPT-4.
- W witrynie Azure Portalprzejdź do zasobu Azure OpenAI.
- Wybierz zasób Azure OpenAI, a następnie wybierz pozycję Usuń.