
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?