Delen via


.NET-functies aanroepen met behulp van een AI-model

In deze quickstart maakt u een .NET-console AI-chat-app die verbinding maakt met een AI-model met lokale functieaanroepen ingeschakeld. De app maakt gebruik van de Microsoft.Extensions.AI-bibliotheek, zodat u code kunt schrijven met behulp van AI-abstracties in plaats van een specifieke SDK. Met AI-abstracties kunt u het onderliggende AI-model wijzigen met minimale codewijzigingen.

Voorwaarden

Voorwaarden

De app maken

Voer de volgende stappen uit om een .NET-console-app te maken om verbinding te maken met een AI-model.

  1. Gebruik in een lege map op uw computer de opdracht dotnet new om een nieuwe console-app te maken:

    dotnet new console -o FunctionCallingAI
    
  2. Wijzig de map in de app-map:

    cd FunctionCallingAI
    
  3. Installeer de vereiste pakketten:

    dotnet add package Azure.Identity
    dotnet add package Azure.AI.OpenAI
    dotnet add package Microsoft.Extensions.AI
    dotnet add package Microsoft.Extensions.AI.OpenAI
    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
    dotnet add package Microsoft.Extensions.Configuration
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets
    
  4. Open de app in Visual Studio Code of uw editor naar keuze

    code .
    

De AI-service maken

  1. Als u een Azure OpenAI-service en -model wilt inrichten, voert u de stappen in het artikel Een Azure OpenAI-serviceresource maken en implementeren uit.

  2. Navigeer vanuit een terminal of opdrachtprompt naar de hoofdmap van uw projectmap.

  3. Voer de volgende opdrachten uit om uw Azure OpenAI-eindpunt en modelnaam voor de voorbeeld-app te configureren:

    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>
    

De app configureren

  1. Navigeer vanuit een terminal of opdrachtprompt naar de hoofdmap van uw .NET-project.

  2. Voer de volgende opdrachten uit om uw OpenAI API-sleutel als geheim te configureren voor de voorbeeld-app:

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

De app-code toevoegen

De app maakt gebruik van het Microsoft.Extensions.AI-pakket voor het verzenden en ontvangen van aanvragen naar het AI-model.

  1. Voeg in het bestand Program.cs de volgende code toe om verbinding te maken en te verifiëren bij het AI-model. Het ChatClient is ook geconfigureerd voor het gebruik van functie-aanroep, waardoor het AI-model .NET-functies in uw code kan aanroepen.

    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-5").AsIChatClient())
        .UseFunctionInvocation()
        .Build();
    
  2. Maak een nieuw ChatOptions-object dat een inlinefunctie bevat die het AI-model kan aanroepen om het huidige weer op te halen. De functiedeclaratie bevat een gemachtigde voor het uitvoeren van logica en naam- en beschrijvingsparameters om het doel van de functie voor het AI-model te beschrijven.

    // 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. Voeg een systeemprompt toe aan de chatHistory om context en instructies voor het model te bieden. Stuur een gebruikersprompt met een vraag waarvoor het AI-model de geregistreerde functie moet aanroepen om de vraag goed te beantwoorden.

    // 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. Gebruik de opdracht dotnet run om de app uit te voeren:

    dotnet run
    

    De app drukt het voltooiingsantwoord van het AI-model af, inclusief gegevens die door de .NET-functie worden geleverd. Het AI-model begreep dat de geregistreerde functie beschikbaar was en noemde deze automatisch om een correct antwoord te genereren.

Middelen opschonen

Als u deze niet meer nodig hebt, verwijdert u de Azure OpenAI-resource en GPT-4-modelimplementatie.

  1. Navigeer in Azure Portal naar de Azure OpenAI-resource.
  2. Selecteer de Azure OpenAI-resource en selecteer vervolgens verwijderen.

Volgende stappen