Context Engineering: El prompt engineering ha crecido
8 min de lectura

Context Engineering: El prompt engineering ha crecido

1681 palabras

Hace unos años, muchos investigadores de IA (incluso los más reputados) predecían que el prompt engineering sería una habilidad temporal que desaparecería rápidamente. Se equivocaron completamente. No solo no ha desaparecido, sino que ha evolucionado hacia algo mucho más sofisticado: Context Engineering.

Y no, no es solo otro término de moda. Es una evolución natural que refleja la complejidad real de trabajar con LLMs en aplicaciones productivas.

De prompt engineering a context engineering

El problema con el término “prompt engineering” es que mucha gente lo confunde con blind prompting - simplemente escribir una pregunta en ChatGPT y esperar un resultado. Eso no es ingeniería, es usar una herramienta.

Context Engineering abarca todo el proceso de arquitectura del contexto que un LLM necesita para funcionar efectivamente. No es solo escribir un prompt; es diseñar un sistema completo de información contextual.

Qué incluye Context Engineering

Según la definición que más me convence, context engineering abarca:

  • Diseño de cadenas de prompts para flujos complejos
  • Optimización de instrucciones y system prompts
  • Gestión de elementos dinámicos (inputs del usuario, fecha/hora, estado)
  • Búsqueda y preparación de conocimiento relevante (RAG)
  • Definición de herramientas y sus instrucciones
  • Estructuración de inputs y outputs (delimitadores, esquemas JSON)
  • Gestión de memoria a corto y largo plazo
  • Optimización del contexto para eliminar información irrelevante

En resumen: optimizar toda la información que proporcionas en la ventana de contexto del LLM.

Un ejemplo práctico: Agente de investigación

Me ha llamado la atención este ejemplo práctico de Elvis Saravia sobre un agente de investigación. Vamos a desglosarlo para entender los principios clave.

El agente planificador

El sistema incluye un “Search Planner” que descompone consultas complejas en subtareas de búsqueda. Aquí está el system prompt:

You are an expert research planner. Your task is to break down a complex research query (delimited by <user_query></user_query>) into specific search subtasks, each focusing on a different aspect or source type.

The current date and time is: {{ $now.toISO() }}

For each subtask, provide:
1. A unique string ID for the subtask (e.g., 'subtask_1', 'news_update')
2. A specific search query that focuses on one aspect of the main query
3. The source type to search (web, news, academic, specialized)
4. Time period relevance (today, last week, recent, past_year, all_time)
5. Domain focus if applicable (technology, science, health, etc.)
6. Priority level (1-highest to 5-lowest)

Create 2 subtasks that together will provide comprehensive coverage of the topic.

Disección del context engineering

Este prompt tiene varias capas de context engineering que vale la pena analizar:

1. Instrucciones claras y específicas

No solo dice “planifica búsquedas”, sino que define exactamente qué significa eso: descomponer en subtareas específicas con diferentes enfoques.

2. Contexto temporal dinámico

The current date and time is: {{ $now.toISO() }}

Esto es crucial. Sin la fecha actual, el LLM no puede interpretar correctamente términos como “última semana” o “reciente”.

3. Estructura de output específica

Define exactamente qué campos necesita cada subtarea y qué tipo de valores espera. No deja nada a la interpretación.

4. Uso de delimitadores

<user_query></user_query>

Los delimitadores evitan confusión entre diferentes tipos de información en el prompt.

5. Schema de datos estructurado

{
  "subtasks": [
    {
      "id": "openai_latest_news",
      "query": "latest OpenAI announcements and news",
      "source_type": "news",
      "time_period": "recent",
      "domain_focus": "technology",
      "priority": 1,
      "start_date": "2025-06-03T06:00:00.000Z",
      "end_date": "2025-06-11T05:59:59.999Z"
    }
  ]
}

Los componentes clave del context engineering

1. Instrucciones (Instructions)

La base de todo. Pero no solo “haz X”, sino “haz X de esta manera específica, considerando Y y Z”.

// ❌ Instrucción básica
"Genera un resumen del texto"

