Partage 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 Microsoft.Extensions.AI afin de pouvoir écrire du 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.

Conditions préalables

Conditions préalables

Remarque

Vous pouvez également utiliser Semantic Kernel pour accomplir les tâches décrites dans cet article. Semantic Kernel est un noyau léger et open source qui vous permet de construire des agents d'IA et d'intégrer les derniers modèles d'IA dans vos applications .NET.

Créer l’application

Effectuez les étapes suivantes pour créer une application console .NET qui se connectera à un modèle d'IA.

  1. Dans un répertoire vide sur votre ordinateur, utilisez la commande dotnet new 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 --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. Ouvrez l’application dans Visual Studio Code (ou l’éditeur de votre choix).

    code .
    

Créer le service d’IA

  1. Pour provisionner un service et un modèle Azure OpenAI, suivez les étapes décrites dans l’article Créer et déployer une ressource Azure OpenAI Service .

  2. À partir d’un terminal ou d’une invite de commandes, accédez à la racine de votre répertoire de projet.

  3. Exécutez les commandes suivantes pour configurer votre point de terminaison Azure OpenAI et le nom du modèle pour l’exemple d’application :

    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>
    

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>
    

Ajoutez le code de l’application

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

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

    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();
    

    Remarque

    DefaultAzureCredential recherche les informations d'identification dans vos outils locaux. Si vous n’utilisez pas le modèle azd pour provisionner la ressource Azure OpenAI, vous devez affecter le rôle Azure AI Developer au compte que vous avez utilisé pour vous connecter à Visual Studio ou à Azure CLI. Pour plus d'informations, voir Authentification aux services Azure AI avec .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. 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 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 :

    // 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. 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

Si vous n’en avez plus besoin, supprimez la ressource Azure OpenAI et le déploiement de modèle GPT-4.

  1. Dans le portail Azure , accédez à la ressource Azure OpenAI.
  2. Sélectionnez la ressource Azure OpenAI, puis sélectionnez Supprimer.

Étapes suivantes