Condividi tramite


Creare un'app di chat IA con .NET

Questa guida introduttiva illustra come creare un'app di chat console .NET conversazionale usando un modello OpenAI o Azure OpenAI. 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

Annotazioni

È anche possibile usare il kernel semantico per svolgere 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.

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 ChatAppAI
    
  2. Modificare la directory nella cartella dell'app:

    cd ChatAppAI
    
  3. Installare i pacchetti necessari:

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

Configurare l'app

  1. Vai alla radice del tuo progetto .NET da un terminale o da un 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

Questa app usa il Microsoft.Extensions.AI pacchetto per inviare e ricevere richieste al modello di intelligenza artificiale. L'app fornisce agli utenti informazioni sui sentieri per escursioni.

  1. Program.cs Nel file aggiungere il codice seguente per connettersi ed eseguire l'autenticazione al modello di intelligenza artificiale.

    IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    string endpoint = config["AZURE_OPENAI_ENDPOINT"];
    string deployment = config["AZURE_OPENAI_GPT_NAME"];
    
    IChatClient chatClient =
        new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential())
        .GetChatClient(deployment)
        .AsIChatClient();
    

    Annotazioni

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

    var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    string model = config["ModelName"];
    string key = config["OpenAIKey"];
    
    // Create the IChatClient
    IChatClient chatClient =
        new OpenAIClient(key).GetChatClient(model).AsIChatClient();
    
  2. Creare una richiesta di sistema per fornire al modello di intelligenza artificiale il contesto iniziale del ruolo e istruzioni sulle raccomandazioni per le escursioni:

    // Start the conversation with context for the AI model
    List<ChatMessage> chatHistory =
        [
            new ChatMessage(ChatRole.System, """
                You are a friendly hiking enthusiast who helps people discover fun hikes in their area.
                You introduce yourself when first saying hello.
                When helping people out, you always ask them for this information
                to inform the hiking recommendation you provide:
    
                1. The location where they would like to hike
                2. What hiking intensity they are looking for
    
                You will then provide three suggestions for nearby hikes that vary in length
                after you get that information. You will also share an interesting fact about
                the local nature on the hikes when making a recommendation. At the end of your
                response, ask if there is anything else you can help with.
            """)
        ];
    
  3. Creare un ciclo di conversazione che accetta una richiesta di input dall'utente, invia il prompt al modello e stampa il completamento della risposta:

    // Loop to get user input and stream AI response
    while (true)
    {
        // Get user prompt and add to chat history
        Console.WriteLine("Your prompt:");
        string? userPrompt = Console.ReadLine();
        chatHistory.Add(new ChatMessage(ChatRole.User, userPrompt));
    
        // Stream the AI response and add to chat history
        Console.WriteLine("AI Response:");
        string response = "";
        await foreach (ChatResponseUpdate item in
            chatClient.GetStreamingResponseAsync(chatHistory))
        {
            Console.Write(item.Text);
            response += item.Text;
        }
        chatHistory.Add(new ChatMessage(ChatRole.Assistant, response));
        Console.WriteLine();
    }
    
  4. Usare il comando dotnet run per eseguire l'app:

    dotnet run
    

    L'app stampa il risultato del completamento di un modello di intelligenza artificiale. Inviare richieste di completamento aggiuntive e porre altre domande per sperimentare la funzionalità di chat di intelligenza artificiale.

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