Übung: Installieren des .NET SDK für Azure OpenAI und Erstellen Ihrer ersten App
Nachdem Sie nun mit Text- und Chatvervollständigungen vertraut sind, erstellen wir eine einfache Anwendung, die sie verwendet.
Sie arbeiten für eine Organisation, die Wanderern hilft, die Natur zu erkunden, indem ihnen Wanderwege empfohlen werden. Sie erwägen das Hinzufügen einer Gesprächs-KI zur Empfehlungsfunktion und möchten einen Prototyp erstellen.
Sie entscheiden sich für die Verwendung der Chatvervollständigungs-API, die vom GPT-35-Turbo-Modell bereitgestellt wird.
Erstellen der Azure OpenAI-Ressource
Der erste Schritt besteht darin, die Azure OpenAI-Ressource zu erstellen und das Modell bereitzustellen. In dieser Übung verwenden wir das GPT-3 Turbo-Modell. Wie in der Dokumentation beschrieben, verwendet GPT-3.5 Turbo die API für Chatvervollständigungen und eignet sich hervorragend für unseren Anwendungsfall.
Voraussetzungen
Ein Azure-Abonnement
Gewähren des Zugriffs auf Azure OpenAI im gewünschten Abonnement
Derzeit wird der Zugriff auf diesen Dienst nur auf Antrag gewährt. Sie können den Zugriff auf Azure OpenAI beantragen, indem Sie das Formular unter https://aka.ms/oai/access ausfüllen.
Die Azure CLI muss installiert sein.
Erstellen einer Ressource und Bereitstellen eines Modells
Das Erstellen der Ressource und das Bereitstellen des Modells ist ein mehrstufiger Prozess. Verwenden Sie die Azure CLI, da das unter Umständen schneller ist die Verwendung des Azure-Portals. Beachten Sie jedoch, dass Sie das Azure-Portal verwenden können, falls Sie das wüschen.
Führen Sie den Befehl
az login
aus, um sich anzumelden, falls noch nicht geschehen.Beim Erstellen einer neuen Azure-Ressource haben Sie die Möglichkeit, eine neue Ressourcengruppe zu erstellen oder eine bereits vorhandene zu verwenden. Dieser Befehl zeigt, wie Sie eine neue Ressourcengruppe erstellen. Verwenden Sie den Namen HikingConversations-RG, aber Sie können durch einen Namen Ihrer Wahl oder den Namen einer vorhandenen Gruppe ersetzen.
az group create \ --name HikingConversations-RG \ --location eastus
az group create ` --name HikingConversations-RG ` --location eastus
Führen Sie den folgenden Befehl aus, um eine OpenAI-Ressource in der Ressourcengruppe HikingConversations-RG zu erstellen. Nennen Sie die OpenAI-Ressource 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
Als Nächstes möchten wir das GPT-35-Turbo-Modell für die von uns erstellte OpenAI-Ressource bereitstellen. Rufen Sie die Modellimplementierung HikingRecommendationTurbo auf. Beachten Sie, dass wird HikingConversations-RG als Ressourcengruppennamen verwenden und HikingConversationsAI als OpenAI-Ressourcenname. Wenn Sie unterschiedliche Werte verwendet haben, stellen Sie sicher, dass Sie diese Werte ersetzen.
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"
Nachdem die Ressource und das Modell erstellt wurden, müssen wir die Basis-URL und die Zugriffsschlüssel abrufen, damit das .NET SDK auf die Azure OpenAI-Ressource zugreifen kann. Verwenden Sie die folgenden Befehle, um den Endpunkt und die primären API-Schlüssel abzurufen und zur späteren Verwendung zu notieren:
Der Endpunkt
az cognitiveservices account show \ -g HikingConversations-RG \ -n HikingConversationsAI \ --query "properties.endpoint"
az cognitiveservices account show ` -g HikingConversations-RG ` -n HikingConversationsAI ` --query "properties.endpoint"
Der primäre API-Schlüssel
az cognitiveservices account keys list \ -g HikingConversations-RG \ -n HikingConversationsAI \ --query "key1"
az cognitiveservices account keys list ` -g HikingConversations-RG ` -n HikingConversationsAI ` --query "key1"
Erstellen der Konsolenanwendung und Hinzufügen des OpenAI SDK
Als Nächstes möchten wir eine reine .NET-Konsolenanwendung erstellen und das Azure OpenAI SDK hinzufügen.
Führen Sie Folgendes aus, um eine neue .NET-Anwendung mit dem Namen HikingConversationsAI zu erstellen.
dotnet new console -n HikingConversationsAI
Wechseln Sie zum neu erstellten Verzeichnis HikingConversationsAI.
cd HikingConversationsAI
Fügen Sie dann das Azure Open AI SDK hinzu.
dotnet add package Azure.AI.OpenAI --prerelease
Öffnen Sie das Projekt in VS Code oder Visual Studio.
Löschen Sie in der Datei Program.cs den gesamten vorhandenen Code.
Fügen Sie
using Azure.AI.OpenAI;
am Anfang der Datei Program.cs hinzu.Fügen Sie
using Azure;
am Anfang der Datei Program.cs hinzu.Fügen Sie drei Variablen auf Klassenebene hinzu, die Verweise auf den Endpunkt der Azure OpenAI-Ressource, den primären API-Schlüssel und den Namen des bereitgestellten Modells enthalten.
string openAIEndpoint = "<YOUR ENDPOINT URL VALUE>"; string openAIAPIKey = "<YOUR PRIMARY API KEY VALUE>"; string openAIDeploymentName = "HikingRecommendationTurbo";
In den obigen Schritten haben wir die Bereitstellung HikingRecommendationTurbo genannt. Wenn Sie einen anderen Wert verwendet haben, stellen Sie sicher, dass Sie diesen stattdessen verwenden.
Instanziieren Sie schließlich die Klasse, die für die Kommunikation mit der Azure OpenAI-Ressource erforderlich ist.
var endpoint = new Uri(openAIEndpoint); var credentials = new AzureKeyCredential(openAIAPIKey); var openAIClient = new AzureOpenAIClient(endpoint, credentials);
Erstellen der Systemaufforderung
Lassen Sie uns die anfängliche Systemrolleneingabeaufforderung erstellen, die die ersten Anweisungen für das Modell bereitstellt.
Erstellen Sie zuerst den Prompt, der das Modell anweist, wie es während der Unterhaltung bei der Empfehlung von Wanderungen handeln soll.
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. """;
Erstellen Sie als Nächstes ein
List<ChatMessage>
-Element, das alle Nachrichten enthält, die an das und vom Modell gesendet werden.List<ChatMessage> chatHistory = new();
Erstellen Sie dann ein neues
SystemChatMessage
-Objekt, und fügen Sie es der ListechatHistory
hinzu. Wir legen fest, dassChatMessage
aus der Systemrolle stammt.SystemChatMessage systemMessage = ChatMessage.CreateSystemMessage(systemPrompt); chatHistory.Add(systemMessage);
Initiieren der Unterhaltung
Als Nächstes senden wir die erste Nachricht an das Modell und initiieren die Unterhaltung.
Erstellen Sie eine Eingabeaufforderung für den Benutzer, und fügen Sie sie der
chatHistory
als Benutzernachricht hinzu.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}");
Jetzt müssen Sie einen Verweis auf das
ChatClient
-Objekt abrufen. Dieses Objekt ist für die Ermöglichung von Chatunterhaltungen mit dem Modell verantwortlich. Daher müssen Sie dem Azure OpenAI-Clientobjekt mitteilen, welches bereitgestellte Modell Sie verwenden möchten.var chatClient = openAIClient.GetChatClient(openAIDeploymentName);
Rufen Sie als Nächstes die
CompleteChatAsync
-Funktion derChatClient
-Klasse auf, und übergeben SiechatHistory
.var response = await chatClient.CompleteChatAsync(chatHistory);
Lesen Sie schließlich den Wert aus, den das Modell zurückgegeben hat.
Console.WriteLine($"AI >>> {response.Value.Content.Last().Text}");
Sehen wir uns an, was wir bisher haben. Sie können die Anwendung ausführen, indem Sie
dotnet run
in das Terminal eingeben.Experimentieren Sie, indem Sie den Wert der
userGreetingMessage
ändern, um zu sehen, wie das Modell möglicherweise anders reagiert.
In einer Beispielausführung haben wir Folgendes erhalten:
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?
Möglicherweise erhalten Sie etwas anderes, da das Modell nicht deterministisch ist oder mit derselben Eingabe auch eine andere Ausgabe erzeugt.
Fortsetzen der Unterhaltung
Lassen Sie uns fortfahren, indem Sie auf die Unterhaltung antworten und dann die Antwort ausgeben.
Stellen Sie sicher, dass der Kontext der Unterhaltung beibehalten wird. Fügen Sie daher die Antwort, die direkt zurückgekommen ist, der Liste
chatHistory
hinzu.var assistantMessage = ChatMessage.CreateAssistantMessage(response.Value.Content.Last().Text); chatHistory.Add(assistantMessage);
Erstellen Sie als Nächstes einen weiteren Benutzerprompt, und senden Sie ihn an das Modell.
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}");
Sie können experimentieren, indem Sie die Variable
hikeRequest
ändern, um verschiedene Arten von Wanderungen anzufordern. In einer Beispielausführung haben wir Folgendes erhalten: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!
Zusammenfassung
Wir können jetzt das Azure OpenAI SDK zusammen mit dem gpt-35-turbo
-Modell verwenden, um Unterhaltungen zu erstellen, die ihnen helfen, Wanderempfehlungen bereitzustellen. Als Nächstes sehen wir uns an, wie wir die Eingabeaufforderungen verbessern können, die wir an das Modell senden.