Bagikan melalui


Memanggil fungsi .NET menggunakan model AI

Dalam panduan cepat ini, Anda akan membuat aplikasi obrolan AI konsol .NET yang dihubungkan dengan model AI dengan panggilan fungsi lokal yang diaktifkan. Aplikasi ini menggunakan Microsoft.Extensions.AI pustaka sehingga Anda dapat menulis kode menggunakan abstraksi AI daripada SDK tertentu. Abstraksi AI memungkinkan Anda mengubah model AI yang mendasar dengan perubahan kode minimal.

Prasyarat

Prasyarat

Membuat aplikasi

Selesaikan langkah-langkah berikut untuk membuat aplikasi konsol .NET untuk menyambungkan ke model AI.

  1. Di direktori kosong di komputer Anda, gunakan perintah dotnet new untuk membuat aplikasi konsol baru:

    dotnet new console -o FunctionCallingAI
    
  2. Ubah direktori ke folder aplikasi:

    cd FunctionCallingAI
    
  3. Instal paket yang diperlukan:

    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. Buka aplikasi di Visual Studio Code atau editor pilihan Anda

    code .
    

Membuat layanan AI

  1. Untuk menyediakan layanan dan model Azure OpenAI, selesaikan langkah-langkah dalam artikel Membuat dan menyebarkan sumber daya Azure OpenAI Service .

  2. Gunakan terminal atau baris perintah, lalu pergi ke direktori proyek utama Anda.

  3. Jalankan perintah berikut untuk mengonfigurasi titik akhir Dan nama model Azure OpenAI Anda untuk aplikasi sampel:

    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>
    dotnet user-secrets set AZURE_OPENAI_API_KEY <your-Azure-OpenAI-key>
    

Mengonfigurasi aplikasi

  1. Arahkan ke direktori utama proyek .NET Anda dari terminal atau command prompt.

  2. Jalankan perintah berikut untuk mengonfigurasi kunci OPENAI API Anda sebagai rahasia untuk aplikasi sampel:

    dotnet user-secrets init
    dotnet user-secrets set OpenAIKey <your-OpenAI-key>
    dotnet user-secrets set ModelName <your-OpenAI-model-name>
    

Menambahkan kode aplikasi

Aplikasi ini menggunakan Microsoft.Extensions.AI paket untuk mengirim dan menerima permintaan ke model AI.

  1. Dalam file Program.cs, tambahkan kode berikut untuk menyambungkan dan mengautentikasi ke model AI. ChatClient juga dikonfigurasi untuk menggunakan pemanggilan fungsi, yang memungkinkan model AI untuk memanggil fungsi .NET dalam kode Anda.

    IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    string endpoint = config["AZURE_OPENAI_ENDPOINT"];
    string deployment = config["AZURE_OPENAI_GPT_NAME"];
    string apiKey = config["AZURE_OPENAI_API_KEY"];
    
    IChatClient client =
        new ChatClientBuilder(
            new AzureOpenAIClient(new Uri(endpoint), new AzureKeyCredential(apiKey))
            .GetChatClient(deployment).AsIChatClient())
        .UseFunctionInvocation()
        .Build();
    
    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. Buat objek baru ChatOptions yang berisi fungsi sebaris yang dapat dipanggil model AI untuk mendapatkan cuaca saat ini. Deklarasi fungsi mencakup delegasi untuk menjalankan parameter logika, dan nama dan deskripsi untuk menjelaskan tujuan fungsi ke model AI.

    // 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",
        "Gets the current weather in a given location")]
    };
    
  3. Tambahkan permintaan sistem ke chatHistory untuk memberikan konteks dan instruksi ke model. Kirim permintaan pengguna dengan pertanyaan yang memerlukan model AI untuk memanggil fungsi terdaftar untuk menjawab pertanyaan dengan benar.

    // 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. dotnet run Gunakan perintah untuk menjalankan aplikasi:

    dotnet run
    

    Aplikasi mencetak respons penyelesaian dari model AI, yang mencakup data yang disediakan oleh fungsi .NET. Model AI memahami bahwa fungsi terdaftar tersedia dan memanggilnya secara otomatis untuk menghasilkan respons yang tepat.

Membersihkan sumber daya

Jika Anda tidak lagi membutuhkannya, hapus sumber daya Azure OpenAI dan penyebaran model GPT-4.

  1. Di Portal Azure, navigasikan ke sumber daya Azure OpenAI.
  2. Pilih sumber daya Azure OpenAI, lalu pilih Hapus.

Langkah berikutnya