
El curso aborda desde los conceptos básicos de Semantic Kernel hasta su aplicación avanzada con modelos locales.
A continuación, un resumen general de los temas tratados:
- Introducción a Semantic Kernel y LLMs
- Uso de Prompts en Semantic Kernel
- Historial de Chat y Manejo de Contexto
- Funciones del Kernel (Kernel Functions)
- Extensión mediante Plugins
- Uso de Modelos de IA Locales
https://www.udemy.com/course/semantic-kernel
Proceso de Creación:
- Introducción a Semantic Kernel y LLMs
- Explicación de los modelos de lenguaje (LLM) y su funcionamiento.
- Integración de la IA con código mediante Semantic Kernel.
- Diferencias entre modelos y cómo se pueden conectar con distintas APIs.
- Uso de Prompts en Semantic Kernel
- Creación de un kernel en .NET9.
- Configuración de OpenAI y prueba de prompts para generar código.
- Estrategias para mejorar los prompts y la importancia de su precisión.
- Historial de Chat y Manejo de Contexto
- Implementación de un sistema de historial de chat en .NET.
- Cómo el historial afecta el consumo de tokens y el contexto de generación.
- Impacto del crecimiento del historial en costos y rendimiento.
- Funciones del Kernel (Kernel Functions)
- Cómo el modelo de IA puede ejecutar código a través del Kernel.
- Uso de plugins y funciones personalizadas para enriquecer respuestas.
- Integración con APIs externas como datos de clima o análisis de texto.
- Extensión mediante Plugins
- Creación de plugins matemáticos y de procesamiento de lenguaje natural.
- Uso de filtros de invocación para validar funciones antes de ejecutarlas.
- Aplicaciones en interfaces gráficas y generación de documentos.
- Uso de Modelos de IA Locales
- Configuración de Semantic Kernel con modelos alojados en servidores locales.
- Ejemplo práctico con Llama 3.2 y LM Studio.
- Comparación de beneficios y desventajas frente a modelos en la nube.
1.1 ¿Qué es Semantic Kernel?
? Resumen
- ? Introducción a los Modelos de Lenguaje (LLM): Explicación de qué son los Large Language Models (LLM) y cómo procesan grandes volúmenes de texto para generar respuestas similares a las humanas.
- ? GPT y Transformadores: Se describe el concepto de Generative Pretrained Transformer (GPT) y su capacidad para transformar texto en otros formatos como imágenes, videos o traducciones.
- ? Distribución de Probabilidades de Tokens: Explicación de cómo los modelos de IA no entienden el lenguaje directamente, sino que asignan probabilidades a los tokens para generar texto.
- ? Tokenización y Procesamiento: Se muestra cómo GPT divide las palabras en tokens y usa probabilidades para predecir la siguiente palabra, influenciado por configuraciones y contexto.
- ? Casos de Uso de la IA: Aplicaciones como asistentes virtuales, redacción de textos, marketing, traducción, análisis de datos y generación de contenido creativo.
- ? Limitaciones de los Modelos de IA: Aunque los modelos entienden el lenguaje, tienen dificultades en matemáticas, datos en tiempo real y memoria contextual.
- ?️ Necesidad de integrar IA con Código: Se plantea cómo solventar estas limitaciones permitiendo que los modelos llamen a APIs externas, como una API de clima para obtener datos actuales.
- ?️ Microsoft y la IA: Se describe cómo Microsoft ha integrado IA en productos como Bing, Office, Windows y GitHub Copilot.
- ? Semantic Kernel como Orquestador: Se presenta Semantic Kernel como un SDK de código abierto que permite integrar modelos de IA con código real, facilitando la automatización de tareas en .NET, Java y Python.
- ⚡ Flexibilidad del Kernel: Se demuestra cómo Semantic Kernel permite cambiar entre diferentes modelos (OpenAI, Google Gemini, Hugging Face) sin alterar la lógica del código.
- ?️ Introducción al Prompt Engineering: Concepto de cómo diseñar prompts efectivos para mejorar la calidad de las respuestas generadas por IA.
? Perspectivas basadas en números
- ? Probabilidades de Tokens: Ejemplo de cómo un modelo asigna mayor probabilidad a palabras relacionadas (ej. “late” → “leche”, “café”, “té”).
- ? Tokenización en GPT: Se muestra cómo una frase como “Bienvenido a nuestro curso” se divide en múltiples tokens numéricos, impactando en el costo y el procesamiento del modelo.
- ?️ Ahorro de costos en modelos: Semantic Kernel permite probar diferentes modelos con solo cambiar la configuración inicial, sin necesidad de reescribir código.
❓ Preguntas exploratorias
- ? ¿Cómo afectan las distribuciones de probabilidad de tokens a la generación de texto en los modelos de IA?
- ? ¿Cuáles son las ventajas de utilizar Semantic Kernel para integrar modelos de IA con código personalizado?
- ? ¿Cómo puede optimizarse el uso de prompts para mejorar la generación de respuestas en IA?
2 Prompts
? Resumen
- ? Creación del primer kernel: Se desarrolla una aplicación de consola en .NET9 sin declaraciones de nivel superior.
- ?️ Configuración del entorno: Se añaden referencias necesarias, como Semantic Kernel, para manejar la IA.
- ? Conexión con OpenAI: Se establece un modelo de chat completion, utilizando una clave API para la comunicación con los servidores de OpenAI o Azure OpenAI.
- ?️ Primeros prompts básicos: Se ejecuta un prompt simple para generar un código básico en C# que imprime “Hello World”.
- ? Mejorando los prompts: Se prueba un prompt más detallado que cambia el color de la consola a verde antes de imprimir el mensaje.
- ? Mayor complejidad en los prompts: Se incluye manejo de errores (try-catch) y estructuras de control más detalladas en los programas generados.
- ? Comparación de resultados: Se observa cómo prompts más detallados generan código más avanzado, demostrando la importancia de la precisión en la redacción de instrucciones.
- ? Limitaciones de los prompts: Se experimenta con la conversión de código entre lenguajes, descubriendo que los prompts no tienen memoria entre ejecuciones.
- ? Introducción al chat history: Se plantea la necesidad de almacenar el historial de conversación para superar las limitaciones de memoria en los modelos de IA.
? Perspectivas basadas en números
- ? 4 iteraciones de prompts: Cada una con mayor nivel de detalle, demostrando que la precisión del prompt afecta el resultado.
- ?️ Diferencia entre programas: Un prompt básico genera 1 línea de código, mientras que un prompt detallado produce un programa más elaborado con múltiples funcionalidades.
- ?️ Múltiples lenguajes soportados: OpenAI permite escribir prompts en idiomas como español, inglés, francés, chino y ruso.
❓ Preguntas exploratorias
- ? ¿Cómo influye la estructura de un prompt en la calidad del código generado?
- ? ¿Qué estrategias se pueden usar para optimizar prompts en diferentes lenguajes de programación?
- ? ¿Cómo afecta la falta de memoria en los modelos a la interacción en tareas complejas?
3 ChatHistory
? Resumen
- ?️ Creación de la aplicación ChatHistory: Se construye una aplicación de consola en .NET9 para trabajar con el historial de chat en IA.
- ? Configuración de Semantic Kernel: Se añade la referencia de Semantic Kernel y se ajusta la firma del método Main para manejar llamadas asíncronas a servidores web.
- ⚙️ Implementación del kernel: Se configura GPT-4o con OpenAI para gestionar la generación de respuestas.
- ?️ Manejo de tokens: Se desarrolla un método para contabilizar tokens utilizados en la conversación y analizar su impacto en costos y rendimiento.
- ? Almacenamiento del historial de chat: Se crea una variable chat history para almacenar los mensajes y clasificar respuestas de usuario y asistente.
- ? Procesamiento del historial: Cada vez que se realiza una consulta, el historial se pasa al modelo, ya que los modelos de IA no tienen memoria propia.
- ? Conversión de código con contexto: Se prueba la conversión de un código de C# a Visual Basic .NET, destacando cómo el historial de chat permite manejar referencias a respuestas previas.
- ? Impacto del contexto en los tokens: Se observa que a medida que se acumulan mensajes, el número de tokens procesados aumenta, afectando los costos y el tiempo de respuesta.
? Perspectivas basadas en números
- ? 15 tokens de entrada → 213 tokens de salida en la primera interacción.
- ? 214 tokens en la segunda consulta, al incluir el historial previo.
- ? 399 tokens en la tercera interacción, reflejando el crecimiento acumulativo del contexto.
- ?️ El uso de tokens sigue aumentando con cada consulta adicional, lo que puede afectar la eficiencia del modelo.
❓ Preguntas exploratorias
- ? ¿Cómo puede optimizarse el uso del historial de chat para reducir el consumo de tokens? (Escribe E1 para preguntar).
- ? ¿Cuáles son las ventajas y desventajas de almacenar conversaciones en modelos de IA? (Escribe E2 para preguntar).
- ? ¿Cómo puede mejorarse la conversión de código entre lenguajes utilizando el historial de chat? (Escribe E3 para preguntar).
4 Kernel Function
? Resumen
- ? Concepto de Kernel Function: Es una funcionalidad que permite a un modelo de IA llamar a su propio código cuando no tiene la respuesta directamente. Esto permite integraciones con APIs, funciones personalizadas y otros sistemas.
- ? Ejemplo práctico: Se configura una consola con ajustes para controlar la aleatoriedad de respuestas, la cantidad de tokens y la penalización de repeticiones. Esto evita respuestas redundantes y controla los costos asociados al uso de modelos de IA.
- ? Creación de funciones semánticas: Se muestra un método para definir funciones utilizando plantillas (templates). Un ejemplo es la creación de una función para generar una historia basada en longitud y tópico determinado.
- ?️ Flujo de ejecución de una función: Cuando se invoca una función, el sistema serializa la función en formato JSON, la pasa junto con el historial del chat al modelo, y el modelo decide si ejecutarla o no.
- ? Uso del contexto y memoria: Un problema común en modelos sin memoria es que no pueden recordar información previa. Se demuestra cómo se pueden crear funciones adicionales para almacenar historial y consultar APIs externas, como una API del clima para recuperar datos de temperatura.
- ?️ Uso de Plugins y Funciones: Se introduce el concepto de Plugins, que agrupan funciones relacionadas. Se ejemplifica con un plugin de análisis de texto que incluye funciones para contar palabras y detectar sentimientos.
- ⚙️ Integración con el Kernel: Se ilustra cómo importar plugins al kernel y usarlos en la IA, permitiendo análisis de texto más avanzado.
- ? Ejemplo práctico de análisis de texto: Se prueba el conteo de palabras en una oración sobre Yuri Gagarin, así como la detección del sentimiento del texto.
? Perspectivas basadas en números
- ? 4000 tokens: Límite común para muchos modelos de IA, lo que afecta la cantidad de información procesada en una única consulta.
- ? 41 palabras: Se obtiene esta cantidad tras aplicar una función de conteo sobre una oración de prueba, mostrando la efectividad del plugin de análisis de texto.
- ?️ API del clima: Se ilustra cómo la IA puede invocar varias funciones en cadena para generar respuestas completas basadas en múltiples fuentes de datos.
❓ Preguntas exploratorias
- ? ¿Cómo afecta el uso de funciones en el comportamiento de un modelo de IA?
- ? ¿Cuáles son las diferencias entre invocar funciones manualmente y permitir que el modelo lo haga automáticamente?
- ? ¿Cómo se pueden mejorar los plugins para ofrecer respuestas más precisas en un sistema de IA?
5 Plugins
? Resumen
- ? Introducción a los Plugins: Se explora cómo extender las funcionalidades del kernel utilizando plugins en una aplicación de consola.
- ? Creación de un Plugin de Matemáticas: Se desarrolla un plugin con dos funciones: sumar y multiplicar, permitiendo que el modelo las invoque automáticamente si lo considera necesario.
- ⚙️ Auto-invocación de funciones: Se configura el tool call behavior, permitiendo que el modelo decida cuándo invocar una función si no tiene una respuesta directa.
- ? Uso de filtros de invocación: Se implementa un filtro de invocación de funciones (I function invocation filter), que permite verificar y registrar cada invocación antes y después de ejecutarse.
- ? Ejemplo de validación: Se muestra cómo un filtro puede preguntar al usuario antes de ejecutar una función sensible, como una compra con cargo a tarjeta.
- ? Pruebas con cálculos matemáticos: Se ejecuta un cálculo combinando sumas y multiplicaciones, verificando que el modelo detecta y ejecuta las funciones disponibles automáticamente.
- ?️ Aplicación en interfaces gráficas: Se lleva el mismo concepto de plugins a una interfaz gráfica en Blazor, permitiendo generar facturas dinámicamente con datos ingresados por el usuario.
- ? Ejemplo de generación de facturas: Se muestra cómo un usuario puede escribir en texto libre la creación de una factura, y el sistema extrae la información, valida los productos y genera el documento.
- ? Automatización con Semantic Kernel: Se demuestra la posibilidad de crear eventos en un calendario usando los plugins de Semantic Kernel, simplemente escribiendo la solicitud en lenguaje natural.
- ? Potencial de los Plugins: Se enfatiza cómo estos métodos permiten construir agentes inteligentes capaces de ejecutar tareas como reservar citas, generar documentos y responder preguntas con integración a código personalizado.
? Perspectivas basadas en números
- ? 37 + 7 = 44: Ejemplo de cómo el plugin matemático realiza sumas automáticamente.
- ✖️ (37 + 7) × 2 + 5 = 93: Se demuestra la capacidad del sistema para encadenar múltiples operaciones matemáticas sin intervención manual.
- ? Facturación automática: Un usuario puede describir una factura en lenguaje natural, y el sistema extrae productos, cantidades y descuentos automáticamente.
- ?️ Eventos programados: Se genera un evento en Blazor Calendar con solo indicar la fecha, hora y duración en texto.
❓ Preguntas exploratorias
- ? ¿Cuáles son los beneficios de permitir que los modelos de IA auto-invoquen funciones?
- ? ¿Cómo se puede optimizar el uso de filtros de invocación en plugins sensibles como pagos en línea?
- ?️ ¿Qué otras funcionalidades podrían agregarse a los plugins para mejorar la interacción en interfaces gráficas?
6 Usando Modelos Locales
? Resumen
- ?️ Uso de modelos locales en lugar de la nube: Se muestra cómo configurar modelos de IA locales, en vez de utilizar servidores en la nube.
- ?️ Creación de una aplicación de consola: Se desarrolla una aplicación en .NET 9, siguiendo el mismo procedimiento que en videos anteriores.
- ? Configuración del manejador HTTP: Se implementa un handler personalizado que redirige las llamadas de la nube a un modelo alojado localmente.
- ?️ Ejemplo con Llama 3.2: Se utiliza LM Studio para servir un modelo Llama 3.2 en un servidor local con una dirección localhost:134.
- ? Integración con Semantic Kernel: Se adapta Semantic Kernel para que pueda comunicarse con el modelo local en vez de OpenAI.
- ? Ejecución de un Prompt en un modelo local: Se realiza una prueba ejecutando un prompt, mostrando la respuesta directamente desde el modelo local.
- ? Ventajas de modelos locales: Permite mayor privacidad, ahorro de costos y desarrollo offline, siendo útil para pruebas sin depender de servicios externos.
? Perspectivas basadas en números
- ? Redirección de llamadas: El código modifica la URL para redirigir la petición al servidor local, eliminando la necesidad de usar claves API.
- ⚡ Ejecución eficiente: Se observa cómo el modelo procesa respuestas en la consola de LM Studio antes de imprimirlas en la aplicación.
❓ Preguntas exploratorias
- ? ¿Cuáles son los beneficios y desventajas de usar modelos de IA locales en comparación con modelos en la nube?
- ? ¿Cómo se puede optimizar el rendimiento de modelos locales en aplicaciones empresariales?
- ?️ ¿Qué diferencias clave existen entre servir un modelo en LM Studio y hacerlo en un entorno de producción?