Freigeben über


Chatten mit einem lokalen KI-Modell mithilfe von .NET

In dieser Schnellstartanleitung erfahren Sie, wie Sie eine .NET-Konsolenchat-App für Konversationen mit einem OpenAI- oder Azure OpenAI-Modell erstellen. Die App verwendet die Microsoft.Extensions.AI-Bibliothek, sodass Sie Code mithilfe von KI-Abstraktionen anstelle eines bestimmten SDKs schreiben können. KI-Abstraktionen ermöglichen Ihnen, das zugrunde liegende KI-Modell mit minimalen Codeänderungen zu modifizieren.

Voraussetzungen

Ausführen des lokalen KI-Modells

Führen Sie die folgenden Schritte aus, um ein lokales KI-Modell auf Ihrem Gerät zu konfigurieren und auszuführen. Viele verschiedene KI-Modelle sind für die lokale Ausführung verfügbar und wurden für verschiedene Aufgaben trainiert, z. B. für das Generieren von Code, das Analysieren von Bildern, für generative Chats oder für das Erstellen von Einbettungen. Für diese Schnellstartanleitung verwenden Sie das universelle phi3:mini-Modell. Dabei handelt es sich um eine kleine, aber fähige generative KI, die von Microsoft erstellt wurde.

  1. Öffnen Sie ein Terminalfenster, und überprüfen Sie, ob Ollama auf Ihrem Gerät verfügbar ist:

    ollama
    

    Wenn Ollama verfügbar ist, wird eine Liste der verfügbaren Befehle angezeigt.

  2. Ollama starten:

    ollama serve
    

    Wenn Ollama ausgeführt wird, wird eine Liste der verfügbaren Befehle angezeigt.

  3. Pullen Sie das phi3:mini-Modell aus der Registrierung von Ollama, und warten Sie, bis es heruntergeladen wurde:

    ollama pull phi3:mini
    
  4. Führen Sie nach Abschluss des Downloads das Modell aus:

    ollama run phi3:mini
    

    Ollama startet das phi3:mini-Modell und stellt eine Eingabeaufforderung für die Interaktion bereit.

Erstellen der .NET App

Führen Sie die folgenden Schritte aus, um eine .NET-Konsolen-App zu erstellen, die eine Verbindung mit Ihrem lokalen phi3:mini-KI-Modell herstellt:

  1. Navigieren Sie in einem Terminalfenster zu einem leeren Verzeichnis auf Ihrem Gerät, und erstellen Sie eine neue App mit dem Befehl dotnet new:

    dotnet new console -o LocalAI
    
  2. Fügen Sie die Microsoft.Extensions.AI.Ollama-Pakete zu Ihrer App hinzu:

    dotnet add package Microsoft.Extensions.AI.Ollama --prerelease
    
  3. Öffnen Sie die neue App im gewünschten Editor, z. B. in Visual Studio Code.

    code .
    

Herstellen einer Verbindung und Chatten mit dem KI-Modell

Das Semantic Kernel SDK bietet viele Dienste und Features, um eine Verbindung mit KI-Modellen herzustellen und Interaktionen zu verwalten. In den folgenden Schritten erstellen Sie eine einfache App, die eine Verbindung mit der lokalen KI herstellt und den Unterhaltungsverlauf speichert, um die Chaterfahrung zu verbessern.

  1. Öffnen Sie die Datei Program.cs, und ersetzen Sie den Inhalt der Datei durch den folgenden Code:

    using Microsoft.Extensions.AI;
    
    IChatClient chatClient = 
        new OllamaChatClient(new Uri("http://localhost:11434/"), "phi3:mini");
    
    // Start the conversation with context for the AI model
    List<ChatMessage> chatHistory = new();
    
    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();
    }
    

    Der obige Code leistet Folgendes:

    • Erstellt eine OllamaChatClient, die die Schnittstelle IChatClient implementiert.
      • Diese Schnittstelle bietet eine lose gekoppelte Abstraktion, mit der Sie mit KI-Modellen chatten können.
      • Sie können die zugrunde liegende Chat-Client-Implementierung später zu einem anderen Modell ändern, z. B. Azure OpenAI, ohne weiteren Code zu ändern.
    • Erstellt ein ChatHistory-Objekt, um die Nachrichten zwischen dem Benutzer und dem KI-Modell zu speichern.
    • Ruft einen Prompt des Benutzers ab und speichert sie in ChatHistory.
    • Sendet die Chatdaten an das KI-Modell, um eine Antwort zu generieren.

    Hinweis

    Ollama wird standardmäßig an Port 11434 ausgeführt. Daher ist der KI-Modellendpunkt auf http://localhost:11434 festgelegt.

  2. Führen Sie die App aus, und geben Sie einen Prompt in die Konsole ein, um eine Antwort von der KI zu erhalten, z. B.:

    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 a 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 for desktop apps and ASP.NET Core
    for modern web applications), mobile applications (.NET MAUI),
    IoT solutions, AI/ML projects, and much more with a vast array of prebuilt
    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. Die Antwort der KI ist genau, aber auch ausführlich. Der gespeicherte Chatverlauf ermöglicht es der KI, ihre Antwort zu ändern. Weisen Sie die KI an, die bereitgestellte Liste zu kürzen:

    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 (.NET MAUI), 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.
    

    Die aktualisierte Antwort der KI ist beim zweiten Mal viel kürzer. Aufgrund des verfügbaren Chatverlaufs konnte die KI das vorherige Ergebnis bewerten und kürzere Zusammenfassungen bereitstellen.

Nächste Schritte