Exercice : installer le kit de développement logiciel (SDK) .NET pour Azure OpenAI et créer votre première application
Maintenant que nous avons une compréhension des complétions de texte et de conversation, nous allons créer une application de base qui les utilise.
Vous travaillez pour une organisation qui aide les randonneurs à explorer l’extérieur en leur recommandant des sentiers. Vous envisagez d’ajouter une IA conversationnelle à la fonctionnalité de suggestion et souhaitez créer un prototype.
Vous décidez d’utiliser l’API d’achèvement de conversation fournie par le modèle GPT-35-Turbo.
Créer la ressource Azure OpenAI
La première étape consiste à créer la ressource Azure OpenAI et à déployer le modèle. Nous allons utiliser le modèle GPT-3 Turbo dans cet exercice. Comme l’indique la documentation, GPT-3.5 Turbo utilise l’API d’achèvement des conversations et est idéal pour notre cas d’usage.
Prérequis
Un abonnement Azure
Accès accordé à Azure OpenAI dans l’abonnement souhaité
L’accès à ce service n’est accordé qu’à l’application. Vous pouvez demander l’accès à Azure OpenAI en complétant le formulaire à l’adresse https://aka.ms/oai/access.
Azure CLI installé
Créer une ressource et déployer un modèle
La création de la ressource et le déploiement du modèle sont un processus en plusieurs étapes. Utilisez Azure CLI, car il peut être plus rapide que d’utiliser le Portail Azure. Notez toutefois que vous pouvez utiliser le Portail Azure si vous le souhaitez.
Exécutez la commande
az login
pour vous connecter si vous ne l’avez pas déjà fait.Quand vous créez une ressource Azure, vous pouvez créer un groupe de ressources ou utiliser un groupe existant. Cette commande vous montre comment créer un groupe de ressources. Utilisez le nom HikingConversations-RG, mais vous pouvez remplacer le nom de votre choix ou utiliser le nom de groupe existant.
az group create \ --name HikingConversations-RG \ --location eastus
az group create ` --name HikingConversations-RG ` --location eastus
Exécutez la commande suivante pour créer une ressource OpenAI dans le groupe de ressources HikingConversations-RG. Nommez la ressource OpenAI HikingConversationsAI.
az cognitiveservices account create \ -n HikingConversationsAI \ -g HikingConversations-RG \ -l eastus \ --kind OpenAI \ --sku s0
az cognitiveservices account create ` -n HikingConversationsAI ` -g HikingConversations-RG ` -l eastus ` --kind OpenAI ` --sku s0
Ensuite, nous voulons déployer le modèle GPT-35-Turbo sur la ressource OpenAI que nous avons créée. Appelez le modèle de déploiement HikingRecommendationTurbo. Notez que nous utilisons HikingConversations-RG comme nom de groupe de ressources, HikingConversationsAI comme nom de ressource OpenAI. Si vous avez utilisé des valeurs différentes, veillez à remplacer ces valeurs.
az cognitiveservices account deployment create \ -g HikingConversations-RG \ -n HikingConversationsAI \ --deployment-name HikingRecommendationTurbo \ --model-name gpt-35-turbo \ --model-version "0301" \ --model-format OpenAI \ --scale-settings-scale-type "Standard"
az cognitiveservices account deployment create ` -g HikingConversations-RG ` -n HikingConversationsAI ` --deployment-name HikingRecommendationTurbo ` --model-name gpt-35-turbo ` --model-version "0301" ` --model-format OpenAI ` --scale-settings-scale-type "Standard"
Une fois la ressource et le modèle créés, nous devons obtenir l’URL de base et les clés d’accès afin que le SDK .NET puisse accéder à la ressource Azure OpenAI. Utilisez ces commandes pour obtenir le point de terminaison et les clés API primaires et en prendre note pour une utilisation ultérieure :
Le point de terminaison
az cognitiveservices account show \ -g HikingConversations-RG \ -n HikingConversationsAI \ --query "properties.endpoint"
az cognitiveservices account show ` -g HikingConversations-RG ` -n HikingConversationsAI ` --query "properties.endpoint"
La clé API primaire
az cognitiveservices account keys list \ -g HikingConversations-RG \ -n HikingConversationsAI \ --query "key1"
az cognitiveservices account keys list ` -g HikingConversations-RG ` -n HikingConversationsAI ` --query "key1"
Création de l’application console et ajout du kit de développement logiciel (SDK) OpenAI
Ensuite, nous voulons créer une application console .NET complète et ajouter le kit de développement logiciel (SDK) Azure OpenAI.
Exécutez le programme suivant pour créer une nouvelle application .NET nommée HikingConversationsAI.
dotnet new console -n HikingConversationsAI
Accédez au répertoire HikingConversationsAI nouvellement créé.
cd HikingConversationsAI
Ajoutez ensuite le kit de développement logiciel (SDK) Azure Open AI.
dotnet add package Azure.AI.OpenAI --prerelease
Ouvrez le projet dans VS Code ou Visual Studio.
Dans le fichier Program.cs, supprimez tout le code existant.
Ajoutez
using Azure.AI.OpenAI;
en haut de Program.cs.Ajoutez
using Azure;
en haut de Program.cs.Ajoutez trois variables de niveau classe qui contiennent des références au point de terminaison de la ressource Azure OpenAI, à la clé API primaire et au nom du modèle que vous avez déployé.
string openAIEndpoint = "<YOUR ENDPOINT URL VALUE>"; string openAIAPIKey = "<YOUR PRIMARY API KEY VALUE>"; string openAIDeploymentName = "HikingRecommendationTurbo";
Dans les étapes ci-dessus, nous avons nommé le déploiement HikingRecommendationTurbo. Si vous avez utilisé une autre valeur, assurez-vous de l’utiliser à la place.
Enfin, instanciez la classe nécessaire pour communiquer avec la ressource Azure OpenAI.
var endpoint = new Uri(openAIEndpoint); var credentials = new AzureKeyCredential(openAIAPIKey); var openAIClient = new AzureOpenAIClient(endpoint, credentials);
Créer l’invite système
Nous allons créer l’invite de rôle système initiale qui fournira les instructions initiales au modèle.
Créez d’abord l’invite qui ordonne au modèle comment vous souhaitez qu’il agisse pendant la conversation lorsque vous recommandez des randonnées.
var systemPrompt = """ You are a hiking enthusiast who helps people discover fun hikes. You are upbeat and friendly. You ask people what type of hikes they like to take and then suggest some. """;
Créez ensuite un
List<ChatMessage>
pour conserver tous les messages qui seront envoyés vers et à partir du modèle.List<ChatMessage> chatHistory = new();
Créez ensuite un objet
SystemChatMessage
et ajoutez-le à la listechatHistory
. Nous allons définir leChatMessage
pour qu’il provient du rôle Système.SystemChatMessage systemMessage = ChatMessage.CreateSystemMessage(systemPrompt); chatHistory.Add(systemMessage);
Lancer la conversation
Ensuite, nous allons envoyer le premier message au modèle, en lançant la conversation.
Créez une invite pour l’utilisateur et ajoutez-la à
chatHistory
en tant que message utilisateur.string userGreeting = """ Hi there hiking recommendation bot! Can't wait to hear what you have in store for me! """; UserChatMessage userGreetingMessage = ChatMessage.CreateUserMessage(userGreeting); chatHistory.Add(userGreetingMessage); Console.WriteLine($"User >>> {userGreeting}");
Vous avez maintenant besoin d’obtenir une référence à un objet
ChatClient
. Ces objet est chargé de faciliter les conversations avec le modèle. Vous devez à cet effet indiquer à l’objet Azure OpenAI Client le modèle déployé que vous souhaitez utiliser.var chatClient = openAIClient.GetChatClient(openAIDeploymentName);
Appelez ensuite la fonction
CompleteChatAsync
de la classeChatClient
passant danschatHistory
.var response = await chatClient.CompleteChatAsync(chatHistory);
Enfin, lisez la valeur retournée par le modèle.
Console.WriteLine($"AI >>> {response.Value.Content.Last().Text}");
Voyons ce que nous avons jusqu’à présent, vous pouvez exécuter l’application en entrant
dotnet run
dans le terminal.Expérimentez en modifiant la valeur de
userGreetingMessage
pour voir comment le modèle peut répondre différemment.
Dans un exemple d’exécution, nous avons reçu les éléments suivants :
Hello! Great to hear from you. What type of hikes are you interested in? Do you enjoy easy scenic walks, challenging trails, or something in between? Do you prefer hikes with waterfalls, mountain views, or unique geological formations?
Vous pouvez recevoir quelque chose de différent, car le modèle n’est pas déterministe, ou peut produire une sortie différente même avec la même entrée.
Poursuivre la conversation
Continuons en répondant à la conversation, puis en sortant la réponse.
Assurez-vous que nous conservons le contexte de la conversation. Ajoutez donc la réponse qui est revenue directement à la liste
chatHistory
.var assistantMessage = ChatMessage.CreateAssistantMessage(response.Value.Content.Last().Text); chatHistory.Add(assistantMessage);
Ensuite, créez une autre invite utilisateur et envoyez-la au modèle.
var hikeRequest = """ I would like a strenuous hike near where I live that ends with a view that is amazing. """; Console.WriteLine($"User >>> {hikeRequest}"); UserChatMessage hikeMessage = ChatMessage.CreateUserMessage(hikeRequest); chatHistory.Add(hikeMessage); response = await chatClient.CompleteChatAsync(chatHistory); Console.WriteLine($"AI >>> {response.Value.Content.Last().Text}");
Vous pouvez expérimenter en modifiant la variable
hikeRequest
pour demander différents types de randonnées. Dans un exemple d’exécution, nous avons reçu :Great choice! If you're up for a challenge, I recommend checking out the hike to Poo Poo Point in Issaquah, Washington. The hike is 7.2 miles roundtrip, with an elevation gain of 1,858 feet, so it's definitely a workout. But the stunning views of Mount Rainier and the Cascade Mountains make it all worthwhile. Plus, you'll get to see paragliders taking off from Poo Poo Point. It's a popular hike, so I recommend going early to avoid crowds. Let me know if you need more information!
Résumé
Nous sommes maintenant en mesure d’utiliser le kit de développement logiciel (SDK) Azure OpenAI avec le modèle gpt-35-turbo
pour créer des conversations qui vous aident à fournir des suggestions de randonnée. Voyons ensuite comment améliorer les invites que nous envoyons au modèle.