// ✅ Context engineering
"Genera un resumen ejecutivo de máximo 200 palabras que incluya: 
1) Los 3 puntos clave principales
2) Implicaciones para el negocio
3) Próximos pasos recomendados
El público objetivo son CTOs con 10+ años de experiencia."

2. Inputs y outputs estructurados

Los LLMs funcionan mejor cuando saben exactamente qué formato usar:

interface TaskResult {
  success: boolean;
  data?: any;
  error?: string;
  confidence: number; // 0-1
  sources: string[];
}

3. Gestión de herramientas

En sistemas agénticos, definir claramente qué herramientas usar y cuándo:

Available tools:
- search_web(query: string, date_range?: string)
- search_academic(query: string, fields?: string[])  
- get_company_data(company: string)

Use search_web for general information and recent news.
Use search_academic for research papers and studies.
Use get_company_data only when specifically asked about company metrics.

4. RAG y memoria

Context engineering incluye decidir qué información externa inyectar:

Relevant context from previous conversations:
- User is working on a React project
- Prefers TypeScript over JavaScript
- Uses Tailwind CSS for styling
- Working in a team of 5 developers

5. Estado e historial

Para aplicaciones complejas, gestionar el estado anterior:

Current session state:
- Search queries executed: 3
- Results found: 47 documents
- User feedback: "Need more recent sources"
- Last successful query: "climate change policies 2024"

Aplicación práctica en proyectos reales

Caso 1: Asistente de documentación

const systemPrompt = `
You are a technical documentation assistant for a TypeScript/Node.js project.

Current project context:
- Framework: ${framework}
- Database: ${database}
- Testing: ${testingFramework}
- Current file: ${currentFile}

When generating documentation:
1. Use JSDoc format for functions
2. Include practical examples
3. Note any breaking changes since v${lastVersion}
4. Reference related functions in the same module

Output format: markdown with code blocks using the appropriate language syntax.
`;

Caso 2: Revisor de código

const codeReviewPrompt = `
You are a senior code reviewer with expertise in ${language}.

Review criteria:
- Security vulnerabilities (OWASP Top 10)
- Performance issues
- Code style adherence to ${styleGuide}
- Test coverage gaps
- Documentation completeness

For each issue found, provide:
{
  "severity": "low|medium|high|critical",
  "category": "security|performance|style|testing|documentation",
  "line": number,
  "description": string,
  "suggestion": string,
  "example": string?
}
`;

Herramientas y ecosistema

LangChain y context engineering

LangChain ya incluye muchos patrones de context engineering:

from langchain.prompts import ChatPromptTemplate
from langchain.schema import SystemMessage, HumanMessage

template = ChatPromptTemplate.from_messages([
    SystemMessage(content=system_context),
    HumanMessage(content="{user_input}"),
    # Contexto dinámico basado en el estado
    HumanMessage(content="{dynamic_context}")
])

Herramientas no-code

Plataformas como n8n, Zapier, o LangFlow están incorporando context engineering como parte de sus flujos visuales.

Frameworks especializados

  • Guidance (Microsoft) - Para prompts estructurados
  • Jsonformer - Para outputs JSON garantizados
  • Outlines - Generación con restricciones estructurales

Evaluación y métricas

Context engineering requiere medición sistemática:

Métricas de calidad

interface ContextMetrics {
  accuracy: number;        // % respuestas correctas
  consistency: number;     // Variación entre ejecuciones
  latency: number;         // Tiempo de respuesta
  tokenUsage: number;      // Eficiencia del contexto
  userSatisfaction: number; // Feedback del usuario
}

A/B testing de contexto

const experimentConfig = {
  control: {
    systemPrompt: basePrompt,
    examples: standardExamples
  },
  treatment: {
    systemPrompt: enhancedPrompt,
    examples: curatedExamples,
    additionalContext: relevantDocs
  }
};

Problemas comunes y soluciones

1. Context window overflow

// ❌ Problema: Demasiado contexto
const hugPrompt = systemPrompt + allDocuments + fullHistory;

