Aracılığıyla paylaş


.NET kullanarak yerel yapay zeka modeliyle sohbet etme

Bu hızlı başlangıçta, OpenAI veya Azure OpenAI modeli kullanarak konuşma .NET konsol sohbet uygulaması oluşturmayı öğreneceksiniz. Uygulama, belirli bir SDK yerine yapay zeka soyutlamalarını kullanarak kod yazabilmeniz için Microsoft.Extensions.AI kitaplığını kullanır. Yapay zeka soyutlamaları, temel alınan yapay zeka modelini en az kod değişikliğiyle değiştirmenize olanak tanır.

Önkoşullar

Yerel yapay zeka modelini çalıştırma

Cihazınızda yerel bir yapay zeka modelini yapılandırmak ve çalıştırmak için aşağıdaki adımları tamamlayın. Birçok farklı yapay zeka modeli yerel olarak çalıştırılır ve kod oluşturma, görüntüleri analiz etme, üretken sohbet veya ekleme oluşturma gibi farklı görevler için eğitilir. Bu hızlı başlangıçta, Microsoft tarafından oluşturulan küçük ama yetenekli bir yapay zeka olan genel amaçlı phi3:mini modelini kullanacaksınız.

  1. Bir terminal penceresi açın ve Cihazınızda Ollama'nın kullanılabilir olduğunu doğrulayın:

    ollama
    

    Ollama kullanılabilir durumdaysa, kullanılabilir komutların listesini görüntüler.

  2. Ollama'yı başlatın:

    ollama serve
    

    Ollama çalışıyorsa, kullanılabilir komutların listesini görüntüler.

  3. Ollama kayıt defterinden phi3:mini modelini çekin ve indirmesini bekleyin:

    ollama pull phi3:mini
    
  4. İndirme tamamlandıktan sonra modeli çalıştırın:

    ollama run phi3:mini
    

    Ollama, phi3:mini modelini başlatır ve bu modelle etkileşim kurmanız için bir istem sağlar.

.NET uygulamasını oluşturma

Yerel phi3:mini yapay zeka modelinize bağlanan bir .NET konsol uygulaması oluşturmak için aşağıdaki adımları tamamlayın.

  1. Terminal penceresinde cihazınızda boş bir dizine gidin ve dotnet new komutuyla yeni bir uygulama oluşturun:

    dotnet new console -o LocalAI
    
  2. OllamaSharp paketini uygulamanıza ekleyin:

    dotnet add package OllamaSharp
    
  3. Yeni uygulamayı visual studio code gibi kendi seçtiğiniz düzenleyicide açın.

    code .
    

Yapay zeka modeline bağlanma ve bu modelle sohbet etme

Önümüzdeki adımlarda, yerel yapay zekaya bağlanan ve sohbet deneyimini geliştirmek için konuşma geçmişini depolayan basit bir uygulama oluşturacaksınız.

  1. Program.cs dosyasını açın ve dosyanın içeriğini aşağıdaki kodla değiştirin:

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

    Yukarıdaki kod aşağıdakileri gerçekleştirir:

    • OllamaChatClient arabirimini uygulayan bir IChatClient oluşturur.
      • Bu arabirim, yapay zeka modelleriyle sohbet etmek için kullanabileceğiniz gevşek bir şekilde bağlanmış bir soyutlama sağlar.
      • Daha sonra temel alınan sohbet istemcisi uygulamasını başka bir kod değiştirmeden Azure OpenAI gibi başka bir modelle değiştirebilirsiniz.
    • Kullanıcı ile yapay zeka modeli arasındaki iletileri depolamak için bir ChatHistory nesne oluşturur.
    • Kullanıcıdan bir istem alır ve ChatHistory içinde saklar.
    • Yanıt oluşturmak için sohbet verilerini yapay zeka modeline gönderir.

    Uyarı

    Ollama varsayılan olarak 11434 numaralı bağlantı noktasında çalışır. Bu nedenle yapay zeka modeli uç noktası olarak http://localhost:11434ayarlanır.

  2. Uygulamayı çalıştırın ve yapay zekadan aşağıdaki gibi bir yanıt almak için konsola bir istem girin:

    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. Yapay zekadan gelen yanıt doğru ancak ayrıntılıdır. Depolanan sohbet geçmişi, yapay zekanın yanıtını değiştirmesini sağlar. Yapay zekaya sağladığı listeyi kısaltmasını emret:

    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.
    

    Yapay zekanın güncelleştirilmiş yanıtı ikinci seferde çok daha kısadır. Kullanılabilir sohbet geçmişi nedeniyle yapay zeka önceki sonucu değerlendirebildi ve daha kısa özetler sağladı.

Sonraki adımlar

  • .NET ve Azure OpenAI Tamamlamaları ile metin ve konuşma oluşturma