Domina la Inteligencia Artificial desde sus cimientos
Un curso completo sobre LLMs, ingeniería de prompts, RAG, agentes autónomos y técnicas de optimización avanzadas.
Los Large Language Models (LLMs) son la columna vertebral de la IA generativa moderna. Entenderlos a fondo —no solo usarlos— es lo que distingue a un usuario avanzado de alguien que simplemente "escribe en ChatGPT". En este módulo desmontamos la arquitectura desde adentro.
La arquitectura Transformer
Todo LLM moderno se basa en la arquitectura Transformer, introducida en el famoso paper "Attention is All You Need" (Vaswani et al., 2017). Sus componentes esenciales son:
Tokenización
El texto se convierte en unidades llamadas tokens. "Inteligencia" puede ser 3 tokens: "Intel", "ligen", "cia".
Embeddings
Cada token se convierte en un vector de alta dimensión que captura su significado semántico.
Self-Attention
El mecanismo que permite al modelo relacionar cualquier token con cualquier otro en el contexto.
Feed-Forward
Capas densas que "almacenan" conocimiento factual y patrones lingüísticos complejos.
El mecanismo de atención en detalle
La atención es el corazón del Transformer. Matemáticamente, dado un conjunto de consultas Q, claves K y valores V, la atención se calcula así:
En términos simples: el modelo pesa cuánta "importancia" da a cada parte del contexto al generar cada siguiente token. Esta es la razón por la que los LLMs pueden mantener coherencia en textos largos.
Temperatura, Top-p y parámetros de generación
Cuando un LLM genera texto, no simplemente "elige" la siguiente palabra más probable. Aplica parámetros que controlan la distribución de probabilidades:
| Parámetro | Rango típico | Efecto | Cuándo usarlo |
|---|---|---|---|
| Temperature | 0.0 – 2.0 | 0 = determinista; 2 = muy aleatorio | 0 para código/hechos; 0.7–1.0 para creatividad |
| Top-p (nucleus) | 0.0 – 1.0 | Limita el vocabulario al núcleo de probabilidad | 0.9 es un buen default para texto creativo |
| Top-k | 1 – 100 | Solo considera los k tokens más probables | k=1 = greedy decoding (muy repetitivo) |
| Max tokens | 1 – límite del modelo | Longitud máxima de la respuesta | Siempre configurar para evitar costos no deseados |
Ventana de contexto (Context Window)
La ventana de contexto es la cantidad máxima de tokens que el modelo puede "ver" simultáneamente. Es como la memoria de trabajo del modelo: todo lo que no cabe en ella, simplemente no existe para el modelo durante esa inferencia.
La ingeniería de prompts (Prompt Engineering) es el arte y la ciencia de comunicarse eficazmente con un LLM para obtener resultados predecibles, precisos y útiles. No es "hablar bonito" — es diseñar instrucciones con intención.
La anatomía de un prompt efectivo
Ejemplo: Prompt básico vs. prompt estructurado
Tarea: Escribe un email de prospección en frío (outreach) de máximo 150 palabras.
Formato: Asunto + cuerpo. Incluye un CTA claro al final.
Restricciones: Sin emojis. Sin frases como "espero que este email te encuentre bien". Menciona el beneficio principal en las primeras dos oraciones.
Técnicas básicas de prompting
1. Zero-shot prompting
Le pides al modelo que realice una tarea sin darle ningún ejemplo. Funciona bien para tareas simples y modelos grandes.
2. Few-shot prompting
Proporcionas 2-5 ejemplos del formato entrada→salida que esperas. Es la forma más rápida de "calibrar" el modelo para una tarea específica.
Extrae el nombre y la ciudad del siguiente texto: # Ejemplo 1 Texto: "María González viajó a Barcelona para la conferencia." Salida: {"nombre": "María González", "ciudad": "Barcelona"} # Ejemplo 2 Texto: "El CEO Juan Pérez inauguró la planta en Monterrey." Salida: {"nombre": "Juan Pérez", "ciudad": "Monterrey"} # Tu turno Texto: "La investigadora Ana Ruiz presentó sus resultados en Madrid." Salida:
3. Role prompting
Asignar un rol experto al modelo activa patrones de respuesta más especializados. No es "magia" — el modelo ha sido entrenado con millones de textos de expertos en esos roles, y el rol en el prompt actúa como un selector de distribución.
Una vez dominadas las bases, el salto a técnicas avanzadas multiplica exponencialmente la calidad de los resultados. Estas técnicas son las que usan los equipos de investigación de OpenAI, Anthropic y Google en producción.
Chain of Thought (CoT)
Al incluir la frase "piensa paso a paso" o mostrar un ejemplo de razonamiento explícito, forzamos al modelo a externalizar su proceso cognitivo. Esto mejora dramáticamente el rendimiento en tareas de razonamiento, matemáticas y lógica.
Sin CoT: ¿Cuántos minutos hay en 3 días y 4 horas? → Respuesta directa (con alta probabilidad de error) Con CoT: ¿Cuántos minutos hay en 3 días y 4 horas? Razona paso a paso antes de dar la respuesta final. → El modelo calculará: 3 días × 24 horas = 72 horas 72 + 4 = 76 horas 76 × 60 = 4,560 minutos ✓
Tree of Thought (ToT)
Una extensión de CoT donde el modelo explora múltiples "ramas" de razonamiento en paralelo, evalúa cada una y converge en la más prometedora. Ideal para problemas de planificación, puzzles y decisiones complejas.
Self-Consistency
En lugar de generar una sola respuesta, generas múltiples respuestas con temperature > 0 y aplicas un "voto de mayoría" entre ellas. Reduce significativamente los errores en tareas de razonamiento.
import anthropic from collections import Counter client = anthropic.Anthropic() def self_consistent_answer(prompt, n=5): responses = [] for _ in range(n): msg = client.messages.create( model="claude-sonnet-4-20250514", max_tokens=256, temperature=0.7, # variación entre runs messages=[{"role": "user", "content": prompt}] ) responses.append(msg.content[0].text) # Extraer respuesta final y votar por mayoría return Counter(responses).most_common(1)[0][0]
Prompt Chaining
Descompones una tarea compleja en una cadena de prompts más simples, donde la salida de uno es la entrada del siguiente. Esto supera la degradación de calidad que ocurre cuando metes demasiadas instrucciones en un solo prompt.
Prompt de extracción
Extrae los datos clave del documento de entrada.
Prompt de análisis
Analiza los datos extraídos para identificar patrones.
Prompt de síntesis
Genera el informe final con los hallazgos del análisis.
Structured Output (Salidas estructuradas)
Forzar al modelo a responder en JSON, XML o un formato predefinido es esencial para integrar LLMs en pipelines de producción. Los modelos modernos soportan JSON Mode nativamente.
Analiza el siguiente review de producto y devuelve ÚNICAMENTE
un JSON válido con esta estructura exacta. Sin explicaciones adicionales.
{
"sentimiento": "positivo" | "negativo" | "neutro",
"puntuacion": 1-10,
"temas_mencionados": ["string"],
"intencion_recompra": boolean,
"resumen": "string de máximo 50 palabras"
}
Review: "El auricular tiene un sonido increíble y la batería dura
mucho, pero el plástico se siente barato y tardó 2 semanas en llegar."
Los LLMs sin conexión al mundo exterior son como un genio encerrado en una caja: inteligente, pero limitado a lo que sabe desde su fecha de corte. RAG, las herramientas (tool use) y los agentes son los mecanismos que conectan esa inteligencia con el mundo real.
Retrieval-Augmented Generation (RAG)
RAG es una arquitectura que combina la recuperación de información de una base de datos con la generación del LLM. En lugar de depender solo del conocimiento paramétrico del modelo, puedes "darle" documentos relevantes en cada query.
Pipeline RAG básico
# 1. INDEXACIÓN (offline, una vez) documentos = cargar_documentos("./knowledge-base/") chunks = chunker(documentos, size=512, overlap=64) embeddings = embedding_model.encode(chunks) # e.g. text-embedding-3 vector_db.upsert(embeddings, chunks) # 2. CONSULTA (online, cada request) def rag_query(pregunta: str) -> str: # Recuperar chunks relevantes query_emb = embedding_model.encode(pregunta) top_chunks = vector_db.similarity_search(query_emb, k=5) # Construir contexto aumentado contexto = "\n\n".join(top_chunks) # Generar respuesta con contexto prompt = f"""Usa SOLO la siguiente información para responder. Si la respuesta no está en el contexto, di "No lo sé". CONTEXTO: {contexto} PREGUNTA: {pregunta}""" return llm.generate(prompt)
Estrategias de chunking
El chunking (cómo divides los documentos en fragmentos) es uno de los factores más críticos del rendimiento de RAG y el que menos atención recibe en tutoriales básicos:
| Estrategia | Descripción | Mejor para |
|---|---|---|
| Fixed-size | Chunks de N tokens con overlap | Baseline rápido, texto uniforme |
| Recursive | Divide por párrafo → oración → palabra | Documentos con estructura variable |
| Semantic | Agrupa oraciones por similitud semántica | Textos de ensayo, artículos académicos |
| Proposition | Extrae proposiciones atómicas con un LLM | Máxima precisión, alto costo |
| Hierarchical | Summary → secciones → párrafos | Documentos largos con jerarquía clara |
Tool Use (Uso de herramientas)
Los modelos modernos pueden "llamar" a funciones externas y usar sus resultados para completar una tarea. Esto extiende radicalmente sus capacidades: búsqueda web, APIs, bases de datos, código ejecutable.
tools = [
{
"name": "get_weather",
"description": "Obtiene el clima actual de una ciudad",
"input_schema": {
"type": "object",
"properties": {
"ciudad": {
"type": "string",
"description": "Nombre de la ciudad"
}
},
"required": ["ciudad"]
}
}
]
# El modelo decide cuándo y cómo llamar a la herramienta
response = client.messages.create(
model="claude-sonnet-4-20250514",
tools=tools,
messages=[{"role": "user", "content": "¿Cómo está el clima en CDMX?"}]
)
Agentes autónomos
Un agente es un LLM que opera en un loop de razonamiento-acción, tomando decisiones sobre qué herramientas usar, cuándo parar y cómo adaptar su estrategia según los resultados obtenidos. El framework más utilizado es ReAct (Reasoning + Acting).
Cuando el prompting ya no es suficiente para alcanzar el rendimiento que necesitas, es hora de explorar la adaptación directa del modelo. El fine-tuning no es "entrenar desde cero" — es ajustar un modelo ya capaz para que se comporte de manera específica en tu dominio.
¿Cuándo hace falta fine-tuning?
Sí necesitas fine-tuning
Formato de salida muy específico y consistente. Dominio muy especializado (legal, médico, técnico). Latencia crítica (menos tokens en el prompt).
No necesitas fine-tuning
Aún no has optimizado tus prompts. Tienes menos de 100 ejemplos de entrenamiento. El problema puede resolverse con RAG o few-shot.
Métodos de fine-tuning eficiente (PEFT)
Los Parameter-Efficient Fine-Tuning (PEFT) permiten adaptar modelos grandes usando solo una fracción de sus parámetros, reduciendo dramáticamente los recursos necesarios:
LoRA (Low-Rank Adaptation)
En lugar de actualizar todos los pesos del modelo, LoRA inserta matrices de rango bajo en las capas de atención. Típicamente solo ajusta el 0.1-1% de los parámetros totales con resultados comparables al fine-tuning completo.
from peft import LoraConfig, get_peft_model lora_config = LoraConfig( r=16, # rango de las matrices lora_alpha=32, # factor de escala target_modules=["q_proj", "v_proj"], lora_dropout=0.05, bias="none", task_type="CAUSAL_LM" ) model = get_peft_model(base_model, lora_config) model.print_trainable_parameters() # trainable params: 4,194,304 / 6,706,369,536 → 0.06% ✓
RLHF — Reinforcement Learning from Human Feedback
Es el método que hizo que modelos como ChatGPT o Claude sean seguros y útiles. Consiste en tres fases:
SFT (Supervised Fine-Tuning)
Se entrena el modelo con demostraciones de alta calidad de expertos humanos.
Reward Model
Humanos rankean pares de respuestas y se entrena un modelo para predecir preferencias.
PPO / DPO
El LLM se optimiza usando el Reward Model como señal, sin necesitar más labels humanos.
Evaluación de modelos (Evals)
Antes y después del fine-tuning, necesitas evaluar objetivamente el modelo. Las métricas más usadas en producción son:
Ningún curso de IA avanzada está completo sin abordar las implicaciones éticas y técnicas de desplegar estos sistemas en el mundo real. No como afterthought, sino como parte central del diseño.
Tipos de sesgos en LLMs
Los LLMs aprenden de datos generados por humanos, y esos datos contienen los sesgos de la sociedad que los produjo. Es imprescindible conocerlos para detectarlos y mitigarlos:
| Tipo de sesgo | Descripción | Ejemplo |
|---|---|---|
| Sesgo de representación | Grupos subrepresentados en los datos | Modelos que funcionan peor en español que en inglés |
| Sesgo de confirmación | Sycophancy: el modelo dice lo que el usuario quiere oír | "Sí, tienes razón" aunque el usuario esté equivocado |
| Sesgo de posición | Preferencia por opciones al inicio o final del contexto | En un ranking, el modelo siempre prefiere la opción A |
| Sesgo de formato | Preferencia por respuestas con cierto formato | El modelo puntúa más alto textos más largos o con bullets |
Alucinaciones: causas y mitigación
Las alucinaciones son cuando el modelo genera información factualmente incorrecta con total confianza. No son "bugs" — son una consecuencia de cómo los LLMs generan texto (predicción estadística de tokens, no recuperación de hechos).
Estrategias de mitigación
RAG
Ancla las respuestas a documentos verificables. Pide citas explícitas.
Temperature 0
Reduce variabilidad en tareas factuales donde la creatividad no es necesaria.
Self-check
Pide al modelo que revise su propia respuesta buscando errores factuales.
Human-in-the-loop
Para decisiones críticas, siempre mantén validación humana en el proceso.
Seguridad y prompt injection
Cuando construyes aplicaciones con LLMs, expones un nuevo vector de ataque: el prompt injection. Un usuario malicioso puede intentar "secuestrar" el comportamiento de tu sistema a través de inputs diseñados para sobrescribir tu system prompt.
El futuro: IA alineada y gobernanza
El campo de la AI Safety y la alineación trabaja en garantizar que los sistemas de IA actúen conforme a los valores e intenciones humanas, incluso a medida que se vuelven más capaces. Conceptos como Constitutional AI (Anthropic), RLHF y los marcos regulatorios como el EU AI Act son parte de este ecosistema.
Como profesional de IA, tu responsabilidad incluye no solo construir sistemas funcionales, sino también seguros, auditables, explicables y justos. Esto no es idealismo — es un requisito cada vez más regulado a nivel global.
0 Comentarios