Rozmowa z lokalnym modelem sztucznej inteligencji przy użyciu platformy .NET
Z tego przewodnika Szybki start dowiesz się, jak utworzyć konwersacyjną aplikację do czatu konsolowego platformy .NET przy użyciu modelu OpenAI lub Azure OpenAI. Aplikacja używa biblioteki Microsoft.Extensions.AI
, aby można było napisać kod przy użyciu abstrakcji sztucznej inteligencji, a nie określonego zestawu SDK. Abstrakcje sztucznej inteligencji umożliwiają zmianę bazowego modelu sztucznej inteligencji przy minimalnych zmianach kodu.
Wymagania wstępne
- Instalowanie platformy .NET 8.0 lub nowszej
- Instalowanie aplikacji Ollama lokalnie na urządzeniu
- Visual Studio Code (opcjonalnie)
Uruchamianie lokalnego modelu sztucznej inteligencji
Wykonaj poniższe kroki, aby skonfigurować i uruchomić lokalny model sztucznej inteligencji na urządzeniu. Wiele różnych modeli sztucznej inteligencji jest dostępnych do uruchamiania lokalnie i są trenowane pod kątem różnych zadań, takich jak generowanie kodu, analizowanie obrazów, czat generowania lub tworzenie osadzonych. W tym przewodniku Szybki start użyjesz modelu ogólnego przeznaczenia phi3:mini
, który jest małym, ale zdolnym do generowania sztucznej inteligencji utworzonym przez firmę Microsoft.
Otwórz okno terminalu i sprawdź, czy aplikacja Ollama jest dostępna na urządzeniu:
ollama
Jeśli aplikacja Ollama jest dostępna, wyświetla listę dostępnych poleceń.
Uruchom Ollama:
ollama serve
Jeśli system Ollama jest uruchomiony, wyświetla listę dostępnych poleceń.
phi3:mini
Pobierz model z rejestru Ollama i poczekaj na jego pobranie:ollama pull phi3:mini
Po zakończeniu pobierania uruchom model:
ollama run phi3:mini
Ollama uruchamia
phi3:mini
model i wyświetla monit o interakcję z nim.
Tworzenie aplikacji .NET
Wykonaj następujące kroki, aby utworzyć aplikację konsolową platformy .NET, która będzie łączyć się z lokalnym phi3:mini
modelem sztucznej inteligencji:
W oknie terminalu przejdź do pustego katalogu na urządzeniu i utwórz nową aplikację za
dotnet new
pomocą polecenia :dotnet new console -o LocalAI
Dodaj pakiety Microsoft.Extensions.AI.Ollama do aplikacji:
dotnet add package Microsoft.Extensions.AI.Ollama --prerelease
Otwórz nową aplikację w wybranym edytorze, na przykład Visual Studio Code.
code .
Nawiązywanie połączenia z modelem sztucznej inteligencji i rozmowa z nią
Zestaw SDK jądra semantycznego udostępnia wiele usług i funkcji do łączenia się z modelami sztucznej inteligencji i zarządzania interakcjami. W krokach z wyprzedzeniem utworzysz prostą aplikację, która łączy się z lokalną sztuczną inteligencją i przechowuje historię konwersacji w celu ulepszenia środowiska czatu.
Otwórz plik Program.cs i zastąp zawartość pliku następującym kodem:
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(); }
Powyższy kod wykonuje następujące czynności:
- Tworzy
OllamaChatClient
implementujący interfejsIChatClient
.- Ten interfejs zapewnia luźno połączoną abstrakcję, której można użyć do rozmowy z modelami sztucznej inteligencji.
- Później możesz zmienić podstawową implementację klienta czatu na inny model, taki jak Azure OpenAI, bez zmiany innego kodu.
- Tworzy
ChatHistory
obiekt do przechowywania komunikatów między użytkownikiem a modelem AI. - Pobiera monit od użytkownika i zapisuje go w pliku
ChatHistory
. - Wysyła dane czatu do modelu AI w celu wygenerowania odpowiedzi.
Uwaga
Ollama działa domyślnie na porcie 11434, dlatego punkt końcowy modelu AI jest ustawiony na
http://localhost:11434
wartość .- Tworzy
Uruchom aplikację i wprowadź monit w konsoli, aby otrzymać odpowiedź ze sztucznej inteligencji, na przykład:
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.
Odpowiedź ze sztucznej inteligencji jest dokładna, ale także pełne. Przechowywana historia czatów umożliwia sztucznej inteligencji modyfikowanie odpowiedzi. Poinstruuj sztuczną inteligencję, aby skróciła podaną listę:
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.
Zaktualizowana odpowiedź ze sztucznej inteligencji jest znacznie krótsza po raz drugi. Ze względu na dostępną historię czatów sztuczna inteligencja była w stanie ocenić poprzedni wynik i udostępnić krótsze podsumowania.