# M5 · IA Generativa y LLMs Aplicados al Negocio **Máster en Inteligencia Artificial, Automatización y Agentes Digitales** · Next Educación · Próxima edición **6 ECTS · 12 sesiones de una hora · Responsable de producción y coordinación: Sami Halawa Ribas** ## Descripción Aplicación profesional de modelos de lenguaje a problemas de empresa: elección del modelo, diseño de prompts y salida estructurada, recuperación aumentada sobre documentación corporativa con evaluación cuantitativa, adaptación ligera mediante LoRA y controles de seguridad frente a inyección de prompts y fuga de datos. ## Competencias del módulo 1. Analizar el ecosistema de LLMs. 2. Diseñar prompts eficaces. 3. Construir un flujo RAG sobre documentación. 4. Aplicar técnicas ligeras de adaptación. 5. Establecer controles de seguridad. ## Evaluación | Instrumento | Peso | |---|---:| | Prácticas de sesión | 35% | | Asistente documental con evaluación cuantitativa | 45% | | Informe de seguridad y defensa | 20% | ## Mapa de sesiones | # | Sesión | Entregable | |---:|---|---| | 1 | El ecosistema de modelos de lenguaje: elección y coste | Cuaderno con la tabla comparativa de calidad, latencia y coste, y la recomendación razonada por tipo de tarea. | | 2 | Diseño de prompts y salida estructurada | Extractor funcional, esquema validado y tabla de exactitud por campo y por versión del prompt. | | 3 | Representaciones vectoriales y búsqueda semántica | Cuaderno con la comparación cuantitativa y el modelo seleccionado. | | 4 | Almacenes vectoriales e indexación del corpus | Índice desplegado con filtrado por permisos verificado. | | 5 | Construcción de un flujo RAG de extremo a extremo | Asistente funcional con auditoría de veinte respuestas y sus citas. | | 6 | Recuperación híbrida y reordenación | Informe de ablación con la configuración recomendada y su coste en latencia. | | 7 | Evaluación de sistemas de recuperación aumentada | Banco de evaluación ejecutable con informe de la línea base y umbrales fijados. | | 8 | Adaptación ligera de modelos: LoRA y QLoRA | Adaptador entrenado con informe comparativo y recomendación de uso. | | 9 | Evaluación y comparación de modelos de lenguaje | Informe de decisión de dos páginas con la evidencia cuantitativa. | | 10 | Seguridad de aplicaciones con modelos de lenguaje | Informe de seguridad con ataques, impacto y eficacia de las mitigaciones. | | 11 | Taller integrador: asistente corporativo evaluado y protegido | Asistente revisado con evaluación reproducida y hallazgos de seguridad corregidos. | | 12 | Evaluación del módulo y defensa | Prueba resuelta y defensa realizada. | --- ## Programación sesión a sesión ### Sesión 01 — El ecosistema de modelos de lenguaje: elección y coste **Objetivos** - Situar los modelos propietarios y abiertos disponibles y sus diferencias reales. - Leer una especificación de modelo y traducirla a implicaciones operativas. - Seleccionar un modelo para un caso concreto con criterios de coste, latencia y soberanía del dato. **Contenidos** - **Anatomía de un modelo de lenguaje** - Tokenización, ventana de contexto y coste por millón de tokens - Modelos base, ajustados a instrucciones y de razonamiento explícito - Parámetros de generación: temperatura, muestreo por núcleo y penalizaciones - Determinismo, semilla y reproducibilidad de una respuesta - **El mapa de la oferta** - Modelos propietarios por API: familias GPT, Claude y Gemini - Modelos de pesos abiertos: familias Llama, Mistral, Qwen y DeepSeek - Autoalojamiento con vLLM o Ollama frente a consumo por API - Licencias de uso comercial y restricciones habituales - **Criterios de selección** - Coste por consulta según tokens de entrada y de salida - Latencia, primer token y generación en flujo - Residencia del dato, cumplimiento y confidencialidad - Dependencia de proveedor y estrategia de sustitución **Práctica — Banco de pruebas comparativo de cinco modelos** Ejecución de un mismo conjunto de veinte tareas reales de negocio contra cinco modelos de distinto tamaño y proveedor, midiendo calidad, latencia y coste por consulta. 1. Definir las veinte tareas con su respuesta esperada y su criterio de aceptación. 2. Ejecutar el conjunto contra tres modelos por API y dos modelos abiertos autoalojados. 3. Registrar tokens consumidos, latencia por consulta y aciertos según el criterio. 4. Elaborar la tabla de decisión y recomendar el modelo por tipo de tarea. - *Stack:* Python, SDK de OpenAI y Anthropic, Ollama, pandas - *Entregable:* Cuaderno con la tabla comparativa de calidad, latencia y coste, y la recomendación razonada por tipo de tarea. **Lecturas** - Vaswani et al., Attention Is All You Need (paper) - Documentación de precios y límites de los proveedores (consulta guiada en clase) *Materiales:* `teoria/M5_S01_El_ecosistema_de_modelos_de_lenguaje_eleccion_y_.html` · `code/M5_S01_El_ecosistema_de_modelos_de_lenguaje_eleccion_y_.ipynb` --- ### Sesión 02 — Diseño de prompts y salida estructurada **Objetivos** - Escribir instrucciones que produzcan resultados estables y verificables. - Forzar salidas estructuradas validables por esquema. - Medir el efecto de cada cambio de prompt sobre un conjunto de casos. **Contenidos** - **Estructura de una instrucción eficaz** - Rol, tarea, contexto, restricciones y formato de salida - Ejemplos en el propio prompt y selección de los ejemplos - Descomposición del razonamiento en pasos explícitos - Instrucciones negativas y por qué fallan con frecuencia - **Salida estructurada** - Esquema JSON y modo de salida estructurada del proveedor - Validación con Pydantic y reintento guiado por el error - Enumeraciones y campos obligatorios frente a texto libre - Llamada a herramientas y funciones como salida estructurada - **Ingeniería de prompts como disciplina experimental** - Conjunto de casos de prueba y línea base - Un cambio por iteración y medición del efecto - Plantillas versionadas y separadas del código - Sensibilidad del resultado al modelo y a su versión **Práctica — Extractor estructurado de información contractual** Construcción de un extractor que devuelve un objeto validado con las cláusulas, importes y fechas de un lote de contratos, iterando el prompt contra un conjunto de casos etiquetados. 1. Definir el esquema de salida con Pydantic y su validación. 2. Escribir la versión inicial del prompt y medir la exactitud campo a campo sobre treinta contratos etiquetados. 3. Iterar tres versiones del prompt registrando el efecto de cada cambio. 4. Implementar el reintento guiado por el error de validación y medir la mejora final. - *Stack:* Python, Pydantic, instructor, SDK del proveedor - *Entregable:* Extractor funcional, esquema validado y tabla de exactitud por campo y por versión del prompt. **Lecturas** - Documentación de salida estructurada y llamada a herramientas del proveedor - Wei et al., Chain-of-Thought Prompting (paper) *Materiales:* `teoria/M5_S02_Diseno_de_prompts_y_salida_estructurada.html` · `code/M5_S02_Diseno_de_prompts_y_salida_estructurada.ipynb` --- ### Sesión 03 — Representaciones vectoriales y búsqueda semántica **Objetivos** - Comprender qué captura y qué no captura una representación vectorial. - Elegir un modelo de representación adecuado al idioma y al dominio. - Medir la calidad de una recuperación semántica. **Contenidos** - **Fundamento** - Del término al vector denso: qué significa la proximidad - Similitud coseno y producto escalar - Modelos de representación multilingües y especializados - Dimensionalidad, truncamiento y coste de almacenamiento - **Aplicación** - Búsqueda semántica frente a búsqueda por palabras clave - Agrupamiento y deduplicación semántica - Clasificación por vecinos más próximos - Detección de contenido fuera de dominio - **Medición** - Conjunto de consultas con relevancia anotada - Exhaustividad en k y ganancia acumulada descontada - Comparación de dos modelos de representación - Coste de recalcular todo el corpus al cambiar de modelo **Práctica — Comparación de modelos de representación sobre el corpus del Módulo 2** Evaluación de tres modelos de representación sobre el corpus corporativo con un conjunto de consultas de relevancia anotada. 1. Anotar la relevancia de treinta consultas sobre el corpus. 2. Calcular las representaciones con tres modelos distintos. 3. Medir exhaustividad en k y ganancia acumulada descontada. 4. Elegir el modelo y estimar el coste de indexación completa. - *Stack:* Python, sentence-transformers, API de representaciones, numpy - *Entregable:* Cuaderno con la comparación cuantitativa y el modelo seleccionado. **Lecturas** - Reimers & Gurevych, Sentence-BERT (paper) *Materiales:* `teoria/M5_S03_Representaciones_vectoriales_y_busqueda_semantic.html` · `code/M5_S03_Representaciones_vectoriales_y_busqueda_semantic.ipynb` --- ### Sesión 04 — Almacenes vectoriales e indexación del corpus **Objetivos** - Elegir el almacén vectorial adecuado al volumen y a los requisitos. - Indexar el corpus con metadatos y filtros útiles. - Operar la reindexación incremental sin interrumpir el servicio. **Contenidos** - **Opciones de almacenamiento** - Extensiones sobre bases relacionales y almacenes dedicados - Qdrant, Weaviate, Milvus y alternativas gestionadas - Índices aproximados: HNSW e IVF y sus parámetros - Cuándo basta una búsqueda exacta en memoria - **Diseño del índice** - Metadatos de filtrado: origen, fecha, permisos y versión - Filtrado previo y posterior a la búsqueda vectorial - Colecciones por dominio frente a colección única - Identificadores estables y trazabilidad hasta el documento - **Operación** - Reindexación incremental y por lotes - Borrado, actualización y derecho de supresión - Copias de seguridad y recuperación - Coste de almacenamiento y de consulta **Práctica — Índice vectorial operativo con control de permisos** Indexación del corpus corporativo con metadatos de permiso y verificación de que un usuario no recupera fragmentos que no le corresponden. 1. Desplegar el almacén vectorial y definir el esquema de metadatos. 2. Indexar el corpus con identificadores estables y permisos. 3. Implementar el filtrado por permiso y verificarlo con dos perfiles de usuario. 4. Ejecutar una reindexación incremental y comprobar la coherencia. - *Stack:* Qdrant o pgvector, Python, Docker - *Entregable:* Índice desplegado con filtrado por permisos verificado. **Lecturas** - Malkov & Yashunin, Efficient and robust approximate nearest neighbor search using HNSW (paper) *Materiales:* `teoria/M5_S04_Almacenes_vectoriales_e_indexacion_del_corpus.html` · `code/M5_S04_Almacenes_vectoriales_e_indexacion_del_corpus.ipynb` --- ### Sesión 05 — Construcción de un flujo RAG de extremo a extremo **Objetivos** - Ensamblar el flujo completo de recuperación aumentada con generación. - Construir el contexto y obligar a la citación de las fuentes. - Detectar y controlar la respuesta no fundamentada. **Contenidos** - **Arquitectura del flujo** - Consulta, recuperación, construcción del contexto y generación - Reescritura y expansión de la consulta - Número de fragmentos, orden y presupuesto de contexto - Memoria de conversación y consultas de seguimiento - **Fundamentación y citación** - Instrucción de responder solo con el contexto recuperado - Citación con identificador de fragmento verificable - Respuesta de no disponibilidad cuando falta evidencia - Enlace desde la respuesta al documento original - **Modos de fallo del RAG** - Recuperación correcta y generación errónea - Recuperación vacía o irrelevante - Contexto contradictorio entre documentos - Información obsoleta por falta de reindexación **Práctica — Asistente documental con citas verificables** Implementación del asistente sobre el corpus corporativo con citación obligatoria y comportamiento explícito ante ausencia de evidencia. 1. Implementar recuperación, construcción de contexto y generación. 2. Forzar la citación con identificadores verificables. 3. Definir y probar el comportamiento ante recuperación vacía. 4. Ejecutar veinte consultas reales y auditar la trazabilidad de cada cita. - *Stack:* Python, LangChain o LlamaIndex, Qdrant, SDK del proveedor - *Entregable:* Asistente funcional con auditoría de veinte respuestas y sus citas. **Lecturas** - Lewis et al., Retrieval-Augmented Generation (paper) *Materiales:* `teoria/M5_S05_Construccion_de_un_flujo_RAG_de_extremo_a_extrem.html` · `code/M5_S05_Construccion_de_un_flujo_RAG_de_extremo_a_extrem.ipynb` --- ### Sesión 06 — Recuperación híbrida y reordenación **Objetivos** - Combinar búsqueda léxica y vectorial para mejorar la recuperación. - Aplicar reordenación con modelos de codificación cruzada. - Cuantificar la mejora aportada por cada componente. **Contenidos** - **Recuperación híbrida** - Búsqueda léxica con BM25 y sus fortalezas - Fusión de resultados por rango recíproco - Ponderación entre señales léxica y semántica - Términos exactos, códigos y referencias donde falla lo semántico - **Reordenación** - Codificadores cruzados y su coste computacional - Recuperar muchos y reordenar pocos - Reordenadores por API y reordenadores autoalojados - Efecto de la reordenación sobre la precisión en las primeras posiciones - **Ajuste del flujo** - Selección del número de candidatos y del número final - Compresión y filtrado del contexto recuperado - Latencia añadida por cada componente - Análisis de ablación componente a componente **Práctica — Ablación de la cadena de recuperación** Medición del aporte incremental de la búsqueda híbrida y de la reordenación sobre el asistente de la sesión anterior. 1. Medir la línea base con recuperación exclusivamente vectorial. 2. Añadir búsqueda léxica y fusión por rango recíproco. 3. Añadir reordenación con codificador cruzado. 4. Comparar exhaustividad, precisión y latencia en las tres configuraciones. - *Stack:* Python, rank-bm25, reordenador de codificación cruzada, Qdrant - *Entregable:* Informe de ablación con la configuración recomendada y su coste en latencia. **Lecturas** - Nogueira & Cho, Passage Re-ranking with BERT (paper) *Materiales:* `teoria/M5_S06_Recuperacion_hibrida_y_reordenacion.html` · `code/M5_S06_Recuperacion_hibrida_y_reordenacion.ipynb` --- ### Sesión 07 — Evaluación de sistemas de recuperación aumentada **Objetivos** - Construir un conjunto de evaluación representativo del caso. - Medir fundamentación, relevancia y exhaustividad de la respuesta. - Automatizar la evaluación dentro del ciclo de desarrollo. **Contenidos** - **Conjunto de evaluación** - Consultas reales frente a consultas sintéticas - Generación asistida de pares consulta-respuesta a partir del corpus - Cobertura de casos difíciles y de consultas sin respuesta - Revisión humana del conjunto de referencia - **Métricas del flujo** - Métricas de recuperación: precisión y exhaustividad del contexto - Fidelidad de la respuesta al contexto recuperado - Relevancia de la respuesta respecto a la consulta - Descomposición del fallo entre recuperación y generación - **Automatización** - Modelo evaluador y su calibración contra juicio humano - Ejecución de la evaluación en cada cambio - Umbrales de regresión y bloqueo de despliegue - Coste de evaluar y tamaño mínimo del conjunto **Práctica — Banco de evaluación automatizado del asistente** Construcción de un conjunto de evaluación de cincuenta consultas y de un proceso automatizado que mide fidelidad, relevancia y calidad de la recuperación. 1. Generar y revisar manualmente cincuenta pares de evaluación. 2. Implementar las métricas de fidelidad, relevancia y precisión del contexto. 3. Calibrar el modelo evaluador contra veinte juicios humanos. 4. Definir los umbrales de regresión y ejecutar la evaluación completa. - *Stack:* Python, RAGAS, pandas, SDK del proveedor - *Entregable:* Banco de evaluación ejecutable con informe de la línea base y umbrales fijados. **Lecturas** - Es et al., RAGAS: Automated Evaluation of Retrieval Augmented Generation (paper) *Materiales:* `teoria/M5_S07_Evaluacion_de_sistemas_de_recuperacion_aumentada.html` · `code/M5_S07_Evaluacion_de_sistemas_de_recuperacion_aumentada.ipynb` --- ### Sesión 08 — Adaptación ligera de modelos: LoRA y QLoRA **Objetivos** - Decidir cuándo la adaptación aporta frente al prompting o a la recuperación. - Preparar un conjunto de instrucciones de calidad. - Entrenar y evaluar un adaptador de bajo rango. **Contenidos** - **Cuándo adaptar** - Prompting, recuperación y adaptación: qué resuelve cada uno - Formato, estilo y terminología frente a conocimiento factual - Volumen y calidad mínimos del conjunto de instrucciones - Coste total frente a la mejora esperada - **Técnicas de bajo rango** - LoRA: matrices de bajo rango, rango y factor de escala - QLoRA: cuantización del modelo base y entrenamiento del adaptador - Capas objetivo e hiperparámetros relevantes - Fusión del adaptador y servicio de múltiples adaptadores - **Conjunto y evaluación** - Construcción y limpieza del conjunto de instrucciones - Partición y contaminación entre entrenamiento y evaluación - Olvido catastrófico y pérdida de capacidades generales - Comparación honesta contra el modelo base bien instruido **Práctica — Adaptador LoRA para el estilo y la terminología corporativa** Entrenamiento de un adaptador QLoRA sobre un modelo abierto con un conjunto de instrucciones propio y comparación contra el modelo base con prompting cuidado. 1. Construir y depurar un conjunto de instrucciones de dominio. 2. Entrenar el adaptador con QLoRA sobre una GPU única. 3. Evaluar en tareas de dominio y en tareas generales para detectar olvido. 4. Comparar coste y calidad frente al modelo base con prompting optimizado. - *Stack:* Python, transformers, PEFT, bitsandbytes, GPU - *Entregable:* Adaptador entrenado con informe comparativo y recomendación de uso. **Lecturas** - Hu et al., LoRA: Low-Rank Adaptation of Large Language Models (paper) - Dettmers et al., QLoRA (paper) *Materiales:* `teoria/M5_S08_Adaptacion_ligera_de_modelos_LoRA_y_QLoRA.html` · `code/M5_S08_Adaptacion_ligera_de_modelos_LoRA_y_QLoRA.ipynb` --- ### Sesión 09 — Evaluación y comparación de modelos de lenguaje **Objetivos** - Diseñar una evaluación específica del caso en lugar de confiar en rankings generales. - Aplicar evaluación mediante modelo juez con control de sus sesgos. - Decidir un cambio de modelo con evidencia. **Contenidos** - **Limitaciones de los benchmarks públicos** - Contaminación de los conjuntos de evaluación - Distancia entre el benchmark y la tarea real - Comparaciones por preferencia y sus sesgos - Variabilidad entre versiones del mismo modelo - **Evaluación propia** - Conjunto de casos representativo del uso real - Rúbricas explícitas y criterios verificables - Comparación por pares y control del orden de presentación - Acuerdo entre el juez automático y el evaluador humano - **Decisión de cambio** - Coste, latencia y calidad en una única tabla de decisión - Riesgo de regresión al cambiar de proveedor o de versión - Pruebas de no regresión antes del cambio - Registro de la decisión y de su evidencia **Práctica — Informe de decisión sobre cambio de modelo** Evaluación comparativa de dos modelos candidatos sobre el caso del proyecto con rúbrica explícita, juez automático calibrado y análisis de coste. 1. Definir la rúbrica y el conjunto de casos representativos. 2. Ejecutar la comparación por pares con control del orden. 3. Calibrar el juez automático contra treinta juicios humanos. 4. Redactar el informe de decisión con calidad, coste y riesgo. - *Stack:* Python, pandas, SDK de dos proveedores - *Entregable:* Informe de decisión de dos páginas con la evidencia cuantitativa. **Lecturas** - Zheng et al., Judging LLM-as-a-Judge (paper) *Materiales:* `teoria/M5_S09_Evaluacion_y_comparacion_de_modelos_de_lenguaje.html` · `code/M5_S09_Evaluacion_y_comparacion_de_modelos_de_lenguaje.ipynb` --- ### Sesión 10 — Seguridad de aplicaciones con modelos de lenguaje **Objetivos** - Identificar los vectores de ataque específicos de las aplicaciones con LLM. - Implementar controles de entrada, de salida y de acceso al dato. - Probar el sistema con un ejercicio adversario estructurado. **Contenidos** - **Vectores de ataque** - Inyección de prompt directa e indirecta a través del contenido recuperado - Extracción de la instrucción del sistema y de datos del contexto - Exfiltración a través de enlaces, imágenes y llamadas a herramientas - Abuso de coste y denegación de servicio por consumo - **Controles** - Separación estricta entre instrucción y contenido no confiable - Barreras de entrada y de salida y clasificadores de contenido - Principio de mínimo privilegio en herramientas y en el índice - Confirmación humana para acciones con efecto - **Protección del dato** - Datos que nunca deben salir hacia un proveedor externo - Seudonimización previa al envío y reconstrucción posterior - Retención, registro y acceso a las trazas de conversación - Requisitos regulatorios que anticipan el Módulo 8 **Práctica — Ejercicio adversario contra el asistente propio** Ataque estructurado al asistente construido en el módulo, con documentos envenenados en el corpus, y posterior implementación de las mitigaciones. 1. Insertar documentos con instrucciones maliciosas en el corpus de prueba. 2. Ejecutar una batería de veinte ataques de inyección y exfiltración. 3. Registrar los ataques con éxito y clasificarlos por impacto. 4. Implementar las mitigaciones y repetir la batería midiendo la reducción. - *Stack:* Python, guardrails, clasificador de contenido, Qdrant - *Entregable:* Informe de seguridad con ataques, impacto y eficacia de las mitigaciones. **Lecturas** - OWASP Top 10 for LLM Applications - Greshake et al., Not What You've Signed Up For: Indirect Prompt Injection (paper) *Materiales:* `teoria/M5_S10_Seguridad_de_aplicaciones_con_modelos_de_lenguaj.html` · `code/M5_S10_Seguridad_de_aplicaciones_con_modelos_de_lenguaj.ipynb` --- ### Sesión 11 — Taller integrador: asistente corporativo evaluado y protegido **Objetivos** - Integrar recuperación, generación, evaluación y seguridad en un producto único. - Justificar cada decisión con la evidencia cuantitativa producida en el módulo. - Dejar el sistema listo para su industrialización en el Módulo 6. **Contenidos** - **Contenido del entregable** - Flujo completo con configuración de recuperación justificada - Banco de evaluación con resultados y umbrales - Informe de seguridad y controles activos - Modelo de coste por consulta y por usuario - **Revisión entre pares** - Intento de refutación de las métricas presentadas - Ataque cruzado al asistente de otro alumno - Verificación de la trazabilidad de las citas - Registro de las objeciones recibidas - **Cierre** - Requisitos operativos para el Módulo 6 - Limitaciones declaradas y usos no recomendados - Plan de mejora priorizado **Práctica — Revisión cruzada y ataque cruzado** Cada alumno presenta su asistente, otro compañero reproduce su evaluación y un tercero intenta comprometerlo. 1. Presentar el sistema y su evidencia cuantitativa. 2. Reproducir la evaluación de un compañero. 3. Ejecutar diez ataques contra el asistente de otro compañero. 4. Corregir los dos hallazgos de mayor impacto y volver a entregar. - *Stack:* Entorno del máster - *Entregable:* Asistente revisado con evaluación reproducida y hallazgos de seguridad corregidos. *Materiales:* `teoria/M5_S11_Taller_integrador_asistente_corporativo_evaluado.html` · `code/M5_S11_Taller_integrador_asistente_corporativo_evaluado.ipynb` --- ### Sesión 12 — Evaluación del módulo y defensa **Objetivos** - Defender oralmente el diseño del sistema generativo. - Demostrar dominio de la evaluación y de los controles de seguridad. - Cerrar el módulo con el sistema listo para el siguiente. **Contenidos** - **Prueba práctica** - Diagnóstico de un flujo RAG con recuperación defectuosa - Diseño de un esquema de salida estructurada - Identificación de un vector de inyección en un caso dado - **Defensa** - Presentación de siete minutos - Preguntas del tribunal docente sobre evidencia y coste - Criterios de la rúbrica - **Cierre y transición** - Devolución individual - Errores comunes detectados en el grupo - Preparación del Módulo 6 **Práctica — Prueba práctica y defensa** Evaluación sumativa del módulo. 1. Resolver la prueba práctica. 2. Defender el asistente corporativo. 3. Recibir devolución. - *Stack:* Entorno del máster - *Entregable:* Prueba resuelta y defensa realizada. *Materiales:* `teoria/M5_S12_Evaluacion_del_modulo_y_defensa.html` · `code/M5_S12_Evaluacion_del_modulo_y_defensa.ipynb` ---