Udostępnij przez


Wywoływanie funkcji platformy .NET przy użyciu modelu AI

W tym przewodniku szybkiego startu utworzysz konsolową aplikację czatu AI w .NET, która łączy się z modelem sztucznej inteligencji z włączonym wywoływaniem funkcji lokalnej. Aplikacja używa biblioteki Microsoft.Extensions.AI, aby można było napisać kod przy użyciu abstrakcji sztucznej inteligencji, a nie określonego zestawu SDK. Abstrakcje sztucznej inteligencji umożliwiają zmianę bazowego modelu sztucznej inteligencji przy minimalnych zmianach kodu.

Wymagania wstępne

Wymagania wstępne

Tworzenie aplikacji

Wykonaj poniższe kroki, aby utworzyć aplikację konsolową platformy .NET w celu nawiązania połączenia z modelem sztucznej inteligencji.

  1. W pustym katalogu na komputerze użyj polecenia dotnet new, aby utworzyć nową aplikację konsolową:

    dotnet new console -o FunctionCallingAI
    
  2. Zmień katalog na folder aplikacji:

    cd FunctionCallingAI
    
  3. Zainstaluj wymagane pakiety:

    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. Otwórz aplikację w programie Visual Studio Code lub wybranym edytorze

    code .
    

Tworzenie usługi sztucznej inteligencji

  1. Aby aprowizować usługę Azure OpenAI i model, wykonaj kroki opisane w artykule Tworzenie i wdrażanie zasobu usługi Azure OpenAI Service .

  2. W terminalu lub wierszu polecenia przejdź do głównego katalogu projektu.

  3. Uruchom następujące polecenia, aby skonfigurować punkt końcowy i nazwę modelu usługi Azure OpenAI dla przykładowej aplikacji:

    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>
    

Konfigurowanie aplikacji

  1. Przejdź do katalogu głównego projektu platformy .NET z poziomu terminalu lub wiersza polecenia.

  2. Uruchom następujące polecenia, aby skonfigurować klucz API OpenAI jako sekret dla przykładowej aplikacji.

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

Dodawanie kodu aplikacji

Aplikacja używa Microsoft.Extensions.AI pakietu do wysyłania i odbierania żądań do modelu AI.

  1. W pliku Program.cs dodaj następujący kod, aby nawiązać połączenie i uwierzytelnić się w modelu AI. ChatClient jest również skonfigurowany do używania wywoływania funkcji, co pozwala modelowi AI na korzystanie z funkcji .NET w Twoim kodzie.

    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. Utwórz nowy ChatOptions obiekt, który zawiera funkcję śródliniową, którą model sztucznej inteligencji może wywołać, aby uzyskać bieżącą pogodę. Deklaracja funkcji zawiera delegata do uruchamiania logiki oraz parametry nazwy i opisu, aby przedstawić cel funkcji modelowi 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. Dodaj monit systemowy do elementu chatHistory , aby podać kontekst i instrukcje do modelu. Wyślij monit użytkownika z pytaniem, które wymaga, aby model sztucznej inteligencji wywołał zarejestrowaną funkcję w celu poprawnego udzielenia odpowiedzi na pytanie.

    // 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. Uruchom aplikację za pomocą polecenia dotnet run:

    dotnet run
    

    Aplikacja wyświetla odpowiedź ukończenia z modelu AI, który zawiera dane dostarczane przez funkcję .NET. Model sztucznej inteligencji zrozumiał, że zarejestrowana funkcja była dostępna i została wywołana automatycznie, aby wygenerować właściwą odpowiedź.

Czyszczenie zasobów

Jeśli już ich nie potrzebujesz, usuń zasób usługi Azure OpenAI oraz wdrożenie modelu GPT-4.

  1. W witrynie Azure Portalprzejdź do zasobu Azure OpenAI.
  2. Wybierz zasób Azure OpenAI, a następnie wybierz pozycję Usuń.

Następne kroki