Udostępnij za pośrednictwem


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

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.

  1. 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ń.

  2. Uruchom Ollama:

    ollama serve
    

    Jeśli system Ollama jest uruchomiony, wyświetla listę dostępnych poleceń.

  3. phi3:mini Pobierz model z rejestru Ollama i poczekaj na jego pobranie:

    ollama pull phi3:mini
    
  4. 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:

  1. 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
    
  2. Dodaj pakiety Microsoft.Extensions.AI.Ollama do aplikacji:

    dotnet add package Microsoft.Extensions.AI.Ollama --prerelease
    
  3. 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.

  1. 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 interfejs IChatClient.
      • 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:11434wartość .

  2. 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.
    
  3. 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.

Następne kroki