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 --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. 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-4o").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 de Azure Portalnaar de Azure OpenAI-resource.
  2. Selecteer de Azure OpenAI-resource en selecteer vervolgens verwijderen.

Volgende stappen