Dela via


Anropa .NET-funktioner med hjälp av en AI-modell

I den här snabbstarten skapar du en .NET-konsol-AI-chattapp för att ansluta till en AI-modell med lokalt funktionsanrop aktiverat. Appen använder Microsoft.Extensions.AI-biblioteket så att du kan skriva kod med AI-abstraktioner i stället för ett specifikt SDK. MED AI-abstraktioner kan du ändra den underliggande AI-modellen med minimala kodändringar.

Förutsättningar

Förutsättningar

Notera

Du kan också använda semantisk kernel för att utföra uppgifterna i den här artikeln. Semantisk kernel är en enkel SDK med öppen källkod som gör att du kan skapa AI-agenter och integrera de senaste AI-modellerna i dina .NET-appar.

Skapa appen

Slutför följande steg för att skapa en .NET-konsolapp för att ansluta till en AI-modell.

  1. I en tom katalog på datorn använder du kommandot dotnet new för att skapa en ny konsolapp:

    dotnet new console -o FunctionCallingAI
    
  2. Ändra katalog till appmappen:

    cd FunctionCallingAI
    
  3. Installera de paket som krävs:

    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. Öppna appen i Visual Studio Code eller valfri redigerare

    code .
    

Skapa AI-tjänsten

  1. Om du vill etablera en Azure OpenAI-tjänst och modell slutför du stegen i artikeln Skapa och distribuera en Azure OpenAI-tjänstresurs .

  2. Från en terminal eller kommandotolk navigerar du till rootkatalogen i din projektkatalog.

  3. Kör följande kommandon för att konfigurera Azure OpenAI-slutpunkten och modellnamnet för exempelappen:

    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>
    

Konfigurera appen

  1. Gå till roten av ditt .NET-projekt från en terminal eller kommandotolk.

  2. Kör följande kommandon för att konfigurera din OpenAI API-nyckel som en hemlighet för exempelappen:

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

Lägg till appkoden

Appen använder Microsoft.Extensions.AI-paketet för att skicka och ta emot begäranden till AI-modellen.

  1. I filen Program.cs lägger du till följande kod för att ansluta och autentisera till AI-modellen. ChatClient Är också konfigurerad för att använda funktionsanrop, vilket gör att AI-modellen kan anropa .NET-funktioner i koden.

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

    Notera

    DefaultAzureCredential söker efter autentiseringsuppgifter från ditt lokala verktyg. Om du inte använder azd-mallen för att etablera Azure OpenAI-resursen måste du tilldela Azure AI Developer rollen till det konto som du använde för att logga in på Visual Studio eller Azure CLI. Mer information finns i Autentisera till Azure AI-tjänster med .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. Skapa ett nytt ChatOptions objekt som innehåller en infogad funktion som AI-modellen kan anropa för att hämta det aktuella vädret. Funktionsdeklarationen innehåller ett ombud för att köra logik och namn- och beskrivningsparametrar för att beskriva syftet med funktionen för AI-modellen.

    // 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. Lägg till en systemprompt i chatHistory för att ge modellen kontext och instruktioner. Skicka en användarprompt med en fråga som kräver att AI-modellen anropar den registrerade funktionen för att besvara frågan korrekt.

    // 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. Använd kommandot dotnet run för att köra appen:

    dotnet run
    

    Appen skriver ut slutförandesvaret från AI-modellen, som innehåller data från .NET-funktionen. AI-modellen förstod att den registrerade funktionen var tillgänglig och anropade den automatiskt för att generera ett korrekt svar.

Rensa resurser

Om du inte längre behöver dem tar du bort Azure OpenAI-resursen och GPT-4-modelldistributionen.

  1. I Azure-portalengår du till Azure OpenAI-resursen.
  2. Välj Azure OpenAI-resursen och välj sedan Ta bort.

Nästa steg