Yapay zeka modeli kullanarak .NET işlevlerini çağırma
Bu hızlı başlangıçta, yerel işlev çağrısının etkinleştirildiği bir yapay zeka modeline bağlanmak için bir .NET konsol yapay zeka sohbet uygulaması oluşturacaksınız. Uygulama kitaplığını Microsoft.Extensions.AI
kullanarak belirli bir SDK yerine yapay zeka soyutlamalarını kullanarak kod yazabilirsiniz. Yapay zeka soyutlamaları, temel alınan yapay zeka modelini en az kod değişikliğiyle değiştirmenize olanak tanır.
Not
Kitaplık Microsoft.Extensions.AI
şu anda Önizleme aşamasındadır.
Ö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
.
Ö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.
Not
Bu makaledeki görevleri gerçekleştirmek için Anlam Çekirdeği'ni de kullanabilirsiniz. Anlam Çekirdeği, yapay zeka aracıları oluşturmanıza ve en son yapay zeka modellerini .NET uygulamalarınızla tümleştirmenize olanak tanıyan basit, açık kaynaklı bir SDK'dır.
Ö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
Uygulamayı oluşturma
Bir yapay zeka modeline bağlanmak üzere bir .NET konsol uygulaması oluşturmak için aşağıdaki adımları tamamlayın.
Bilgisayarınızdaki boş bir dizinde komutunu kullanarak
dotnet new
yeni bir konsol uygulaması oluşturun:dotnet new console -o FunctionCallingAI
Dizini uygulama klasörüne değiştirin:
cd FunctionCallingAI
Gerekli paketleri yükleyin:
dotnet add package Azure.Identity dotnet add package Azure.AI.OpenAI dotnet add package Microsoft.Extensions.AI dotnet add package Microsoft.Extensions.AI.OpenAI dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecrets
dotnet add package Microsoft.Extensions.AI dotnet add package Microsoft.Extensions.AI.OpenAI dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecrets
Uygulamayı Visual Studio code'da veya seçtiğiniz düzenleyicide açma
code .
Yapay zeka 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.
Uygulamayı yapılandırma
Terminalden veya komut isteminden .NET projet'inizin köküne 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 user-secrets set ModelName <your-openai-model-name>
Uygulama kodunu ekleme
Uygulama, yapay zeka modeline Microsoft.Extensions.AI
istek göndermek ve almak için paketini kullanır.
Program.cs dosyasında, yapay zeka modeline bağlanmak ve kimlik doğrulaması yapmak için aşağıdaki kodu ekleyin. ayrıca
ChatClient
kodunuzdaki .NET işlevlerinin yapay zeka modeli tarafından çağrılmasını sağlayan işlev çağrısını kullanacak şekilde yapılandırılır.using Microsoft.Extensions.Configuration; using Microsoft.Extensions.AI; using Azure.AI.OpenAI; using Azure.Identity; var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); string endpoint = config["AZURE_OPENAI_ENDPOINT"]; string deployment = config["AZURE_OPENAI_GPT_NAME"]; IChatClient client = new ChatClientBuilder() .UseFunctionInvocation() .Use( new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()) .AsChatClient(deployment));
Not
DefaultAzureCredential yerel araçlarınızdan kimlik doğrulama kimlik bilgilerini arar. Azure OpenAI kaynağını sağlamak için şablonu kullanmıyorsanız
azd
, rolü Visual Studio'da veya Azure CLI'da oturum açmak için kullandığınız hesaba atamanızAzure AI Developer
gerekir. Daha fazla bilgi için bkz . .NET ile Azure AI hizmetlerinde kimlik doğrulaması yapma.using Microsoft.Extensions.AI; using Microsoft.Extensions.Configuration; using OpenAI; var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); string model = config["ModelName"]; string key = config["OpenAIKey"]; IChatClient client = new ChatClientBuilder() .UseFunctionInvocation() .Use( new OpenAIClient(key) .AsChatClient(model));
Geçerli hava durumunu almak için yapay zeka modelinin çağırabileceği satır içi işlevi içeren yeni
ChatOptions
bir nesne oluşturun. İşlev bildirimi, işlevin yapay zeka modeline amacını açıklamak için mantık ve ad ve açıklama parametrelerini çalıştırmak için bir temsilci içerir.// Add a new plugin with a local .NET function that should be available to the AI model var chatOptions = new ChatOptions { Tools = [AIFunctionFactory.Create((string location, string unit) => { // Here you would call a weather API to get the weather for the location return "Periods of rain or drizzle, 15 C"; }, "get_current_weather", "Get the current weather in a given location")] };
Modele
chatHistory
bağlam ve yönergeler sağlamak için öğesine bir sistem istemi ekleyin. Yapay zeka modelinin soruyu düzgün bir şekilde yanıtlamak için kayıtlı işlevi çağırmasını gerektiren bir soru içeren bir kullanıcı istemi gönderin.// System prompt to provide context List<ChatMessage> chatHistory = [new(ChatRole.System, """ You are a hiking enthusiast who helps people discover fun hikes in their area. You are upbeat and friendly. """)]; // Weather conversation relevant to the registered function chatHistory.Add(new ChatMessage(ChatRole.User, "I live in Montreal and I'm looking for a moderate intensity hike. What's the current weather like? ")); Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last()}"); var response = await client.CompleteAsync(chatHistory, chatOptions); chatHistory.Add(new ChatMessage(ChatRole.Assistant, response.Message.Contents)); Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last()}");
dotnet run
Uygulamayı çalıştırmak için komutunu kullanın:dotnet run
Uygulama, .NET işlevi tarafından sağlanan verileri içeren yapay zeka modelinden bir tamamlama yanıtı yazdırır. Yapay zeka modeli, kayıtlı işlevin kullanılabilir olduğunu anladı ve uygun bir yanıt oluşturmak için otomatik olarak çağrıldı.
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