Compartir a través de


Chatear con un modelo de inteligencia artificial local mediante .NET y kernel semántico

Los modelos de inteligencia artificial local proporcionan opciones eficaces y flexibles para crear soluciones de inteligencia artificial. En este inicio rápido, explorará cómo configurar y conectarse a un modelo de IA local mediante .NET y el SDK de kernel semántico. En este ejemplo, ejecutará el modelo de IA local mediante Ollama.

Requisitos previos

Ejecución del modelo de IA local

Complete los pasos siguientes para configurar y ejecutar un modelo de IA local en el dispositivo. Hay muchos modelos de IA diferentes para ejecutarse localmente y se entrenan para diferentes tareas, como generar código, analizar imágenes, chat generativo o crear incrustaciones. En este inicio rápido, usará el modelo de uso general phi3:mini, que es una IA generativa pequeña pero eficaz creada por Microsoft.

  1. Abra una ventana de terminal y compruebe si Ollama está disponible en el dispositivo:

    ollama
    

    Si Ollama se está ejecutando, se mostrará una lista de comandos disponibles.

  2. Extraiga el modelo de phi3:mini del registro de Ollama y espere a que se descargue:

    ollama pull phi3:mini
    
  3. Una vez completada la descarga, ejecute el modelo:

    ollama run phi3:mini
    

    Ollama inicia el modelo de phi3:mini y proporciona una indicación para que interactúe con él.

Crear la aplicación .NET

Complete los pasos siguientes para crear una aplicación de consola de .NET que se conectará al modelo de inteligencia artificial de phi3:mini local:

  1. En una ventana de terminal, vaya a un directorio vacío en el dispositivo y cree una nueva aplicación con el comando dotnet new:

    dotnet new console
    
  2. Agregue el SDK de kernel semántico y los paquetes del conector de Ollama de kernel semántico a la aplicación:

    dotnet add package Microsoft.SemanticKernel
    dotnet add package Microsoft.SemanticKernel.Connectors.Ollama
    
  3. Abra la nueva aplicación en el editor que prefiera, como Visual Studio Code.

    code .
    

Conexión y chat con el modelo de IA

El SDK de kernel semántico proporciona muchos servicios y características para conectarse a modelos de IA y administrar interacciones. En los pasos siguientes, creará una aplicación sencilla que se conecta a la inteligencia artificial local y almacena el historial de conversaciones para mejorar la experiencia del chat.

  1. Abra el archivo Program.cs y reemplace el contenido del archivo por el código siguiente:

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

    El código precedente de ejemplo realiza las siguientes tareas:

    • Crea un objeto Kernel y lo usa para recuperar un servicio de finalización de chat.
    • Crea un objeto ChatHistory para almacenar los mensajes entre el usuario y el modelo de IA.
    • Recupera un mensaje del usuario y lo almacena en ChatHistory.
    • Envía los datos de chat al modelo de IA para generar una respuesta.

    Nota:

    Ollama se ejecuta en el puerto 11434 de forma predeterminada, por lo que el punto de conexión del modelo de IA se establece en http://localhost:11434.

  2. Ejecute la aplicación y escriba un mensaje en la consola para recibir una respuesta de la inteligencia artificial, como la siguiente:

    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. La respuesta de la inteligencia artificial es precisa, pero también detallada. El historial de chats almacenado permite a la inteligencia artificial modificar su respuesta. Indique a la IA que acorte la lista que proporcionó:

    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.
    

    La respuesta actualizada de la inteligencia artificial es mucho más breve la segunda vez. Debido al historial de chats disponible, la inteligencia artificial pudo evaluar el resultado anterior y proporcionar resúmenes más cortos.

Pasos siguientes