Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
- zainstaluj program .NET 8.0 lub nowszy
- 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, które można uruchamiać lokalnie i które są trenowane pod kątem różnych zadań, takich jak generowanie kodu, analizowanie obrazów, generatywny czat czy tworzenie osadzeń. W tym przewodniku szybkiego startu użyjesz modelu ogólnego przeznaczenia phi3:mini, który jest małą, ale zdolną sztuczną inteligencją generującą, stworzoną przez firmę Microsoft.
Otwórz okno terminalu i sprawdź, czy aplikacja Ollama jest dostępna na urządzeniu:
ollamaJeśli aplikacja Ollama jest dostępna, wyświetla listę dostępnych poleceń.
Uruchom Ollama:
ollama serveJeśli system Ollama jest uruchomiony, wyświetla listę dostępnych poleceń.
Pobierz model
phi3:miniz rejestru Ollama i poczekaj na jego pobranie:ollama pull phi3:miniPo zakończeniu pobierania uruchom model:
ollama run phi3:miniOllama uruchamia model
phi3:minii wyświetla monit o interakcję z nim.
Tworzenie aplikacji .NET
Wykonaj poniższe kroki, aby utworzyć aplikację konsolową platformy .NET, która łą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 pomocą polecenia
dotnet new:dotnet new console -o LocalAIDodaj pakiet OllamaSharp do aplikacji:
dotnet add package OllamaSharpOtwó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 kolejnych krokach utworzysz prostą aplikację, która łączy się z lokalną sztuczną inteligencją i przechowuje historię konwersacji w celu poprawy jakości rozmów.
Otwórz plik Program.cs i zastąp zawartość pliku następującym kodem:
using Microsoft.Extensions.AI; using OllamaSharp; IChatClient chatClient = new OllamaApiClient(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 (ChatResponseUpdate item in chatClient.GetStreamingResponseAsync(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
OllamaChatClientimplementują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
ChatHistoryobiekt 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.- 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 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.Odpowiedź ze sztucznej inteligencji jest dokładna, ale jednocześnie obszerna. 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 (.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.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.