Aracılığıyla paylaş


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ın pwsh . 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

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.

  1. Bilgisayarınızdaki boş bir dizinde komutunu kullanarak dotnet new yeni bir konsol uygulaması oluşturun:

    dotnet new console -o FunctionCallingAI
    
  2. Dizini uygulama klasörüne değiştirin:

    cd FunctionCallingAI
    
  3. 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
    
  4. 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.

  1. Terminal veya komut isteminden örnek deponun src\quickstarts\azure-openai dizinine gidin.

  2. 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

  1. Terminalden veya komut isteminden .NET projet'inizin köküne gidin.

  2. 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.

  1. 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ız Azure 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));
    
  2. 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")]
    };
    
  3. 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()}");
    
  4. 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

Sonraki adımlar