Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze quickstart maakt u een chat-app die een antwoord aanvraagt met gestructureerde uitvoer. Een gestructureerd uitvoerantwoord is een chatantwoord dat van een type is dat u opgeeft in plaats van alleen tekst zonder opmaak. De chat-app die u in deze quickstart maakt, analyseert het gevoel van verschillende productbeoordelingen en categoriseert elke beoordeling op basis van de waarden van een aangepaste opsomming.
Vereiste voorwaarden
- .NET 8 of een latere versie
- Visual Studio Code (optioneel)
De AI-service configureren
Als u een Azure OpenAI-service en -model wilt inrichten met behulp van Azure Portal, voert u de stappen in het Een Azure OpenAI-serviceresource maken en implementeren artikel uit. Selecteer in de stap Een model implementeren het gpt-4o model.
De chat-app maken
Voer de volgende stappen uit om een console-app te maken die verbinding maakt met het gpt-4o AI-model.
Navigeer in een terminalvenster naar de map waar u uw app wilt maken en maak een nieuwe console-app met de
dotnet newopdracht:dotnet new console -o SOChatGa naar de map
SOChaten voeg de benodigde pakketten toe aan uw app: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.UserSecretsVoer de volgende opdrachten uit om app-geheimen toe te voegen voor uw Azure OpenAI-eindpunt, modelnaam en tenant-id:
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>Opmerking
Afhankelijk van uw omgeving is de tenant-id mogelijk niet nodig. In dat geval verwijdert u deze uit de code die de DefaultAzureCredential instantieert.
Open de nieuwe app in uw editor naar keuze.
Code toevoegen
Definieer de opsomming die de verschillende sentimenten beschrijft.
public enum Sentiment { Positive, Negative, Neutral }Maak IChatClient die met het model zal communiceren.
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();Opmerking
DefaultAzureCredential zoekt naar authenticatiegegevens uit uw omgeving of lokale hulpprogramma's. U moet de
Azure AI Developerrol toewijzen aan het account dat u hebt gebruikt om u aan te melden bij Visual Studio of de Azure CLI. Zie Verifiëren bij Azure AI-services met .NETvoor meer informatie.Verzend een aanvraag naar het model met één productbeoordeling en druk vervolgens het geanalyseerde gevoel af op de console. U declareert het aangevraagde gestructureerde uitvoertype door het door te geven als het typeargument aan de ChatClientStructuredOutputExtensions.GetResponseAsync<T>(IChatClient, String, ChatOptions, Nullable<Boolean>, CancellationToken) extensiemethode.
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}");Deze code produceert uitvoer die vergelijkbaar is met:
Sentiment: PositiveIn plaats van slechts één beoordeling te analyseren, kunt u een verzameling beoordelingen analyseren.
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}"); }Deze code produceert uitvoer die vergelijkbaar is met:
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: NeutralEn in plaats van alleen de geanalyseerde opsommingswaarde aan te vragen, kunt u het tekstantwoord samen met de geanalyseerde waarde aanvragen.
Definieer een recordtype dat het tekstantwoord en het geanalyseerde sentiment bevat:
record SentimentRecord(string ResponseText, Sentiment ReviewSentiment);(Dit recordtype wordt gedefinieerd met behulp van de syntaxis van de primaire constructor . Primaire constructors combineren de typedefinitie met de parameters die nodig zijn om een exemplaar van de klasse te instantiëren. De C#-compiler genereert openbare eigenschappen voor de primaire constructorparameters.)
Verzend de aanvraag met behulp van het recordtype als het typeargument naar
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}");Deze code produceert uitvoer die vergelijkbaar is met:
Response text: Certainly, I have analyzed the sentiment of the review you provided. Sentiment: Neutral
De hulpbronnen opschonen
Als u deze niet meer nodig hebt, verwijdert u de Azure OpenAI-resource en GPT-4-modelimplementatie.
- Navigeer in de Azure Portalnaar de Azure OpenAI-resource.
- Selecteer de Azure OpenAI-resource en selecteer vervolgens verwijderen.