.NET ile yapay zeka sohbet uygulaması oluşturma
Basit bir .NET 8 konsol sohbet uygulaması oluşturarak OpenAI ve Semantic Kernel'i kullanmaya başlayın. Uygulama yerel olarak çalışır ve OpenAI gpt-3.5-turbo
modelini kullanır. OpenAI'ye erişmek ve Anlam Çekirdeği'ni kullanmayı öğrenmek için bu adımları izleyin.
Önkoşullar
- .NET 8.0 SDK - .NET 8.0 SDK'sını yükleyin.
- Bu örneği çalıştırabilmeniz için OpenAI'den bir API anahtarı.
- Windows'da PowerShell
v7+
gereklidir. Sürümünüzü doğrulamak için bir terminalde çalıştırınpwsh
. Geçerli sürümü döndürmelidir. Hata döndürürse aşağıdaki komutu yürütür:dotnet tool update --global PowerShell
.
Basit bir .NET 8 konsol sohbet uygulaması oluşturarak OpenAI ve Semantic Kernel'i kullanmaya başlayın. Uygulama yerel olarak çalışır ve Azure OpenAI'ye dağıtılan OpenAI gpt-35-turbo
modeline bağlanır. Azure OpenAI sağlamak ve Anlam Çekirdeği'ni kullanmayı öğrenmek için bu adımları izleyin.
Önkoşullar
- .NET 8 SDK - .NET 8 SDK'sını yükleyin.
- Azure aboneliği - Ücretsiz bir abonelik oluşturun.
- Azure Geliştirici CLI'sı - Azure Geliştirici CLI'sını yükleyin veya güncelleştirin.
- Azure OpenAI hizmetine erişim.
- Windows'da PowerShell
v7+
gereklidir. Sürümünüzü doğrulamak için bir terminalde çalıştırınpwsh
. Geçerli sürümü döndürmelidir. Hata döndürürse aşağıdaki komutu yürütür:dotnet tool update --global PowerShell
.
Örnek projeyi alma
Tüm hızlı başlangıçlar için örnek uygulamaları içeren GitHub deposunu kopyalayın:
git clone https://github.com/dotnet/ai-samples.git
Azure OpenAI hizmetini oluşturma
Örnek GitHub deposu, azd
Azure OpenAI hizmetini ve modelini sizin için sağlamak için kullanabileceğiniz bir Azure Geliştirici CLI (azd
) şablonu olarak yapılandırılmıştır.
Terminal veya komut isteminden örnek deponun src\quickstarts\azure-openai dizinine gidin.
azd up
Azure OpenAI kaynaklarını sağlamak için komutunu çalıştırın. Azure OpenAI hizmetinin oluşturulması ve modelin dağıtılması birkaç dakika sürebilir.azd up
azd
ayrıca OpenAI erişim anahtarı gibi örnek uygulama için gerekli kullanıcı gizli dizilerini yapılandırıyor.Not
Dağıtım sırasında
azd up
bir hatayla karşılaşırsanız sorun giderme bölümünü ziyaret edin.
HikerAI örneğini deneyin
Terminalden veya komut isteminden dizine
openai\02-HikerAI
gidin.OpenAI API anahtarınızı örnek uygulama için gizli dizi olarak yapılandırmak için aşağıdaki komutları çalıştırın:
dotnet user-secrets init dotnet user-secrets set OpenAIKey <your-openai-key>
dotnet run
Uygulamayı çalıştırmak için komutunu kullanın:dotnet run
Terminalden veya komut isteminden dizine
azure-openai\02-HikerAI
gidin.dotnet run
Uygulamayı çalıştırmak için komutunu kullanın:dotnet run
İpucu
Hata iletisi alırsanız, Azure OpenAI kaynaklarının dağıtımı tamamlanmamış olabilir. Birkaç dakika bekleyin ve yeniden deneyin.
Kodu keşfetme
Uygulama, OpenAI hizmetine istek göndermek ve almak için paketini kullanır Microsoft.SemanticKernel
.
Uygulama kodu Program.cs dosyasının içinde yer alır. İlk birkaç kod satırı yapılandırma değerlerini ayarlar ve komutu kullanılarak dotnet user-secrets
daha önce ayarlanmış olan OpenAI Anahtarını alır.
var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string model = "gpt-3.5-turbo";
string key = config["OpenAIKey"];
Hizmet, OpenAIChatCompletionService
istekleri ve yanıtları kolaylaştırır.
// Create the OpenAI Chat Completion Service
OpenAIChatCompletionService service = new(model, key);
Kodu keşfetme
Uygulama, Azure'da Microsoft.SemanticKernel
dağıtılan bir Azure OpenAI hizmetine istek göndermek ve almak için paketini kullanır.
Uygulamanın tamamı Program.cs dosyasının içinde yer alır. İlk birkaç kod satırı, uygulama sağlama sırasında sizin için içinde ayarlanan dotnet user-secrets
gizli dizileri ve yapılandırma değerlerini alır.
// Retrieve the local secrets saved during the Azure deployment
var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string endpoint = config["AZURE_OPENAI_ENDPOINT"];
string deployment = config["AZURE_OPENAI_GPT_NAME"];
string key = config["AZURE_OPENAI_KEY"];
Hizmet, AzureOpenAIChatCompletionService
istekleri ve yanıtları kolaylaştırır.
// Create the Azure OpenAI Chat Completion Service
AzureOpenAIChatCompletionService service = new(deployment, endpoint, key);
Modele daha fazla bağlam sağlamak için, konuşma sırasında model davranışını ve oluşturulan tamamlamaları etkileyen bir sistem istemi ekleyin.
// Start the conversation with context for the AI model
ChatHistory chatHistory = new("""
You are a hiking enthusiast who helps people discover fun hikes in their area.
You are upbeat and friendly. You introduce yourself when first saying hello.
When helping people out, you always ask them for this information
to inform the hiking recommendation you provide:
1. Where they are located
2. What hiking intensity they are looking for
You will then provide three suggestions for nearby hikes that vary in length
after you get that information. You will also share an interesting fact about
the local nature on the hikes when making a recommendation.
""");
işlevini kullanarak AddUserMessage
sohbet geçmişine bir kullanıcı iletisi ekleyin. modeline GetChatMessageContentAsync
sistem istemini ve kullanıcı isteğini temel alan bir yanıt oluşturmasını bildirmek için işlevini kullanın.
// Add user message to chat history
chatHistory.AddUserMessage("Hi! Apparently you can help me find a hike that I will like?");
// Print User Message to console
Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last().Content}");
// Get response
var response = await service.GetChatMessageContentAsync(
chatHistory, new OpenAIPromptExecutionSettings() { MaxTokens = 400 });
Sohbet geçmişini korumak için moddan yanıtı ekleyin.
// Add response to chat history
chatHistory.Add(response);
// Print Response to console
Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last().Content}");
Modelin beğendiğiniz bir yürüyüş bulmanıza nasıl yardımcı olduğunu görmek için sistem istemini ve kullanıcı iletisini özelleştirin.
Kaynakları temizleme
Örnek uygulamaya veya kaynaklara artık ihtiyacınız kalmadığında ilgili dağıtımı ve tüm kaynakları kaldırın.
azd down
Sorun giderme
Windows'ta, çalıştırdıktan azd up
sonra aşağıdaki hata iletilerini alabilirsiniz:
postprovision.ps1 dijital olarak imzalanmamıştır. Betik sistemde yürütülmeyecek
Postprovision.ps1 betiği, uygulamada kullanılan .NET kullanıcı gizli dizilerini ayarlamak için yürütülür. Bu hatayı önlemek için aşağıdaki PowerShell komutunu çalıştırın:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Ardından komutunu yeniden çalıştırın azd up
.
Başka bir olası hata:
'pwsh' bir iç veya dış komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmaz. UYARI: 'postprovision' kancası çıkış koduyla başarısız oldu: '1', Yol: '.\infra\post-script\postprovision.ps1'. : çıkış kodu: 1 ContinueOnError true olarak ayarlandığından yürütme devam edecek.
Postprovision.ps1 betiği, uygulamada kullanılan .NET kullanıcı gizli dizilerini ayarlamak için yürütülür. Bu hatayı önlemek için aşağıdaki PowerShell komutunu kullanarak betiği el ile çalıştırın:
.\infra\post-script\postprovision.ps1
.NET AI uygulamalarında artık kullanıcı gizli dizileri yapılandırılmıştır ve bunlar test edilebilir.