Partager via


Discuter avec un modèle IA local à l’aide de Semantic Kernel et .NET

Les modèles IA locaux offrent des options puissantes et flexibles pour la création de solutions IA. Dans ce guide de démarrage rapide, vous allez découvrir comment configurer et se connecter à un modèle IA local à l’aide de .NET et du kit de développement logiciel (SDK) Semantic Kernel. Pour cet exemple, vous allez exécuter le modèle IA local à l’aide de Ollama.

Prérequis

Exécuter le modèle IA local

Effectuez les étapes suivantes pour configurer et exécuter un modèle IA local sur votre appareil. De nombreux modèles IA différents sont disponibles pour s’exécuter localement et sont entraînés pour différentes tâches, telles que la génération de code, l’analyse d’images, la conversation générative ou la création d’incorporations. Pour ce guide de démarrage rapide, vous allez utiliser le modèle à usage général phi3:mini, qui est une IA générative petite mais capable créée par Microsoft.

  1. Ouvrez une fenêtre de terminal et vérifiez que Ollama est disponible sur votre appareil :

    ollama
    

    Si Ollama est en cours d’exécution, il affiche une liste de commandes disponibles.

  2. Extrayez le modèle phi3:mini du registre Ollama et attendez qu’il soit téléchargé :

    ollama pull phi3:mini
    
  3. Une fois le téléchargement terminé, exécutez le modèle :

    ollama run phi3:mini
    

    Ollama démarre le modèle phi3:mini et vous invite à interagir avec lui.

Créer l’application .NET

Effectuez les étapes suivantes pour créer une application console .NET qui se connectera à votre modèle IA local phi3:mini :

  1. Dans une fenêtre de terminal, accédez à un répertoire vide sur votre appareil et créez une application avec la commande dotnet new :

    dotnet new console
    
  2. Ajoutez le Kit de développement logiciel (SDK) de noyau sémantique et les packages du connecteur Ollama de noyau sémantique à votre application :

    dotnet add package Microsoft.SemanticKernel
    dotnet add package Microsoft.SemanticKernel.Connectors.Ollama
    
  3. Ouvrez la nouvelle application dans l’éditeur de votre choix, par exemple Visual Studio Code.

    code .
    

Se connecter et discuter avec le modèle IA

Le kit de développement logiciel (SDK) Semantic Kernel fournit de nombreux services et fonctionnalités pour se connecter aux modèles IA et gérer les interactions. Dans les étapes à suivre, vous allez créer une application simple qui se connecte à l’IA locale et stocke l’historique des conversations pour améliorer l’expérience de conversation.

  1. Ouvrez le fichier Program.cs et remplacez le contenu du fichier par le code suivant :

    using Microsoft.SemanticKernel;
    using Microsoft.SemanticKernel.ChatCompletion;
    
    // Create a kernel with OpenAI chat completion
    // Warning due to the experimental state of some Semantic Kernel SDK features.
    #pragma warning disable SKEXP0070
    Kernel kernel = Kernel.CreateBuilder()
                        .AddOllamaChatCompletion(
                            modelId: "phi3:mini",
                            endpoint: new Uri("http://localhost:11434"))
                        .Build();
    
    var aiChatService = kernel.GetRequiredService<IChatCompletionService>();
    var chatHistory = new ChatHistory();
    
    while (true)
    {
        // Get user prompt and add to chat history
        Console.WriteLine("Your prompt:");
        var userPrompt = Console.ReadLine();
        chatHistory.Add(new ChatMessageContent(AuthorRole.User, userPrompt));
    
        // Stream the AI response and add to chat history
        Console.WriteLine("AI Response:");
        var response = "";
        await foreach(var item in 
            aiChatService.GetStreamingChatMessageContentsAsync(chatHistory))
        {
            Console.Write(item.Content);
            response += item.Content;
        }
        chatHistory.Add(new ChatMessageContent(AuthorRole.Assistant, response));
        Console.WriteLine();
    }
    

    Le code précédent effectue les tâches suivantes :

    • Crée un objet Kernel et l’utilise pour récupérer un service de saisie semi-automatique de conversation.
    • Crée un objet ChatHistory pour stocker les messages entre l’utilisateur et le modèle IA.
    • Récupère une invite à partir de l’utilisateur et la stocke dans le ChatHistory.
    • Envoie les données de conversation au modèle IA pour générer une réponse.

    Remarque

    Ollama s’exécute sur le port 11434 par défaut, c’est pourquoi le point de terminaison du modèle IA est défini sur http://localhost:11434.

  2. Exécutez l’application et entrez une invite dans la console pour recevoir une réponse de l’IA, par exemple :

    Your prompt:
    Tell me three facts about .NET.
    
    AI response:
    1. **Cross-Platform Development:** One of the significant strengths of .NET, 
    particularly its newer iterations (.NET Core and .NET 5+), is cross-platform support.
    It allows developers to build applications that run on Windows, Linux, macOS,
    and various other operating systems seamlessly, enhancing flexibility and
    reducing barriers for a wider range of users.
    
    2. **Rich Ecosystem and Library Support:** .NET has an incredibly rich ecosystem,
    comprising an extensive collection of libraries (such as those provided by the 
    official NuGet Package Manager), tools, and services. This allows developers 
    to work on web applications (.NET Framework for desktop apps and ASP.NET Core 
    for modern web applications), mobile applications (.NET MAUI or Xamarin.Forms),
    IoT solutions, AI/ML projects, and much more with a vast array of pre-built
    components available at their disposal.
    
    3. **Type Safety:** .NET operates under the Common Language Infrastructure (CLI) 
    model and employs managed code for executing applications. This approach inherently
    offers strong type safety checks which help in preventing many runtime errors that
    are common in languages like C/C++. It also enables features such as garbage collection,
    thus relieving developers from manual memory management. These characteristics enhance
    the reliability of .NET-developed software and improve productivity by catching
    issues early during development.
    
  3. La réponse de l’IA est précise, mais également détaillée. L’historique des conversations stockées permet à l’IA de modifier sa réponse. Demandez à l’IA de raccourcir la liste fournie :

    Your prompt:
    Shorten the length of each item in the previous response.
    
    AI Response:
     **Cross-platform Capabilities:** .NET allows building for various operating systems
    through platforms like .NET Core, promoting accessibility (Windows, Linux, macOS).
    
    **Extensive Ecosystem:** Offers a vast library selection via NuGet and tools for web
    (.NET Framework), mobile development (Maui/Xamarin.Forms), IoT, AI, providing rich
    capabilities to developers.
    
    **Type Safety & Reliability:** .NET's CLI model enforces strong typing and automatic
    garbage collection, mitigating runtime errors, thus enhancing application stability.
    

    La réponse mise à jour de l’IA est beaucoup plus courte la deuxième fois. En raison de l’historique de conversation disponible, l’IA a pu évaluer le résultat précédent et fournir des résumés plus courts.

Étapes suivantes