Chatten met een lokaal AI-model met behulp van .NET
In deze snelstartgids leert u hoe u een gespreksapp maakt voor een .NET-console door gebruik te maken van een OpenAI- of Azure OpenAI-model. De app maakt gebruik van de Microsoft.Extensions.AI
-bibliotheek, zodat u code kunt schrijven met behulp van AI-abstracties in plaats van een specifieke SDK. Met AI-abstracties kunt u het onderliggende AI-model wijzigen met minimale codewijzigingen.
Vereisten
- .NET 8.0 of hoger installeren
- Ollama lokaal installeren op uw apparaat
- Visual Studio Code (optioneel)
Het lokale AI-model uitvoeren
Voer de volgende stappen uit om een lokaal AI-model op uw apparaat te configureren en uit te voeren. Er zijn veel verschillende AI-modellen beschikbaar om lokaal te worden uitgevoerd en worden getraind voor verschillende taken, zoals het genereren van code, het analyseren van afbeeldingen, generatieve chats of het maken van insluitingen. Voor deze quickstart gebruikt u het model voor algemeen gebruik phi3:mini
. Dit is een kleine maar geschikte AI die door Microsoft is gemaakt.
Open een terminalvenster en controleer of Ollama beschikbaar is op uw apparaat:
ollama
Als Ollama beschikbaar is, wordt er een lijst met beschikbare opdrachten weergegeven.
Start Ollama:
ollama serve
Als Ollama wordt uitgevoerd, wordt er een lijst met beschikbare opdrachten weergegeven.
Haal het
phi3:mini
model op uit het Ollama-register en wacht totdat het is gedownload:ollama pull phi3:mini
Nadat het downloaden is voltooid, voert u het model uit:
ollama run phi3:mini
Ollama start het
phi3:mini
model en geeft u een prompt om ermee te communiceren.
De .NET-app maken
Voer de volgende stappen uit om een .NET-console-app te maken die verbinding maakt met uw lokale phi3:mini
AI-model:
Navigeer in een terminalvenster naar een lege map op uw apparaat en maak een nieuwe app met de
dotnet new
opdracht:dotnet new console -o LocalAI
Voeg de Microsoft.Extensions.AI.Ollama pakketten toe aan uw app:
dotnet add package Microsoft.Extensions.AI.Ollama --prerelease
Open de nieuwe app in uw gewenste editor, zoals Visual Studio Code.
code .
Verbinding maken met en chatten met het AI-model
De Semantic Kernel SDK biedt veel services en functies om verbinding te maken met AI-modellen en interacties te beheren. In de volgende stappen maakt u een eenvoudige app die verbinding maakt met de lokale AI en de gespreksgeschiedenis opslaat om de chatervaring te verbeteren.
Open het bestand Program.cs en vervang de inhoud van het bestand door de volgende 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(); }
De voorgaande code bereikt het volgende:
- Hiermee maakt u een
OllamaChatClient
waarmee deIChatClient
-interface wordt geïmplementeerd.- Deze interface biedt een losjes gekoppelde abstractie die u kunt gebruiken om te chatten met AI-modellen.
- U kunt de onderliggende implementatie van de chatclient later wijzigen in een ander model, zoals Azure OpenAI, zonder andere code te wijzigen.
- Hiermee maakt u een
ChatHistory
object voor het opslaan van de berichten tussen de gebruiker en het AI-model. - Haalt een prompt van de gebruiker op en slaat deze op in de
ChatHistory
. - Verzendt de chatgegevens naar het AI-model om een antwoord te genereren.
Notitie
Ollama wordt standaard uitgevoerd op poort 11434, waardoor het AI-modeleindpunt is ingesteld op
http://localhost:11434
.- Hiermee maakt u een
Voer de app uit en voer een prompt in de console in om een antwoord van de AI te ontvangen, zoals het volgende:
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.
Het antwoord van de AI is nauwkeurig, maar ook uitgebreid. Met de opgeslagen chatgeschiedenis kan de AI het antwoord ervan wijzigen. Instrueer de AI om de opgegeven lijst te verkorten:
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.
Het bijgewerkte antwoord van de AI is de tweede keer veel korter. Vanwege de beschikbare chatgeschiedenis kon de AI het vorige resultaat beoordelen en kortere samenvattingen geven.