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, belirli bir SDK yerine yapay zeka soyutlamalarını kullanarak kod yazabilmeniz için Microsoft.Extensions.AI kitaplığını kullanır. Yapay zeka soyutlamaları, temel alınan yapay zeka modelini en az kod değişikliğiyle değiştirmenize olanak tanır.

Önkoşullar

  • .NET 8.0 SDK veya üzeri - .NET 8.0 SDK'sınıyükleyin.
  • Bu örneği çalıştırabilmeniz için OpenAI API anahtarı.

Önkoşullar

Not

Bu makaledeki görevleri gerçekleştirmek için Anlam Çekirdeği 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.

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 yeni bir konsol uygulaması oluşturmak için dotnet new komutunu kullanın:

    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 --prerelease
    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 --prerelease
    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

  1. Azure OpenAI hizmeti ve modeli sağlamak için Azure OpenAI Hizmeti kaynak oluşturma ve dağıtma makalesindeki adımları tamamlayın.

  2. Terminal veya komut isteminden proje dizininizin köküne gidin.

  3. Örnek uygulama için Azure OpenAI uç noktanızı ve model adınızı yapılandırmak için aşağıdaki komutları çalıştırın:

    dotnet user-secrets init
    dotnet user-secrets set AZURE_OPENAI_ENDPOINT <your-Azure-OpenAI-endpoint>
    dotnet user-secrets set AZURE_OPENAI_GPT_NAME <your-Azure-OpenAI-model-name>
    

Uygulamayı yapılandırma

  1. Terminalden veya komut isteminden .NET projenizin 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 istek göndermek ve almak için Microsoft.Extensions.AI 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. ChatClient, yapay zeka modelinin kodunuzdaki .NET işlevlerini çağırmasına olanak tanıyan işlev çağrısını kullanacak şekilde de 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(
            new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential())
            .GetChatClient(deployment).AsIChatClient())
        .UseFunctionInvocation()
        .Build();
    

    Not

    DefaultAzureCredential yerel araçlarınız aracılığıyla kimlik doğrulama bilgilerini arar. Azure OpenAI kaynağını sağlamak için azd şablonunu kullanmıyorsanız, Visual Studio'da veya Azure CLI'da oturum açarken kullandığınız hesaba Azure AI Developer rolünü atamanız gerekir. Daha fazla bilgi için bkz. .NET ile Azure AI hizmetlerinde kimlik doğrulaması.

    using Microsoft.Extensions.AI;
    using Microsoft.Extensions.Configuration;
    using OpenAI;
    
    IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    string? model = config["ModelName"];
    string? key = config["OpenAIKey"];
    
    IChatClient client =
        new ChatClientBuilder(new OpenAIClient(key).GetChatClient(model ?? "gpt-4o").AsIChatClient())
        .UseFunctionInvocation()
        .Build();
    
  2. Geçerli hava durumunu almak için yapay zeka modelinin çağırabileceği satır içi işlevi içeren yeni bir ChatOptions nesnesi oluşturun. İşlev bildirimi, mantığı çalıştırmak için bir temsilci ve işlevin yapay zeka modeline amacını açıklamak için ad ve açıklama parametrelerini 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 bağlam ve yönergeler sağlamak için chatHistory'a bir sistem komutu 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()}");
    
    ChatResponse response = await client.GetResponseAsync(chatHistory, chatOptions);
    Console.WriteLine($"Assistant >>> {response.Text}");
    
  4. uygulamayı çalıştırmak için dotnet run komutunu kullanın:

    dotnet run
    

    Uygulama, .NET işlevi tarafından sağlanan verileri içeren yapay zeka modelinden tamamlama yanıtını 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

Artık bunlara ihtiyacınız yoksa Azure OpenAI kaynağını ve GPT-4 model dağıtımını silin.

  1. Azure Portalüzerinde Azure OpenAI kaynağına gidin.
  2. Azure OpenAI kaynağını seçin ve ardından Silöğesini seçin.

Sonraki adımlar

  • Hızlı Başlangıç - .NET ile yapay zeka sohbet uygulaması oluşturma
  • .NET ve Azure OpenAI Tamamlamaları ile metin ve konuşma oluşturma