Condividi tramite


Connettersi a e richiedere un modello di intelligenza artificiale con .NET

In questa guida introduttiva si apprenderà come creare un'app di chat console .NET per connettersi e richiedere un modello OpenAI o Azure OpenAI. L'app usa la Microsoft.Extensions.AI libreria 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.

Nota

La Microsoft.Extensions.AI libreria è attualmente in anteprima.

Prerequisiti

  • .NET 8.0 SDK - Installare .NET 8.0 SDK.
  • Una chiave API da OpenAI per poter eseguire questo esempio.
  • In Windows è necessario PowerShell v7+. Per convalidare la versione, eseguire pwsh in un terminale. Dovrebbe restituire la versione corrente. Se restituisce un errore, eseguire il comando seguente: dotnet tool update --global PowerShell.

Prerequisiti

Nota

È anche possibile usare il kernel semantico per eseguire le attività in questo articolo. Semantic Kernel è un SDK leggero e open source che consente di creare agenti di intelligenza artificiale e integrare i modelli di intelligenza artificiale più recenti nelle app .NET.

Clonare il repository di esempio:

È possibile creare un'app personalizzata seguendo la procedura descritta nelle sezioni in anticipo oppure clonare il repository GitHub che contiene le app di esempio completate per tutte le guide introduttive. Se si prevede di usare Azure OpenAI, il repository di esempio è strutturato anche come modello dell'interfaccia della riga di comando per sviluppatori di Azure in grado di effettuare automaticamente il provisioning di una risorsa OpenAI di Azure.

git clone https://github.com/dotnet/ai-samples.git

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 dotnet new comando per creare una nuova app console:

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

    cd ExtensionsAI
    
  3. Installare i pacchetti necessari:

    dotnet add package Azure.Identity
    dotnet add package Azure.AI.OpenAI
    dotnet add package Microsoft.Extensions.AI.OpenAI
    dotnet add package Microsoft.Extensions.Configuration
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets
    
    dotnet add package OpenAI
    dotnet add package Microsoft.Extensions.AI.OpenAI
    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

Il repository GitHub di esempio è strutturato come modello dell'interfaccia della riga di comando per sviluppatori di Azure (azd), che azd può essere usato per effettuare il provisioning del servizio Azure OpenAI e del modello.

  1. Da un terminale o un prompt dei comandi passare alla src\quickstarts\azure-openai directory del repository di esempio.

  2. Eseguire il comando per effettuare il azd up provisioning delle risorse OpenAI di Azure. La creazione del Servizio Azure OpenAI e la distribuzione del modello possono richiedere alcuni minuti.

    azd up
    

    azd configura anche i segreti utente necessari per l'app di esempio, ad esempio l'endpoint OpenAI di Azure e il nome del modello.

Configurare l'app

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

  2. Usare i comandi seguenti per configurare la chiave API di 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 Microsoft.Extensions.AI pacchetto 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.

    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 AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential())
            .AsChatClient(deployment);
    

    Nota

    DefaultAzureCredential cerca le credenziali di autenticazione dagli strumenti locali. Se non si usa il modello per effettuare il azd provisioning della risorsa OpenAI di Azure, sarà necessario assegnare il Azure AI Developer ruolo all'account usato per accedere a Visual Studio o all'interfaccia della riga di comando di Azure. Per altre informazioni, vedere Eseguire l'autenticazione ai servizi di intelligenza artificiale di Azure con .NET.

    using Microsoft.Extensions.AI;
    using Microsoft.Extensions.Configuration;
    using OpenAI;
    
    var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    string model = config["ModelName"];
    string key = config["OpenAIKey"];
    
    // Create the IChatClient
    IChatClient client =
        new OpenAIClient(key).AsChatClient(model);
    
  2. Leggere il contenuto del benefits.md file e usarlo per creare un prompt per il modello. Il prompt indica al modello di riepilogare il contenuto del testo del file.

    // Create and print out the prompt
    string prompt = $"""
        summarize the the following text in 20 words or less:
        {File.ReadAllText("benefits.md")}
        """;
    
    Console.WriteLine($"user >>> {prompt}");
    
  3. Chiamare la InvokePromptAsync funzione per inviare il prompt al modello per generare una risposta.

    // Submit the prompt and print out the response
    ChatCompletion response = await client.CompleteAsync(prompt, new ChatOptions { MaxOutputTokens = 400 });
    Console.WriteLine($"assistant >>> {response}");
    
  4. Usare il comando dotnet run per eseguire l'app:

    dotnet run
    

    L'app stampa la risposta di completamento dal modello di intelligenza artificiale. Personalizzare il contenuto di testo del benefits.md file o la lunghezza del riepilogo per visualizzare le differenze nelle risposte.

Pulire le risorse

Quando l'applicazione o le risorse di esempio non sono più necessarie, rimuovere la distribuzione corrispondente e tutte le risorse.

azd down

Passaggi successivi