Chatten mit einem lokalen KI-Modell mit .NET und semantischem Kernel
Lokale KI-Modelle bieten leistungsstarke und flexible Optionen zum Erstellen von KI-Lösungen. In dieser Schnellstartanleitung erfahren Sie, wie Sie ein lokales KI-Modell mit .NET und dem Semantic Kernel SDK einrichten und eine Verbindung damit herstellen. In diesem Beispiel führen Sie das lokale KI-Modell mit Ollama aus.
Voraussetzungen
- Installation von .NET 8.0 oder höher
- Lokale Installation von Ollama auf Ihrem Gerät
- Visual Studio Code (optional)
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.
Öffnen Sie ein Terminalfenster, und überprüfen Sie, ob Ollama auf Ihrem Gerät verfügbar ist:
ollama
Wenn Ollama ausgeführt wird, wird eine Liste der verfügbaren Befehle angezeigt.
Pullen Sie das
phi3:mini
-Modell aus der Registrierung von Ollama, und warten Sie, bis es heruntergeladen wurde:ollama pull phi3:mini
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:
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
Fügen Sie ihrer App das Semantik Kernel SDK und die Pakete für den semantischen Kernel Ollama-Connector hinzu:
dotnet add package Microsoft.SemanticKernel dotnet add package Microsoft.SemanticKernel.Connectors.Ollama
Ö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.
Öffnen Sie die Datei Program.cs, und ersetzen Sie den Inhalt der Datei durch den folgenden Code:
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(); }
Der obige Code erfüllt folgende Aufgaben:
- Erstellt ein
Kernel
-Objekt und verwendet es zum Abrufen eines Chatvervollständigungsdiensts. - 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.- Erstellt ein
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 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.
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 (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.
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.