Condividi tramite


Richiamare le funzioni .NET usando un modello di intelligenza artificiale

In questa guida rapida, si crea un'app console .NET per chat AI che si connette a un modello di intelligenza artificiale con chiamata di funzioni locali. L'app usa la libreria di Microsoft.Extensions.AI in modo da poter scrivere codice usando astrazioni di intelligenza artificiale anziché un SDK specifico. Le astrazioni di intelligenza artificiale consentono di modificare il modello di intelligenza artificiale sottostante con modifiche minime al codice.

Prerequisiti

Prerequisiti

Creare l'app

Completare i passaggi seguenti per creare un'app console .NET per connettersi a un modello di intelligenza artificiale.

  1. In una directory vuota nel computer usare il comando dotnet new per creare una nuova app console:

    dotnet new console -o FunctionCallingAI
    
  2. Modificare la directory nella cartella dell'app:

    cd FunctionCallingAI
    
  3. Installare i pacchetti necessari:

    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. Aprire l'app in Visual Studio Code o nell'editor preferito

    code .
    

Creare il servizio di intelligenza artificiale

  1. Per effettuare il provisioning di un servizio e un modello OpenAI di Azure, completare la procedura descritta nell'articolo Creare e distribuire una risorsa del servizio OpenAI di Azure .

  2. Dal terminale o dal prompt dei comandi, vai alla cartella principale della directory del progetto.

  3. Eseguire i comandi seguenti per configurare l'endpoint OpenAI di Azure e il nome del modello per l'app di esempio:

    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>
    

Configurare l'app

  1. Passare alla radice del proprio progetto .NET da un terminale o dal prompt dei comandi.

  2. Eseguire i comandi seguenti per configurare la chiave API OpenAI come segreto per l'app di esempio:

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

Aggiungere il codice dell'app

L'app usa il pacchetto Microsoft.Extensions.AI per inviare e ricevere richieste al modello di intelligenza artificiale.

  1. Nel file Program.cs aggiungere il codice seguente per connettersi ed eseguire l'autenticazione al modello di intelligenza artificiale. ChatClient è configurato anche per l'uso della chiamata di funzione, che consente al modello di intelligenza artificiale di chiamare le funzioni .NET nel codice.

    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. Creare un nuovo oggetto ChatOptions che contiene una funzione inline che il modello di intelligenza artificiale può chiamare per ottenere il meteo corrente. La dichiarazione di funzione include un delegato per eseguire la logica e i parametri di nome e descrizione per descrivere lo scopo della funzione al modello di intelligenza artificiale.

    // 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. Aggiungere una richiesta di sistema al chatHistory per fornire contesto e istruzioni al modello. Inviare una richiesta dell'utente con una domanda che richiede al modello di intelligenza artificiale di chiamare la funzione registrata per rispondere correttamente alla domanda.

    // 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. Usare il comando dotnet run per eseguire l'app:

    dotnet run
    

    L'app stampa la risposta di completamento dal modello di intelligenza artificiale, che include i dati forniti dalla funzione .NET. Il modello di intelligenza artificiale ha capito che la funzione registrata era disponibile e ha chiamato automaticamente per generare una risposta corretta.

Pulire le risorse

Se non sono più necessari, eliminare la risorsa OpenAI di Azure e la distribuzione del modello GPT-4.

  1. Nel portale di Azure passare alla risorsa OpenAI di Azure.
  2. Selezionare la risorsa OpenAI di Azure e quindi selezionare Elimina.

Passaggi successivi