Bagikan melalui


Memanggil fungsi .NET menggunakan model AI

Dalam panduan memulai cepat ini, Anda membuat aplikasi obrolan AI konsol .NET untuk terhubung ke model AI dengan fungsi pemanggilan 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

Nota

Anda juga dapat menggunakan Semantic Kernel untuk menyelesaikan tugas dalam artikel ini. Semantic Kernel adalah SDK sumber terbuka ringan yang memungkinkan Anda membangun agen AI dan mengintegrasikan model AI terbaru ke dalam aplikasi .NET Anda.

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>
    

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.

    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();
    

    Nota

    DefaultAzureCredential mencari kredensial autentikasi dari perangkat lokal Anda. Jika Anda tidak menggunakan templat azd untuk menyediakan sumber daya Azure OpenAI, Anda harus menetapkan peran Azure AI Developer ke akun yang Anda gunakan untuk masuk ke Visual Studio atau Azure CLI. Untuk informasi selengkapnya, lihat Mengautentikasi dengan layanan Azure AI menggunakan .NET.

    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",
        "Get 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