Delen via


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

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.

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

  2. Start Ollama:

    ollama serve
    

    Als Ollama wordt uitgevoerd, wordt er een lijst met beschikbare opdrachten weergegeven.

  3. Haal het phi3:mini model op uit het Ollama-register en wacht totdat het is gedownload:

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

  1. 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
    
  2. Voeg de Microsoft.Extensions.AI.Ollama pakketten toe aan uw app:

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

  1. 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 de IChatClient-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.

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

Volgende stappen