Alıştırma - Azure OpenAI için .NET SDK'sını yükleme ve ilk uygulamanızı oluşturma
Metin ve sohbet tamamlamaları hakkında bilgi edindiğimize göre, bunları kullanan temel bir uygulama oluşturalım.
Yürüyüşçülerin patikalar önererek açık havada keşfetmesine yardımcı olan bir kuruluşta çalışıyorsunuz. Öneri işlevselliğine konuşma yapay zekası eklemeyi düşünüyor ve bir prototip oluşturmak istiyorsunuz.
GPT-35-Turbo modeli tarafından sağlanan Sohbet Tamamlama API'sini kullanmanız gerektiğine karar verirsiniz.
Azure OpenAI kaynağını oluşturma
İlk adım, Azure OpenAI kaynağını oluşturmak ve modeli dağıtmaktır. Şimdi bu alıştırmada GPT-3 Turbo modelini kullanalım. Belge notlarında belirtildiği gibi, GPT-3.5 Turbo Sohbet Tamamlamaları API'sini kullanır ve kullanım örneğimiz için mükemmeldir.
Önkoşullar
Bir Azure aboneliği
İstenen abonelikte Azure OpenAI'ye erişim izni verildi
Şu anda bu hizmete erişim yalnızca uygulama tarafından sağlanmaktadır. adresinden formu https://aka.ms/oai/accesstamamlayarak Azure OpenAI'ye erişim için başvurabilirsiniz.
Azure CLI yüklü
Kaynak oluşturma ve model dağıtma
Kaynağı oluşturmak ve modeli dağıtmak çok adımlı bir işlemdir. Azure portalını kullanmaktan daha hızlı olabileceğinden Azure CLI'yi kullanın. Ancak isterseniz Azure portalını kullanabileceğinizi unutmayın.
az login
Henüz yapmadıysanız oturum açmak için komutunu çalıştırın.Yeni bir Azure kaynağı oluşturduğunuzda, yeni bir kaynak grubu oluşturabilir veya mevcut bir kaynak grubunu kullanabilirsiniz. Bu komut, yeni bir kaynak grubunun nasıl oluşturulacağını gösterir. HikingConversations-RG adını kullanın, ancak istediğiniz adı değiştirebilir veya mevcut bir grubun adını kullanabilirsiniz.
az group create \ --name HikingConversations-RG \ --location eastus
az group create ` --name HikingConversations-RG ` --location eastus
Aşağıdaki komutu çalıştırarak HikingConversations-RG kaynak grubunda bir OpenAI kaynağı oluşturun. OpenAI kaynağına HikingConversationsAI adını verin.
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
Ardından GPT-35-Turbo modelini oluşturduğumuz OpenAI kaynağına dağıtmak istiyoruz. Model dağıtımını HikingRecommendationTurbo olarak çağırın. Kaynak grubu adı olarak HikingConversations-RG, OpenAI kaynak adı olarak HikingConversationsAI kullandığımızı unutmayın. Farklı değerler kullandıysanız bu değerleri değiştirdiğinizden emin olun.
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"
Kaynak ve model oluşturulduktan sonra.NET SDK'sının Azure OpenAI kaynağına erişebilmesi için temel URL'yi ve erişim anahtarlarını almalıyız. Uç nokta ve birincil API anahtarlarını almak ve bunları daha sonra kullanmak üzere not almak için şu komutları kullanın:
Uç nokta
az cognitiveservices account show \ -g HikingConversations-RG \ -n HikingConversationsAI \ --query "properties.endpoint"
az cognitiveservices account show ` -g HikingConversations-RG ` -n HikingConversationsAI ` --query "properties.endpoint"
Birincil API anahtarı
az cognitiveservices account keys list \ -g HikingConversations-RG \ -n HikingConversationsAI \ --query "key1"
az cognitiveservices account keys list ` -g HikingConversations-RG ` -n HikingConversationsAI ` --query "key1"
Konsol uygulamasını oluşturma ve OpenAI SDK'sını ekleme
Bir sonraki adımda çıplak kemikli bir .NET Konsol uygulaması oluşturmak ve Azure OpenAI SDK'sını eklemek istiyoruz.
Aşağıdaki komutu çalıştırarak HikingConversationsAI adlı yeni bir .NET uygulaması oluşturun.
dotnet new console -n HikingConversationsAI
Yeni oluşturulan HikingConversationsAI dizinine geçin.
cd HikingConversationsAI
Ardından Azure Open AI SDK'sını ekleyin.
dotnet add package Azure.AI.OpenAI --prerelease
Projeyi VS Code veya Visual Studio'da açın.
Program.cs dosyasında var olan tüm kodu silin.
Program.cs en üstüne ekleyin
using Azure.AI.OpenAI;
.Program.cs en üstüne ekleyin
using Azure;
.Azure OpenAI kaynağının uç noktası, birincil API anahtarı ve dağıttığınız modelin adını içeren üç sınıf düzeyinde değişken ekleyin.
string openAIEndpoint = "<YOUR ENDPOINT URL VALUE>"; string openAIAPIKey = "<YOUR PRIMARY API KEY VALUE>"; string openAIDeploymentName = "HikingRecommendationTurbo";
Yukarıdaki adımlarda dağıtıma HikingRecommendationTurbo adını verdik. Farklı bir değer kullandıysanız bunun yerine bunu kullandığınızdan emin olun.
Son olarak, Azure OpenAI kaynağıyla iletişim kurmak için gereken sınıfın örneğini oluşturun.
var endpoint = new Uri(openAIEndpoint); var credentials = new AzureKeyCredential(openAIAPIKey); var openAIClient = new AzureOpenAIClient(endpoint, credentials);
Sistem istemini oluşturma
Şimdi modele ilk yönergeleri sağlayacak ilk sistem rolü istemini oluşturalım.
İlk olarak modele yürüyüş önerilerinde bulunurken konuşma sırasında nasıl davranmasını istediğinizi belirten bir istem oluşturun.
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. """;
Ardından modele gönderilecek ve modelden gönderilecek tüm iletileri tutmak için bir
List<ChatMessage>
oluşturun.List<ChatMessage> chatHistory = new();
Ardından yeni
SystemChatMessage
bir nesne oluşturup listeye ekleyinchatHistory
. öğesini Sistem rolünden gelecek şekilde ayarlayacağızChatMessage
.SystemChatMessage systemMessage = ChatMessage.CreateSystemMessage(systemPrompt); chatHistory.Add(systemMessage);
Konuşmayı başlatma
Ardından modele ilk iletiyi göndereceğiz ve konuşma başlatacağız.
Kullanıcı için bir istem oluşturun ve bunu
chatHistory
kullanıcı iletisi olarak ekleyin.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}");
Şimdi nesneye
ChatClient
bir başvuru almanız gerekir. Bu nesne, modelle sohbet konuşmalarını kolaylaştırmakla sorumludur. Bu nedenle, Azure OpenAI İstemci nesnesine hangi modeli kullanmak istediğinizi söylemeniz gerekir.var chatClient = openAIClient.GetChatClient(openAIDeploymentName);
Daha sonra öğesini geçirerek sınıfının işlevini
ChatClient
çağırın.CompleteChatAsync
chatHistory
var response = await chatClient.CompleteChatAsync(chatHistory);
Son olarak, modelin döndürdiği değeri okuyun.
Console.WriteLine($"AI >>> {response.Value.Content.Last().Text}");
Şu ana kadar elimizde neler olduğunu görelim, terminale girerek
dotnet run
uygulamayı çalıştırabilirsiniz.Modelin
userGreetingMessage
farklı şekilde nasıl yanıt verebileceğini görmek için değerini değiştirerek denemeler yapın.
Bir örnek çalıştırmada şunları aldık:
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?
Model belirsiz olduğundan farklı bir şey alabilir veya aynı girişle bile farklı bir çıkış üretebilirsiniz.
Konuşmaya devam etme
Konuşmaya yanıt ve ardından yanıtı çıkararak devam edelim.
Konuşmanın bağlamını koruduğumuzdan emin olun, bu nedenle doğrudan
chatHistory
listeye geri gelen yanıtı ekleyin.var assistantMessage = ChatMessage.CreateAssistantMessage(response.Value.Content.Last().Text); chatHistory.Add(assistantMessage);
Ardından başka bir kullanıcı istemi oluşturun ve modele gönderin.
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}");
Değişkenini
hikeRequest
farklı türde yürüyüşler istemek üzere değiştirerek denemeler yapabilirsiniz. Bir örnek çalıştırmada şu komutu aldık: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!
Özet
Artık yürüyüş önerileri sağlamaya yardımcı olacak konuşmalar oluşturmak için modelle birlikte Azure OpenAI SDK'sını gpt-35-turbo
da kullanabiliriz. Şimdi modele gönderdiğimiz istemleri nasıl geliştirebileceğimizi görelim.