Sdílet prostřednictvím


Chatování s místním modelem AI pomocí .NET

V tomto rychlém startu se dozvíte, jak vytvořit konverzační konzolovou aplikaci .NET pomocí modelu OpenAI nebo Azure OpenAI. Aplikace používá knihovnu Microsoft.Extensions.AI, abyste mohli psát kód pomocí abstrakcí AI místo konkrétní sady SDK. Abstrakce AI umožňují změnit základní model AI s minimálními změnami kódu.

Požadavky

Spuštění místního modelu AI

Provedením následujících kroků nakonfigurujte a spusťte místní model AI na vašem zařízení. Mnoho různých modelů AI je možné spouštět místně a trénují se pro různé úlohy, jako je generování kódu, analýza obrázků, generování chatu nebo vytváření vložených objektů. V tomto rychlém startu použijete model pro obecné účely phi3:mini , což je malý, ale schopný generovat umělou inteligenci vytvořenou Microsoftem.

  1. Otevřete okno terminálu a ověřte, že je na vašem zařízení k dispozici Ollama:

    ollama
    

    Pokud je Ollama k dispozici, zobrazí seznam dostupných příkazů.

  2. Spustit Ollama:

    ollama serve
    

    Pokud je Ollama spuštěný, zobrazí se seznam dostupných příkazů.

  3. phi3:mini Stáhněte model z registru Ollama a počkejte, až se stáhne:

    ollama pull phi3:mini
    
  4. Po dokončení stahování spusťte model:

    ollama run phi3:mini
    

    Ollama spustí phi3:mini model a zobrazí výzvu k interakci s ním.

Vytvoření aplikace .NET

Provedením následujících kroků vytvořte konzolovou aplikaci .NET, která se připojí k místnímu phi3:mini modelu AI:

  1. V okně terminálu přejděte na zařízení do prázdného adresáře a pomocí příkazu vytvořte novou aplikaci dotnet new :

    dotnet new console -o LocalAI
    
  2. Přidejte do aplikace balíčky Microsoft.Extensions.AI.Ollama:

    dotnet add package Microsoft.Extensions.AI.Ollama --prerelease
    
  3. Otevřete novou aplikaci v libovolném editoru, například v editoru Visual Studio Code.

    code .
    

Připojení k modelu AI a chatování s modelem AI

Sada SDK sémantického jádra poskytuje mnoho služeb a funkcí pro připojení k modelům AI a správě interakcí. V následujících krocích vytvoříte jednoduchou aplikaci, která se připojí k místní umělé inteligenci a uloží historii konverzací, aby se zlepšilo prostředí chatu.

  1. Otevřete soubor Program.cs a nahraďte jeho obsah následujícím kódem:

    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();
    }
    

    Předchozí kód provede následující:

    • Vytvoří OllamaChatClient, které implementuje rozhraní IChatClient.
      • Toto rozhraní poskytuje volně propojenou abstrakci, kterou můžete použít k komunikaci s modely AI.
      • Později můžete základní implementaci chatovacího klienta změnit na jiný model, například Azure OpenAI, aniž byste museli měnit jiný kód.
    • ChatHistory Vytvoří objekt pro uložení zpráv mezi uživatelem a modelem AI.
    • Načte výzvu od uživatele a uloží ji do souboru ChatHistory.
    • Odešle data chatu do modelu AI a vygeneruje odpověď.

    Poznámka:

    Ollama ve výchozím nastavení běží na portu 11434, což je důvod, proč je koncový bod modelu AI nastavený na http://localhost:11434.

  2. Spusťte aplikaci a zadáním výzvy do konzoly obdržíte odpověď z umělé inteligence, například následující:

    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. Odpověď z umělé inteligence je přesná, ale také podrobná. Uložená historie chatu umožňuje umělé inteligenci upravit odpověď. Řekněte umělé inteligenci, aby zkrátila zadaný seznam:

    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.
    

    Aktualizovaná odpověď z AI je mnohem kratší. Vzhledem k dostupné historii chatu umělá inteligence dokázala posoudit předchozí výsledek a poskytnout kratší souhrny.

Další kroky