// ✅ Solución: Context management
const relevantContext = selectRelevantContext(
  userQuery, 
  documents, 
  maxTokens: 4000
);

2. Información obsoleta

// ✅ Context aging
const contextMetadata = {
  timestamp: Date.now(),
  source: 'user_documentation',
  relevanceScore: 0.87,
  lastValidated: '2025-01-15'
};

3. Contexto irrelevante

// ✅ Context filtering
const filteredContext = contextItems
  .filter(item => item.relevanceScore > 0.7)
  .slice(0, 10); // Top 10 más relevantes

El futuro del context engineering

Automatización del contexto

Ya empezamos a ver herramientas que optimizan automáticamente el contexto:

  • DSPy - Optimización automática de prompts
  • Prompt flow (Microsoft) - Gestión visual de contexto
  • Context compression - Técnicas para reducir tokens manteniendo información

Context engineering como servicio

Imagino que pronto veremos:

  • APIs de optimización de contexto
  • Herramientas de A/B testing específicas para prompts
  • Dashboards de métricas de context engineering
  • Context stores - Repositorios de contextos optimizados

Consideraciones de seguridad

Context engineering también implica riesgos:

Prompt injection

// ❌ Vulnerable
const prompt = `Summarize: ${userInput}`;

// ✅ Protegido
const prompt = `
Summarize the following text (delimited by triple quotes):
"""
${sanitizeInput(userInput)}
"""
`;

Filtrado de información sensible

const sanitizedContext = filterSensitiveData(context, {
  removePersonalData: true,
  redactCredentials: true,
  filterProfanity: false
});

Herramientas recomendadas

Para desarrollo

  • LangChain - Framework completo con patrones de context engineering
  • Guidance - Control preciso sobre generación
  • LlamaIndex - Excelente para RAG y context management

Para prototipado

  • n8n - Flujos visuales con context engineering integrado
  • LangFlow - Desarrollo visual de aplicaciones LLM
  • Flowise - Drag & drop para chatbots

Para evaluación

  • Weights & Biases - Tracking de experimentos
  • LangSmith - Debugging y evaluación de LLM
  • Phoenix - Observabilidad para aplicaciones LLM

Mi experiencia práctica

En mis últimos proyectos con LLMs, context engineering ha sido la diferencia entre prototipos que funcionan “a veces” y sistemas que funcionan consistentemente.

Lecciones aprendidas:

  1. Empieza simple, itera sistemáticamente - No intentes optimizar todo de una vez
  2. Mide todo - Sin métricas, es imposible saber si mejoras o empeoras
  3. El contexto es código - Trata tus prompts con el mismo rigor que tu código
  4. La estructura importa más que la longitud - Un prompt bien estructurado de 200 tokens funciona mejor que uno desestructurado de 1000

Patrón típico que uso:

interface ContextEngine {
  systemPrompt: string;
  userInput: string;
  dynamicContext: Record<string, any>;
  tools: ToolDefinition[];
  outputSchema: JSONSchema;
  metadata: ContextMetadata;
}

const buildContext = (config: ContextEngine) => {
  return {
    system: config.systemPrompt,
    messages: [
      ...buildUserMessages(config.userInput),
      ...injectDynamicContext(config.dynamicContext),
    ],
    tools: config.tools,
    responseFormat: config.outputSchema
  };
};

Recursos para profundizar

Conclusión

Context Engineering no es solo una evolución terminológica del prompt engineering - es una disciplina más madura que reconoce la complejidad real de construir aplicaciones LLM productivas.

Como desarrolladores, necesitamos tratar el contexto como un sistema arquitectural, no como una nota al margen. Esto significa:

  • Diseño sistemático del contexto
  • Evaluación continua de su efectividad
  • Iteración basada en datos para optimizar resultados
  • Gestión de versiones del contexto como cualquier otro código

El futuro pertenece a quienes dominen estas habilidades. No porque sea hype, sino porque es la diferencia entre aplicaciones LLM que funcionan y aplicaciones que realmente resuelven problemas.

