.NET AI sohbet uygulamasından verileriniz hakkında içgörüler edinin
OpenAI gpt-3.5-turbo
modeline bağlanmak için .NET 8 konsol uygulamasını kullanarak yapay zeka geliştirmeye başlayın. Yürüyüş verilerini analiz etmek ve içgörüler sağlamak için Anlam Çekirdeği'ni kullanarak yapay zeka modeline bağlanacaksınız.
Ö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
.
Azure'da dağıtılan bir OpenAI gpt-3.5-turbo
modeline bağlanmak için .NET 8 konsol uygulamasını kullanarak yapay zeka geliştirmeye başlayın. Yürüyüş verilerini analiz etmek ve içgörüler sağlamak için Anlam Çekirdeği'ni kullanarak yapay zeka modeline bağlanacaksınız.
Önkoşullar
- .NET 8 SDK - .NET 8 SDK'sını yükleyin.
- Azure aboneliği - Ücretsiz bir abonelik oluşturun.
- Azure OpenAI hizmetine erişim.
- Azure Geliştirici CLI'sı (İsteğe bağlı) - Azure Geliştirici CLI'sını yükleyin veya güncelleştirin.
Örnek projeyi alma
Örnek depoyu kopyalama
İlerideki bölümlerde yer alan adımları kullanarak kendi uygulamanızı oluşturabilir veya tüm hızlı başlangıçlar için tamamlanmış örnek uygulamaları içeren GitHub deposunu kopyalayabilirsiniz. Azure OpenAI kullanmayı planlıyorsanız, örnek depo sizin için bir Azure OpenAI kaynağı sağlayabilen bir Azure Geliştirici CLI şablonu olarak da yapılandırılmıştır.
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 Azure OpenAI uç noktası ve model adı gibi örnek uygulama için gerekli kullanıcı gizli dizilerini yapılandırıyor.
Yürüyüş sohbet örneğini deneyin
Terminalden veya komut isteminden dizine
src\quickstarts\openai\semantic-kernel\03-ChattingAboutMyHikes
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
semantic-kernel\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
.
Uygulamanın tamamı Program.cs dosyasının içinde yer alır. Kod kümesinin ilk birkaç satırı yapılandırma değerlerini ayarlar ve önceden komutu kullanılarak dotnet user-secrets
ayarlanan 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);
OpenAIChatCompletionService
İstemci oluşturulduktan sonra, uygulama dosyanın hikes.md
içeriğini okur ve bir sistem istemi ekleyerek modele daha fazla bağlam sağlamak için bunu kullanır. Bu, konuşma sırasında model davranışını ve oluşturulan tamamlamaları etkiler.
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 içinde ayarlanmış dotnet user-secrets
olan gizli dizileri ve yapılandırma değerlerini yükler.
// == 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"];
Hizmet, AzureOpenAIChatCompletionService
istekleri ve yanıtları kolaylaştırır.
// == Create the Azure OpenAI Chat Completion Service ==========
AzureOpenAIChatCompletionService service = new(deployment, endpoint, new DefaultAzureCredential());
OpenAIChatCompletionService
İstemci oluşturulduktan sonra, uygulama dosyanın hikes.md
içeriğini okur ve bir sistem istemi ekleyerek modele daha fazla bağlam sağlamak için bunu kullanır. Bu, konuşma sırasında model davranışını ve oluşturulan tamamlamaları etkiler.
// Provide context for the AI model
ChatHistory chatHistory = new($"""
You are upbeat and friendly. You introduce yourself when first saying hello.
Provide a short answer only based on the user hiking records below:
{File.ReadAllText("hikes.md")}
""");
Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last().Content}");
Aşağıdaki kod, işlevini kullanarak AddUserMessage
modele bir kullanıcı istemi ekler. işlevi, GetChatMessageContentAsync
modele sistem ve kullanıcı istemlerini temel alan bir yanıt oluşturmasını ister.
// Start the conversation
chatHistory.AddUserMessage("Hi!");
Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last().Content}");
chatHistory.Add(
await service.GetChatMessageContentAsync(
chatHistory,
new OpenAIPromptExecutionSettings()
{
MaxTokens = 400
}));
Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last().Content}");
Uygulama, sohbet geçmişini veya bağlamını korumak için modelin chatHistory
yanıtını öğesine ekler.
// Continue the conversation with a question.
chatHistory.AddUserMessage(
"I would like to know the ratio of the hikes I've done in Canada compared to other countries.");
Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last().Content}");
chatHistory.Add(await service.GetChatMessageContentAsync(
chatHistory,
new OpenAIPromptExecutionSettings()
{
MaxTokens = 400
}));
Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last().Content}");
Farklı sorular ve bağlam sağlamak için sistemi veya kullanıcı istemlerini özelleştirin:
- Yağmur yağarken kaç kez yürüyüş yaptım?
- 2021'de kaç kez yürüyüş yaptım?
Model, girişlerinize göre her istem için uygun bir yanıt oluşturur.
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.