Dela via


Chatta med en lokal AI-modell med hjälp av .NET och Semantic Kernel

Lokala AI-modeller ger kraftfulla och flexibla alternativ för att skapa AI-lösningar. I den här snabbstarten utforskar du hur du konfigurerar och ansluter till en lokal AI-modell med hjälp av .NET och Semantic Kernel SDK. I det här exemplet kör du den lokala AI-modellen med hjälp av Ollama.

Förutsättningar

Kör den lokala AI-modellen

Utför följande steg för att konfigurera och köra en lokal AI-modell på enheten. Många olika AI-modeller är tillgängliga för att köras lokalt och tränas för olika uppgifter, till exempel att generera kod, analysera bilder, generativ chatt eller skapa inbäddningar. I den här snabbstarten använder du modellen för generell användning phi3:mini , som är en liten men kapabel generativ AI som skapats av Microsoft.

  1. Öppna ett terminalfönster och kontrollera att Ollama är tillgängligt på enheten:

    ollama
    

    Om Ollama körs visas en lista över tillgängliga kommandon.

  2. phi3:mini Hämta modellen från Ollama-registret och vänta tills den har laddats ned:

    ollama pull phi3:mini
    
  3. När nedladdningen är klar kör du modellen:

    ollama run phi3:mini
    

    Ollama startar phi3:mini modellen och uppmanar dig att interagera med den.

Skapa .NET-appen

Slutför följande steg för att skapa en .NET-konsolapp som ansluter till din lokala phi3:mini AI-modell:

  1. I ett terminalfönster navigerar du till en tom katalog på enheten och skapar en ny app med dotnet new kommandot :

    dotnet new console
    
  2. Lägg till Semantic Kernel SDK och Semantic Kernel Ollama Connector-paketen i din app:

    dotnet add package Microsoft.SemanticKernel
    dotnet add package Microsoft.SemanticKernel.Connectors.Ollama
    
  3. Öppna den nya appen i valfri redigerare, till exempel Visual Studio Code.

    code .
    

Ansluta till och chatta med AI-modellen

Semantic Kernel SDK tillhandahåller många tjänster och funktioner för att ansluta till AI-modeller och hantera interaktioner. I stegen framåt skapar du en enkel app som ansluter till den lokala AI:n och lagrar konversationshistorik för att förbättra chattupplevelsen.

  1. Öppna filen Program.cs och ersätt innehållet i filen med följande kod:

    using Microsoft.SemanticKernel;
    using Microsoft.SemanticKernel.ChatCompletion;
    
    // Create a kernel with OpenAI chat completion
    // Warning due to the experimental state of some Semantic Kernel SDK features.
    #pragma warning disable SKEXP0070
    Kernel kernel = Kernel.CreateBuilder()
                        .AddOllamaChatCompletion(
                            modelId: "phi3:mini",
                            endpoint: new Uri("http://localhost:11434"))
                        .Build();
    
    var aiChatService = kernel.GetRequiredService<IChatCompletionService>();
    var chatHistory = new ChatHistory();
    
    while (true)
    {
        // Get user prompt and add to chat history
        Console.WriteLine("Your prompt:");
        var userPrompt = Console.ReadLine();
        chatHistory.Add(new ChatMessageContent(AuthorRole.User, userPrompt));
    
        // Stream the AI response and add to chat history
        Console.WriteLine("AI Response:");
        var response = "";
        await foreach(var item in 
            aiChatService.GetStreamingChatMessageContentsAsync(chatHistory))
        {
            Console.Write(item.Content);
            response += item.Content;
        }
        chatHistory.Add(new ChatMessageContent(AuthorRole.Assistant, response));
        Console.WriteLine();
    }
    

    Föregående kod utför följande uppgifter:

    • Skapar ett Kernel objekt och använder det för att hämta en tjänst för chattens slutförande.
    • Skapar ett ChatHistory objekt för att lagra meddelandena mellan användaren och AI-modellen.
    • Hämtar en uppmaning från användaren och lagrar den i ChatHistory.
    • Skickar chattdata till AI-modellen för att generera ett svar.

    Kommentar

    Ollama körs på port 11434 som standard, varför AI-modellslutpunkten är inställd http://localhost:11434på .

  2. Kör appen och ange en uppmaning i konsolen för att ta emot ett svar från AI:n, till exempel följande:

    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. Svaret från AI:n är korrekt, men också utförligt. Med den lagrade chatthistoriken kan AI:n ändra sitt svar. Instruera AI:n att förkorta listan som den angav:

    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.
    

    Det uppdaterade svaret från AI:n är mycket kortare andra gången. På grund av den tillgängliga chatthistoriken kunde AI:n utvärdera det tidigare resultatet och ge kortare sammanfattningar.

Nästa steg