¿Ya estás aplicando context engineering en tus proyectos? ¿Qué patrones has encontrado más efectivos? Me encantaría conocer tu experiencia.


¿Te ha resultado útil este artículo? Compártelo con otros desarrolladores que estén trabajando con LLMs. Y si tienes alguna pregunta o experiencia que compartir sobre context engineering, no dudes en contactarme.

Comentarios

Artículos relacionados

5 min

1004 palabras

Últimamente no para de hablarse de agentes de IA por todas partes. Cada empresa tiene su roadmap lleno de “agentes que van a revolucionar esto y aquello”, pero cuando rascas un poco, te das cuenta de que pocos han conseguido realmente construir algo útil y que funcione en producción.

Hace poco leí un artículo muy interesante de LangChain sobre cómo construir agentes de forma práctica, y me ha parecido un enfoque muy sensato que quería compartir contigo. Lo he adaptado con mis propias reflexiones después de haberme dado más de un cabezazo intentando implementar sistemas “inteligentes” que al final no lo eran tanto.

4 min

650 palabras

El hype vs la realidad: reflexiones de un desarrollador con 30 años de guerra

Esta mañana me he topado con una charla que me ha hecho reflexionar bastante sobre todo este revuelo que hay montado con la IA y el desarrollo de software. El ponente, con una dosis saludable de escepticismo, hace un “reality check” sobre las afirmaciones grandilocuentes que estamos escuchando por todas partes.

La charla completa que ha inspirado estas reflexiones. Vale la pena verla entera.

5 min

857 palabras

Hace unos días me topé con un stream muy interesante donde alguien mostraba su setup para programación agéntica usando Claude Code. Después de años desarrollando “a la vieja usanza”, tengo que admitir que esto me ha resultado revelador.

¿Qué es la programación agéntica?

Para los que no estéis familiarizados con el término, la programación agéntica es básicamente dejar que un agente de IA (en este caso Claude) escriba código por ti. Pero no hablo de pedirle que te genere un snippet, sino de darle acceso completo a tu sistema para que pueda leer, escribir, ejecutar y debuggear código de forma autónoma.

6 min

1147 palabras

Dos protocolos, dos filosofías

En los últimos meses han aparecido dos protocolos que van a cambiar cómo construimos sistemas de IA: Agent2Agent Protocol (A2A) de Google y Model Context Protocol (MCP) de Anthropic. Pero aquí está el tema: no compiten entre sí.

Es más, tras analizar ambos durante semanas, me he dado cuenta de que entender la diferencia entre A2A y MCP es crucial para cualquiera que esté construyendo sistemas de IA más allá de simples chatbots.

09
Jul 2025
5 min

880 palabras

En mis años desarrollando software, he aprendido que las mejores herramientas son las que eliminan fricciones innecesarias. Y LM Studio acaba de dar un paso enorme en esa dirección: ya es completamente gratuito para uso empresarial.

Esto puede sonar como “otra noticia más” de IA, pero para quienes llevamos tiempo experimentando con modelos locales, es un cambio de paradigma importante.

El problema que había antes

Desde su lanzamiento en mayo de 2023, LM Studio siempre fue gratuito para uso personal. Pero si querías usarlo en tu empresa, tenías que contactar con ellos para obtener una licencia comercial. Esto creaba exactamente el tipo de fricción que mata la experimentación en equipos.

02
Jul 2025
8 min

1530 palabras

Otro protocolo más que promete cambiarlo todo

Cuando IBM Research anunció el Agent Communication Protocol (ACP) como parte del proyecto BeeAI, mi primera reacción fue la habitual: “Ah, otro protocolo universal más”. Con casi 30 años en esto, he visto demasiados “estándares definitivos” que acabaron en el olvido.

Pero hay algo diferente en ACP que me hizo prestar atención: no promete resolver todos los problemas del mundo. Simplemente se enfoca en uno muy específico: hacer que agentes de IA de diferentes frameworks puedan hablar entre sí. Y lo hace de una manera que realmente tiene sentido.