0.1 — ¿Qué es un LLM?
Un Large Language Model (LLM) es una red neuronal entrenada sobre enormes cantidades de texto para realizar una tarea fundamental: predecir el siguiente token. Cuando escribes "La capital de Francia es", el modelo calcula una distribución de probabilidades y determina que "París" es el token más probable. No hay base de datos interna, ni motor de búsqueda oculto — solo predicción estadística a gran escala.
La analogía del autocompletado
El autocompletado de tu IDE analiza el contexto local (importaciones, tipos, variables en scope) para sugerir el siguiente token. Un LLM hace lo mismo, pero su "scope" abarca todo el conocimiento absorbido durante el entrenamiento: documentación, código open source, libros, artículos. Mismo principio, escala radicalmente diferente.
Entrenamiento en 3 fases
El entrenamiento se divide en etapas distintas:
1. Pre-training: el modelo procesa terabytes de texto (código, Wikipedia, libros, foros) para aprender los patrones estadísticos del lenguaje. Esta fase cuesta decenas de millones de dólares en cómputo GPU.
2. Fine-tuning: el modelo se afina con datos más específicos y de mayor calidad.
3. RLHF (Reinforcement Learning from Human Feedback): personas evalúan las respuestas del modelo, y este aprende a producir resultados útiles y relevantes. Esta fase convierte un predictor de texto crudo en un asistente conversacional.
El mecanismo técnico central es attention (arquitectura Transformer, Google, 2017). Permite que el modelo "mire" todas las partes del texto de entrada simultáneamente. Si escribes una función de 200 líneas y el tipo de retorno está definido en la línea 3, attention permite conectar esa información en la línea 200.
Puntos clave
• Un LLM predice el siguiente token a partir de todos los tokens anteriores
• El entrenamiento ocurre en 3 fases: pre-training, fine-tuning, RLHF
• El modelo no "comprende" — produce texto estadísticamente probable
• Es autocompletado a escala de internet, no un motor de razonamiento
0.2 — Tokens: la unidad básica
Un token no es una palabra. Es un fragmento de texto — a veces una palabra completa (function), a veces parte de una palabra (des + er + ial + ization), a veces un solo carácter (una llave, un salto de línea). El proceso de división se llama tokenización, realizado por un algoritmo (tokenizer) específico para cada familia de modelos. Confundir tokens con palabras es un error que cuesta dinero, literalmente.
Por qué los tokens importan para un desarrollador
Tres razones directas:
- Costo: pagas por uso en tokens, no en palabras ni caracteres. Cada token enviado (input) y generado (output) se cobra.
- Context window: si tu modelo tiene una ventana de 200.000 tokens, ese es el límite de lo que puede "ver" simultáneamente, no 200.000 palabras.
- El código consume muchos tokens: llaves, paréntesis, indentación, nombres de variables largos — un archivo de código de 100 líneas fácilmente representa entre 500 y 800 tokens.
Contando tus tokens
Regla aproximada: 1 token ≈ 4 caracteres en inglés ≈ 3/4 de una palabra. El español consume entre un 20-30% más de tokens que el inglés.
| Ejemplo | Tokens |
|---|---|
function |
1 token |
désérialisation |
5 tokens |
| 100 líneas de código | ~500-800 tokens |
El tokenizer de OpenAI está disponible en línea (platform.openai.com/tokenizer). Acostumbrarte a revisar el conteo de tokens de tus prompts y archivos de contexto es el primer paso hacia un uso eficiente de los LLMs.
Puntos clave
• Un token es un fragmento de texto, no una palabra
• El tokenizer es específico para cada modelo (Claude, GPT-4, etc.)
• El código consume más tokens que el texto natural
• El español consume entre un 20-30% más de tokens que el inglés
• Todo se cobra en tokens: input + output
0.3 — El context window
El context window es la cantidad máxima de tokens que un LLM puede procesar en una sola interacción. Es su memoria de trabajo. Todo lo que el modelo "sabe" sobre tu conversación, tu código y tus instrucciones debe caber dentro de esta ventana. Si superas el límite, la información más antigua se trunca o se ignora.
Qué llena la ventana
La ventana no contiene solo tu prompt. Incluye todo:
| Elemento | Descripción |
|---|---|
| System prompt | Las instrucciones base del modelo |
| Historial | Todas las preguntas y respuestas anteriores |
| Contexto inyectado | Archivos, documentación, resultados de búsqueda |
| Respuesta en progreso | Tokens generados por el modelo |
Cuando usas Claude Code y lee 15 archivos de tu proyecto, esos 15 archivos ocupan espacio. Si tu conversación ha durado 30 intercambios, todo ese historial también está ahí. Un proyecto con sus archivos de configuración, módulos y tests — unos pocos docenas de archivos son suficientes para saturar la ventana.
El fenómeno "lost in the middle"
Los LLMs prestan más atención a la información al inicio y al final del contexto, y tienden a "olvidar" lo que está en el medio. Si pegas 50 archivos y la información crítica está en el número 25, es probable que el modelo la ignore. La selección y el orden del contexto son tan importantes como el contenido del prompt.
Tamaños de ventana comunes (2026):
- Claude Opus 4 / Sonnet 4: 200K tokens (estándar), 1M tokens (extendido)
- GPT-4 Turbo: 128K tokens
- Gemini: hasta 1M tokens
Puntos clave
• El context window = la RAM del LLM, medida en tokens
• Incluye todo: system prompt, historial, archivos inyectados, respuesta en progreso
• Más contexto no significa mejor respuesta — la calidad supera a la cantidad
• Las conversaciones largas degradan la calidad (el historial satura la ventana)
0.4 — Prompt vs Contexto
La mayoría de los desarrolladores decepcionados con la IA cometen el mismo error: se enfocan en el prompt (la pregunta que hacen) y descuidan el contexto (toda la información que acompaña esa pregunta). En la práctica, el contexto es responsable de la mayor parte de la calidad de la respuesta. Un prompt simple en un contexto rico supera a un prompt sofisticado en un contexto pobre.
Las capas del contexto
El contexto de un LLM funciona en capas, de la más profunda a la más superficial:
1. System prompt: instrucciones base que definen el comportamiento del modelo
2. Contexto persistente: archivos de configuración como CLAUDE.md, reglas del proyecto, convenciones
3. Contexto de sesión: archivos leídos, resultados de búsqueda, historial de conversación
4. User prompt: tu pregunta o instrucción
Cada capa influye en la respuesta, pero las capas más profundas tienen más impacto que el prompt superficial. Un archivo CLAUDE.md bien escrito mejora todas tus interacciones futuras, no solo la siguiente.
La analogía del consultor
El prompt es la pregunta que le haces a un consultor. El contexto es el brief enviado antes de la reunión: documentación del proyecto, código existente, restricciones técnicas, historial de decisiones. Sin un brief, obtienes una respuesta genérica. Con un brief completo, la misma pregunta produce una respuesta específica y accionable.
Puntos clave
• El prompt = tu pregunta. El contexto = todo lo demás
• El contexto tiene más impacto en la calidad que el prompt en sí
• Invertir en contexto persistente (CLAUDE.md, convenciones) tiene efecto acumulativo
• La habilidad real no es prompt engineering, es context engineering
0.5 — Temperature, top-p y parámetros de generación
Cuando un LLM genera el siguiente token, calcula una distribución de probabilidades sobre todo su vocabulario. Los parámetros de generación controlan cómo el modelo elige entre estos candidatos. La mayoría de los desarrolladores usa los valores por defecto sin entender qué están dejando sobre la mesa.
Temperature
La temperature controla el nivel de aleatoriedad en la selección de tokens:
| Temperature | Comportamiento | Uso recomendado |
|---|---|---|
| 0 | Determinístico, siempre el token más probable | Código, tests, refactoring |
| 0.3-0.5 | Ligera variabilidad, buen balance | Refactoring exploratorio |
| 0.7-1.0 | Creativo, más diversidad | Brainstorming, escritura |
| > 1.0 | Errático, tokens poco probables elegidos | Raramente útil |
Otros parámetros
- top-p (nucleus sampling): trunca las opciones. Un top-p de 0.9 solo considera tokens cuyas probabilidades acumuladas llegan al 90%. Elimina los tokens poco probables preservando la diversidad.
- max_tokens: longitud máxima de la respuesta. Muy bajo = respuesta cortada en medio de un bloque de código.
- top-k: limita la elección a los k tokens más probables.
- frequency_penalty: penaliza los tokens ya usados para evitar repeticiones.
En la práctica, con Claude Code en modo agentic, estos parámetros se gestionan automáticamente. Pero cuando usas la API directamente o configuras una herramienta como Cursor, entender estos parámetros marca la diferencia.
Puntos clave
• La temperature es el dial creatividad/confiabilidad — para código, mantenla baja
• top-p y temperature son complementarios — raramente ajustas ambos al mismo tiempo
• max_tokens demasiado bajo = respuesta truncada, demasiado alto = costo innecesario
• Claude Code optimiza estos parámetros automáticamente en modo agentic
0.6 — Los límites de los LLMs
Entender los límites de una herramienta es lo que separa al desarrollador que la usa eficazmente del que está constantemente decepcionado. Un LLM no es un oráculo. Es una herramienta con puntos ciegos predecibles, y conocerlos te permite trabajar en torno a ellos.
Alucinaciones
Un LLM puede generar información falsa con absoluta confianza: inventar una API inexistente, citar parámetros ficticios de una librería real, producir código que usa funciones imaginarias. El modelo no "verifica" nada — genera texto estadísticamente probable. El riesgo aumenta en temas poco representados en los datos de entrenamiento: librerías recientes, APIs internas, código propietario.
Razonamiento limitado
Los LLMs son excelentes en reconocimiento de patrones, pero tienen dificultades con el razonamiento multi-paso complejo. Rastrear la ejecución de un algoritmo recursivo a través de 15 niveles de profundidad supera sus capacidades de predicción estadística. No es razonamiento formal, es reconocimiento de patrones.
Otros límites estructurales
- Sin memoria persistente: cada conversación comienza desde cero (excepto por mecanismos de persistencia como
CLAUDE.md) - Fecha de corte: el modelo no sabe nada sobre eventos posteriores a su entrenamiento
- Sesgo en los datos: sobre-representación de ciertos lenguajes (Python, JavaScript), frameworks (React, Spring), enfoques arquitectónicos
- Sin ejecución: no puede probar, compilar ni verificar su propio output. Por eso las herramientas agentic como Claude Code son poderosas: llenan ese vacío
Puntos clave
• Las alucinaciones son inherentes — siempre verifica APIs y firmas de funciones
• El razonamiento multi-paso es frágil — descompone los problemas complejos
• Sin memoria entre sesiones sin configuración explícita
• Las herramientas agentic compensan la falta de ejecución (testing, compilación, iteración)
0.7 — El ecosistema de herramientas de IA para devs
El mercado de herramientas de IA para desarrolladores evoluciona cada semana. GitHub Copilot, Cursor, Claude Code, Windsurf, Codeium, Amazon Q Developer — la proliferación es real. Entender las diferencias fundamentales entre estas herramientas te ayuda a elegir la que se adapta a tu flujo de trabajo.
Tres tipos de integración
| Tipo | Ejemplos | Característica |
|---|---|---|
| IDE | Copilot, Cursor, Windsurf | Se integra en tu editor |
| CLI | Claude Code, Gemini CLI, Codex CLI | Corre desde la terminal |
| Web | ChatGPT, Claude.ai | Interfaz de chat |
Tres paradigmas de interacción
1. Inline completion (Copilot, Tabnine, Codeium): predice la continuación de tu código mientras escribes. Autocompletado avanzado, a nivel de línea o bloque.
2. Chat integrado (Copilot Chat, Cursor Chat): preguntas y solicitudes de modificación en una ventana de chat junto al código.
3. Agentic (Claude Code, Cursor Composer, Windsurf Cascade): acciones autónomas — leer archivos, ejecutar comandos, modificar código, correr tests, iterar.
Modelo subyacente vs herramienta
Un punto frecuentemente confundido: la herramienta y el modelo son dos decisiones separadas. Cursor puede usar GPT-4 o Claude. Copilot usa modelos de OpenAI. Claude Code usa exclusivamente modelos Claude. La calidad de la integración — qué contexto envía la herramienta, cómo gestiona los errores, cómo orquesta las acciones — a menudo importa más que el modelo en bruto.
Puntos clave
• Tres paradigmas: inline completion, chat integrado, agentic
• El modelo subyacente y la herramienta son dos decisiones separadas
• La calidad de la integración (contexto, orquestación) importa tanto como el modelo
• Este curso se enfoca en Claude Code y el paradigma agentic
0.8 — Inline completion vs Agente
El inline completion y el modo agentic son dos paradigmas fundamentalmente diferentes. Esta distinción determina el tipo de tareas que puedes delegar, el nivel de autonomía que le otorgas a la IA, y el multiplicador de productividad que puedes esperar.
Inline completion
Escribes código, la IA sugiere la continuación en tiempo real. La aceptas (Tab) o la rechazas. El control es total: tú eres el piloto. La ganancia es lineal — entre un 10 y un 30% menos de código escrito. La IA trabaja a nivel de línea o bloque, nunca a nivel de proyecto.
Modo agentic
Describes una intención de alto nivel:
Implementa un repository para las ofertas retail
siguiendo el mismo patrón que el repository existente
para las alianzas.
El agente explora tu codebase, crea los archivos necesarios, escribe el código, corre los tests, corrige los errores e itera. Ya no eres el piloto — eres el sponsor. Tareas de 2 horas se resuelven en 10 minutos.
El cambio de postura
| Inline completion | Agentic | |
|---|---|---|
| Rol | Ejecutor asistido | Sponsor |
| Habilidad clave | Velocidad + evaluar sugerencias | Formular intenciones + verificación |
| Nivel | Sintáctico (completado de texto) | Semántico (comprensión de intención) |
| Riesgo | Bajo (línea por línea) | Alto si está mal configurado (15 archivos modificados) |
Cuanta más autonomía tenga la IA, más costosos pueden ser los errores. Un agente que modificó 15 archivos por malentender tu arquitectura crea un desastre en 30 segundos. Por eso la configuración (guardrails, convenciones, archivos de contexto) es crucial en el modo agentic.
Puntos clave
• Inline completion: ganancia del 10-30%, control total, nivel línea/bloque
• Agentic: ganancia de orden de magnitud, pero requiere un entorno bien configurado
• Pasar de uno al otro es un cambio de paradigma, no una evolución incremental
• Más autonomía = más riesgo sin la configuración adecuada
0.9 — El concepto de Harness Engineering
El término viene de "harness" (arnés). Un LLM en modo agentic es un caballo de tiro poderoso. Sin arnés, esa potencia es incontrolable. Con un arnés bien ajustado, se convierte en una fuerza de tracción precisa y dirigida. Harness Engineering es el arte de diseñar y ajustar ese arnés.
El concepto está descrito en detalle por Martin Fowler.
Configuración > prompts individuales
Harness Engineering se basa en una convicción: el tiempo invertido en configurar el entorno de trabajo de la IA tiene un mayor retorno de inversión que el tiempo dedicado a pulir prompts. Un prompt es de uso único. Una configuración es un multiplicador — mejora cada interacción futura. Escribir un archivo CLAUDE.md completo toma 30 minutos, pero mejora miles de interacciones a lo largo de la vida de un proyecto.
Los componentes del harness
El harness está compuesto por 4 elementos:
- Archivos de configuración (CLAUDE.md, .cursorrules): contexto persistente, arquitectura, convenciones, patrones
- Hooks y guardrails: linting, tests, compilación después de cada modificación del agente
- Plantillas y ejemplos: archivos de referencia para reproducir el patrón correcto
- Reglas de scope: qué puede y no puede modificar el agente
Prompt Engineering vs Harness Engineering
Prompt Engineering optimiza las interacciones individuales — es táctico. Harness Engineering optimiza el entorno de trabajo — es estratégico. Un buen Prompt Engineer obtiene buenas respuestas. Un buen Harness Engineer obtiene buenas respuestas por defecto, sin esfuerzo extra en cada interacción.
Puntos clave
• Harness = el arnés. La IA agentic necesita ser guiada, no solo promoteada
• La configuración tiene efecto acumulativo (30 min de config > horas de prompts repetitivos)
• Los 4 componentes: archivos de contexto, hooks, plantillas, reglas de scope
• Prompt Engineering = táctico. Harness Engineering = estratégico
0.10 — El costo de la IA
La IA para desarrolladores no es gratuita. Si no entiendes cómo funciona el pricing, corres el riesgo de subutilizar la herramienta por miedo al costo, o de recibir una factura desagradable a fin de mes. Este sub-módulo desmitifica el modelo económico.
Precio por token
El pricing se basa en dos métricas: tokens de input y tokens de output. Los tokens de output cuestan significativamente más.
| Modelo | Input | Output |
|---|---|---|
| Claude Sonnet 4 | $3/M | $15/M |
| Claude Opus 4 | $15/M | $75/M |
| Claude Haiku | $0.25/M | $1.25/M |
La relación output/input es aproximadamente de 5x. Un buen contexto (input) que permite una respuesta concisa (output) es más económico que un contexto escaso que obliga a explicaciones largas.
Costo real en la práctica
Con Claude Code, cada interacción consume tokens: archivos leídos, búsquedas en el codebase, resultados de comandos analizados. Una sesión de desarrollo agentic intensivo en un proyecto grande consume entre 5 y 20 dólares al día. En perspectiva: si esa sesión te ahorra 4 horas a €80/h, el ROI es de 20 a 1.
Estrategias de optimización
1. Modelo adecuado para la tarea: Sonnet para el trabajo diario, Opus para trabajo complejo
2. Conversaciones cortas: una conversación nueva es más eficiente que una larga cuyo historial cuesta cada vez más
3. Buen contexto persistente: un CLAUDE.md bien escrito evita re-explicar el contexto en cada sesión
4. Suscripción si el uso es intensivo: Claude Max ($100 o $200/mes) puede ser más barato que el pago por uso
Puntos clave
• Los tokens de output cuestan ~5x más que los de input
• Una sesión intensiva de Claude Code: $5-20/día
• El ROI es evidente para un desarrollador cuyo costo por hora supera los €50
• Optimiza mediante la elección del modelo, la duración de las conversaciones y el contexto persistente
0.11 — Seguridad y privacidad
Cuando usas un LLM, tu código sale de tu máquina. Eso es funcionamiento normal, no un error. Entender exactamente qué se envía, adónde, y cómo se procesa no es paranoia — es responsabilidad profesional.
Qué se transmite
Con Claude Code, cada interacción envía datos a los servidores de Anthropic a través de la API: tu prompt, los archivos que el agente lee, los resultados de los comandos ejecutados, el historial de conversación. Anthropic se compromete contractualmente (política de API) a no usar estos datos para entrenar sus modelos. Pero la transmisión en sí es un vector de riesgo.
Los tres riesgos concretos
1. Secretos enviados accidentalmente: un archivo .env con claves AWS, un token OAuth hardcodeado, una contraseña de base de datos. Si el agente los lee, se transmiten.
2. Datos personales: fixtures de tests con emails reales, nombres, direcciones — potencial violación del GDPR.
3. Propiedad intelectual: código propietario, algoritmos de negocio, lógica empresarial enviada a un servicio de terceros.
Buenas prácticas
Ejemplo de archivo .claudeignore para evitar que el agente lea archivos sensibles:
.env
.env.*
credentials/
secrets/
**/fixtures/production/
Reglas base:
- Nunca pongas secretos en el código — usa variables de entorno + un gestor de secretos
- Fixtures de tests anonimizadas
- Revisa regularmente los logs de sesión
A nivel organizacional: define una política clara sobre el uso de herramientas de IA antes de que surjan los problemas. Para casos sensibles, existen opciones: despliegue en VPC con Anthropic, proxy de filtrado, o modelos locales (LLaMA, Mistral).
Puntos clave
• Cada interacción envía datos a los servidores del proveedor
• Riesgos reales: secretos, datos personales (GDPR), propiedad intelectual
• .claudeignore es tu primera línea de defensa
• Define una política clara para el equipo antes del incidente, no después
0.12 — Elegir tu modelo
No todos los modelos son iguales, y el más capaz no siempre es la mejor opción. En Anthropic, la línea de Claude viene en tres niveles: Opus (el más capaz), Sonnet (el equilibrado), y Haiku (el más rápido). Elegir el modelo correcto para la tarea correcta es una de las optimizaciones más simples y de mayor impacto.
La línea de Claude
| Modelo | Fortalezas | Precio input | Precio output | Uso |
|---|---|---|---|---|
| Opus 4 | Razonamiento complejo, arquitectura, bugs profundos | $15/M | $75/M | ~10-20% de las tareas |
| Sonnet 4 | Versátil, buen balance inteligencia/costo | $3/M | $15/M | ~70-80% de las tareas |
| Haiku | Ultra-rápido, económico | $0.25/M | $1.25/M | Tareas simples, pipelines |
Cuándo usar qué
- Opus: bug sutil que involucra 10 módulos, refactor arquitectónico, decisión de diseño con trade-offs complejos
- Sonnet: generación de código estándar, escritura de tests, refactoring mediano, revisión de código
- Haiku: formateo, boilerplate, transformaciones sintácticas, pipelines automatizados de alto volumen
Claude Code admite cambio de modelo durante la sesión:
/model sonnet # Modelo por defecto recomendado
/model opus # Para las tareas complejas
/model opus[1m] # Opus con ventana extendida a 1M tokens
/model sonnet[1m] # Sonnet con ventana extendida a 1M tokens
Más allá de Anthropic: GPT-4o (OpenAI), Gemini (Google, ventana de hasta 1M tokens), LLaMA y Mistral (open source, desplegables localmente). La elección depende de tus restricciones de costo, privacidad, rendimiento e integración.
Nivel de esfuerzo
Más allá de la elección del modelo, Claude Code te permite controlar el nivel de esfuerzo que el modelo invierte en cada respuesta mediante el comando /effort. Hay tres niveles disponibles:
| Nivel | Comportamiento | Uso |
|---|---|---|
low |
Respuestas cortas y directas, menos razonamiento | Preguntas simples, confirmaciones |
medium |
Enfoque equilibrado, implementación estándar | Desarrollo cotidiano |
high |
Análisis profundo, exploración exhaustiva | Arquitectura, bugs complejos |
max |
Esfuerzo máximo, razonamiento más profundo | Problemas críticos, decisiones estructurantes |
/effort high # Análisis profundo
/effort medium # Equilibrio (por defecto)
/effort low # Respuestas rápidas y económicas
Punto importante: Anthropic bajó el nivel de esfuerzo por defecto de high a medium. En la práctica, medium es suficiente para la mayoría de las tareas de desarrollo. Reservar high para los momentos en que necesitas razonamiento profundo ahorra tokens y da respuestas más rápidas en el día a día.
Puntos clave
• Sonnet por defecto (70-80% de las tareas), Opus para trabajo complejo, Haiku para volumen
• Opus cuesta 5x más que Sonnet — úsalo cuando la complejidad lo justifique
• Claude Code permite cambiar de modelo durante la sesión con /model
• /effort controla la profundidad del razonamiento: low, medium (por defecto), high
• El "mejor modelo" depende de la tarea, no de un benchmark absoluto