Sdílet prostřednictvím


Vyvolání funkcí .NET pomocí modelu AI

V tomto rychlém startu vytvoříte chatovací aplikaci AI konzoly .NET, která se připojí k modelu AI s povoleným voláním místních funkcí. Aplikace používá knihovnu Microsoft.Extensions.AI, abyste mohli psát kód pomocí abstrakcí AI místo konkrétní sady SDK. Abstrakce AI umožňují změnit základní model AI s minimálními změnami kódu.

Požadavky

Požadavky

Vytvoření aplikace

Provedením následujících kroků vytvořte konzolovou aplikaci .NET pro připojení k modelu AI.

  1. V prázdném adresáři v počítači pomocí příkazu dotnet new vytvořte novou konzolovou aplikaci:

    dotnet new console -o FunctionCallingAI
    
  2. Změňte adresář do složky aplikace:

    cd FunctionCallingAI
    
  3. Nainstalujte požadované balíčky:

    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. Otevřete aplikaci v editoru Visual Studio Code nebo v editoru podle svého výběru.

    code .
    

Vytvoření služby AI

  1. Pokud chcete zřídit službu a model Azure OpenAI, proveďte kroky v článku Vytvoření a nasazení prostředku služby Azure OpenAI .

  2. Z terminálu nebo příkazového řádku přejděte do kořenového adresáře projektu.

  3. Spuštěním následujících příkazů nakonfigurujte koncový bod Azure OpenAI a název modelu pro ukázkovou aplikaci:

    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>
    

Konfigurace aplikace

  1. V terminálu nebo příkazovém řádku přejděte do kořenového adresáře projektu .NET.

  2. Spuštěním následujících příkazů nakonfigurujte klíč rozhraní API OpenAI jako tajný klíč pro ukázkovou aplikaci:

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

Přidání kódu aplikace

Aplikace používá balíček Microsoft.Extensions.AI k odesílání a přijímání požadavků na model AI.

  1. Do souboru Program.cs přidejte následující kód pro připojení a ověření modelu AI. Element ChatClient je také nakonfigurován tak, aby používal vyvolání funkcí, což umožňuje modelu AI volat funkce .NET ve vašem kódu.

    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. Vytvořte nový objekt ChatOptions, který obsahuje vloženou funkci, kterou model AI může volat za účelem získání aktuálního počasí. Deklarace funkce obsahuje delegáta ke spuštění logiky a parametry názvu a popisu, které popisují účel funkce modelu 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. Přidejte systémovou výzvu do chatHistory, která poskytne modelu kontext a pokyny. Odešle výzvu uživatele s dotazem, který vyžaduje, aby model AI volal zaregistrovanou funkci, aby správně odpověděl na otázku.

    // 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. Ke spuštění aplikace použijte příkaz dotnet run:

    dotnet run
    

    Aplikace vytiskne odpověď na dokončení z modelu AI, která obsahuje data poskytovaná funkcí .NET. Model AI pochopil, že registrovaná funkce byla k dispozici a volala ji automaticky, aby vygenerovala správnou odpověď.

Vyčistěte prostředky

Pokud už je nepotřebujete, odstraňte prostředek Azure OpenAI a odeberte nasazený model GPT-4.

  1. Na webu Azure Portalpřejděte k prostředku Azure OpenAI.
  2. Vyberte prostředek Azure OpenAI a pak vyberte Odstranit.

Další kroky