Partager via


Générer une application de conversation IA avec .NET

Dans ce guide de démarrage rapide, vous allez apprendre à créer une application de conversation de console .NET conversationnelle à l’aide d’un modèle OpenAI ou Azure OpenAI. L’application utilise la bibliothèque pour vous permettre d’écrire du Microsoft.Extensions.AI code à l’aide d’abstractions IA plutôt que d’un KIT de développement logiciel (SDK) spécifique. Les abstractions IA vous permettent de modifier le modèle IA sous-jacent avec des modifications de code minimales.

Remarque

La Microsoft.Extensions.AI bibliothèque est actuellement en préversion.

Prérequis

  • Kit de développement logiciel (SDK) .NET 8.0 : installez le Kit de développement logiciel (SDK) .NET 8.0.
  • Une clé API d’OpenAI pour pouvoir exécuter cet échantillon.
  • Sur Windows, PowerShell v7+ est requis. Pour valider votre version, exécutez pwsh dans un terminal. Elle doit retourner la version actuelle. Si une erreur est retournée, exécutez la commande suivante : dotnet tool update --global PowerShell.

Prérequis

Remarque

Vous pouvez également utiliser le noyau sémantique pour accomplir les tâches de cet article. Le noyau sémantique est un SDK open source léger qui vous permet de créer des agents IA et d’intégrer les derniers modèles IA à vos applications .NET.

Clonez l’exemple de dépôt

Vous pouvez créer votre propre application à l’aide des étapes décrites dans les sections à l’avance, ou vous pouvez cloner le dépôt GitHub qui contient les exemples d’applications terminés pour tous les guides de démarrage rapide. Si vous envisagez d’utiliser Azure OpenAI, l’exemple de dépôt est également structuré en tant que modèle Azure Developer CLI qui peut approvisionner une ressource Azure OpenAI pour vous.

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

Créer l’application

Effectuez les étapes suivantes pour créer une application console .NET pour vous connecter à un modèle IA.

  1. Dans un répertoire vide sur votre ordinateur, utilisez la dotnet new commande pour créer une application console :

    dotnet new console -o ChatAppAI
    
  2. Modifiez le répertoire dans le dossier de l’application :

    cd ChatAppAI
    
  3. Installez les packages nécessaires :

    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. Ouvrez l’application dans Visual Studio Code (ou votre éditeur de votre choix).

    code .
    

Créer le service IA

L’exemple de référentiel GitHub est structuré en tant que modèle Azure Developer CLI (azd), que azd peut utiliser pour approvisionner le service et le modèle Azure OpenAI pour vous.

  1. À partir d’un terminal ou d’une invite de commandes, accédez au src\quickstarts\azure-openai répertoire de l’exemple de dépôt.

  2. Exécutez la commande azd up pour approvisionner les ressources Azure OpenAI. La création du service Azure OpenAI et le déploiement du modèle peuvent prendre plusieurs minutes.

    azd up
    

    azd configure également les secrets utilisateur requis pour l’exemple d’application, comme le point de terminaison Azure OpenAI et le nom du modèle.

Configurer l’application

  1. Accédez à la racine de votre projet .NET à partir d’un terminal ou d’une invite de commandes.

  2. Exécutez les commandes suivantes pour configurer votre clé API OpenAI en tant que secret pour l’exemple d’application :

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

Ajouter le code de l’application

L’application utilise le Microsoft.Extensions.AI package pour envoyer et recevoir des demandes au modèle IA et est conçue pour fournir aux utilisateurs des informations sur les sentiers de randonnée.

  1. Dans le fichier Program.cs , ajoutez le code suivant pour vous connecter et vous authentifier auprès du modèle IA.

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

    Remarque

    DefaultAzureCredential recherche les informations d’identification d’authentification à partir de vos outils locaux. Si vous n’utilisez pas le azd modèle pour approvisionner la ressource Azure OpenAI, vous devez attribuer le Azure AI Developer rôle au compte que vous avez utilisé pour vous connecter à Visual Studio ou à Azure CLI. Pour plus d’informations, consultez S’authentifier auprès des services Azure AI avec .NET.

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.AI;
    using OpenAI;
    
    var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    string model = config["ModelName"];
    string key = config["OpenAIKey"];
    
    // Create the IChatClient
    IChatClient chatClient =
        new OpenAIClient(key).AsChatClient(model);
    
  2. Créez une invite système pour fournir au modèle IA un contexte de rôle initial et des instructions sur les recommandations de randonnée :

    // Start the conversation with context for the AI model
    List<ChatMessage> chatHistory = new()
        {
            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. Créez une boucle conversationnelle qui accepte une invite d’entrée de l’utilisateur, envoie l’invite au modèle et imprime l’achèvement de la réponse :

    while (true)
    {
        // Get user prompt and add to chat history
        Console.WriteLine("Your prompt:");
        var userPrompt = Console.ReadLine();
        chatHistory.Add(new ChatMessage(ChatRole.User, userPrompt));
    
        // Stream the AI response and add to chat history
        Console.WriteLine("AI Response:");
        var response = "";
        await foreach (var item in
            chatClient.CompleteStreamingAsync(chatHistory))
        {
            Console.Write(item.Text);
            response += item.Text;
        }
        chatHistory.Add(new ChatMessage(ChatRole.Assistant, response));
        Console.WriteLine();
    }
    
  4. Utilisez la commande dotnet run pour exécuter l’application :

    dotnet run
    

    L’application imprime la réponse d’achèvement du modèle IA. Envoyez des invites de suivi supplémentaires et posez d’autres questions pour tester la fonctionnalité de conversation IA.

Nettoyer les ressources

Lorsque vous n’avez plus besoin de l’exemple d’application ou de ressources, supprimez le déploiement correspondant et toutes les ressources.

azd down

Étapes suivantes