Del prompt engineering a la arquitectura de agentes: el stack completo de IA que todo dev necesita dominar
La inteligencia artificial ha dejado de ser un dominio exclusivo de especialistas en machine learning para convertirse en una competencia fundamental que todo desarrollador debe dominar en 2025. Ya no basta con integrar una API de OpenAI; el mercado exige arquitectos de sistemas que diseñen pipelines de IA, orquesten agentes autónomos, implementen RAG (Retrieval-Augmented Generation) en producción y optimicen costos mientras mantienen latencia bajo control.
El panorama es radicalmente diferente al de hace 18 meses: modelos de código abierto como Llama 3.1, Mistral y Qwen compiten en calidad con soluciones propietarias, frameworks como LangChain y LlamaIndex evolucionaron de juguetes a herramientas productivas, y edge inference permite ejecutar modelos potentes directamente en dispositivos sin depender de cloud. Empresas que dominan estas capacidades construyen features en días que antes tomaban meses, reducen costos operativos 60-80% y entregan experiencias que aprenden y mejoran con cada interacción.
Esta guía cubre el stack completo de IA para desarrolladores en 2025: desde fundamentos de prompt engineering y fine-tuning hasta arquitecturas de agentes, RAG en producción, evaluación sistemática, gobernanza de modelos y consideraciones éticas. No es un tutorial teórico; es un blueprint práctico para equipos que necesitan entregar valor de negocio con IA ahora.
El Stack de IA en 2025: Arquitectura en Capas
Capa 1: Modelos Foundation (LLMs y más allá)
Los modelos de lenguaje grande son la base, pero en 2025 trabajan en ecosistemas multi-modal:
Modelos de lenguaje (LLMs):
- Propietarios: GPT-4o, Claude 3.5 Sonnet, Gemini 1.5 Pro ofrecen máxima calidad pero cuestan $3-15 por millón de tokens y encierran datos en vendors.
- Open source: Llama 3.1 (8B-405B), Mistral Large, Qwen 2.5 permiten self-hosting, fine-tuning completo y control total sobre privacidad a fracción del costo.
- Especializados: Code Llama, StarCoder 2, DeepSeek Coder optimizados para generación y análisis de código; Meditron, BioGPT para dominios técnicos.
Modelos multimodales:
- Visión + Lenguaje: GPT-4V, Claude 3 Opus, Gemini 1.5 Pro entienden imágenes, diagramas, screenshots y documentos complejos.
- Audio: Whisper (transcripción), Bark/Tortoise (síntesis), modelos fine-tuned para idiomas específicos.
- Video: modelos emergentes que procesan streams completos para análisis contextual en tiempo real.
Embeddings y representación semántica:
- text-embedding-3 (OpenAI), embed-english-v3.0 (Cohere), e5-mistral-7b (open source) para búsqueda semántica, clustering y clasificación.
- Dimensionalidad ajustable (256-3072) para equilibrar precisión vs. costo de almacenamiento/búsqueda.
Capa 2: Frameworks y Orquestación
LangChain: biblioteca Python/JS para construir aplicaciones con LLMs; chains (secuencias de prompts), agents (decisión dinámica de herramientas), memory (contexto persistente) y callbacks (logging/monitoring).
LlamaIndex: especializado en RAG; indexación inteligente de documentos, query engines que combinan búsqueda vectorial con síntesis generativa, y optimización de retrieval.
Haystack: pipeline-based framework para NLP y búsqueda; integración nativa con Elasticsearch, Weaviate, Pinecone y modelos open source.
AutoGPT/BabyAGI: frameworks de agentes autónomos que descomponen objetivos complejos en subtareas, ejecutan acciones y aprenden de resultados.
Semantic Kernel (Microsoft): SDK empresarial para integrar LLMs en aplicaciones .NET/Python; énfasis en plugins, planificación y memoria.
Capa 3: Vectorstores y Bases de Datos
Vector databases especializadas:
- Pinecone: managed service con latencia <10ms, filtros metadata y escalado automático.
- Weaviate: open source con vectorización integrada, híbrido keyword+vector y módulos para clasificación.
- Qdrant: Rust-native, alta performance, filtros avanzados y payload storage.
- Milvus/Zilliz: escalado masivo para billones de vectores, integración Kubernetes.
Extensiones vectoriales en bases tradicionales:
- pgvector (PostgreSQL): índices HNSW/IVFFlat, queries híbridos SQL+vector en misma DB.
- MongoDB Atlas Vector Search: integración nativa en documentos existentes.
- Redis Stack: búsqueda vectorial con latencia sub-milisegundo en memoria.
Capa 4: Inference y Serving
APIs propietarias: OpenAI, Anthropic, Google AI Studio para prototipado rápido sin gestionar infraestructura.
Self-hosting open source:
- vLLM: servidor de inferencia optimizado con PagedAttention para throughput 10-20x vs. naive; soporta quantization, batching dinámico.
- Ollama: runtime local para Llama, Mistral, CodeLlama con gestión automática de modelos y API compatible OpenAI.
- TensorRT-LLM (NVIDIA): máxima performance en GPUs NVIDIA con optimizaciones de kernel custom.
- llama.cpp: inferencia pura en CPU con quantization agresiva (4-bit, 8-bit) para laptops y edge devices.
Edge inference: TensorFlow Lite, ONNX Runtime, CoreML para ejecutar modelos en móviles, IoT y browsers sin conectividad.
Capa 5: Observabilidad y Evaluación
LangSmith (LangChain): tracing completo de chains/agents, debugging visual, datasets de evaluación y análisis de costos.
Weights & Biases: experimentos ML, tracking de métricas, comparación de modelos y artifacts versionados.
Arize AI / Whylabs: monitoreo de modelos en producción, detección de drift, análisis de performance por segmento.
RAGAS: framework para evaluar pipelines RAG (faithfulness, answer relevance, context precision/recall).
Prompt Engineering: La Habilidad Fundamental
Anatomía de un prompt efectivo en 2025:
text[Rol y contexto]
Eres un experto arquitecto de software con 15 años de experiencia en sistemas distribuidos.
[Tarea específica]
Revisa el siguiente diagrama de arquitectura y:
1. Identifica puntos únicos de fallo
2. Sugiere patrones de resiliencia aplicables
3. Estima complejidad de implementación (baja/media/alta)
[Formato de salida]
Responde en JSON con estructura:
{
"vulnerabilities": [...],
"patterns": [{name, benefit, complexity}],
"priority": "high|medium|low"
}
[Restricciones]
- Asume presupuesto limitado; prioriza soluciones de bajo costo
- Stack actual: AWS, Node.js, PostgreSQL
- No sugieras reescrituras completas
[Ejemplos] (opcional, few-shot learning)
Ejemplo 1: [diagrama simple] → [análisis esperado]
[Datos]
[diagrama de arquitectura aquí]
Técnicas avanzadas:
- Chain-of-Thought (CoT): añade “Piensa paso a paso” o “Explica tu razonamiento antes de responder” para mejorar lógica compleja.
- Self-consistency: genera múltiples respuestas con temperatura alta, selecciona la más frecuente o usa un LLM como juez.
- ReAct (Reasoning + Acting): combina razonamiento explícito con ejecución de herramientas; el modelo decide qué acción tomar, observa resultado, razona sobre él y continúa.
- Tree-of-Thoughts: explora múltiples caminos de razonamiento en paralelo, evalúa cada rama y selecciona la mejor.
Optimización de tokens y costos:
- Usa modelos pequeños (GPT-3.5, Claude Haiku, Llama 8B) para tareas simples; reserva modelos grandes solo para razonamiento complejo.
- Implementa caché de prompts: OpenAI y Anthropic reducen costo 50-90% reutilizando prefijos idénticos.
- Comprime contexto con técnicas como LongLLMLingua que reducen tokens 80% preservando información crítica.
RAG (Retrieval-Augmented Generation): Conocimiento Actualizado sin Reentrenar
Por qué RAG es crítico: LLMs tienen conocimiento congelado en fecha de entrenamiento y no pueden acceder a datos propietarios, documentación interna o información en tiempo real. RAG soluciona esto recuperando contexto relevante de fuentes externas antes de generar respuestas.
Arquitectura básica de RAG:
- Indexación:
- Ingesta de documentos (PDFs, HTML, APIs, bases de datos).
- Chunking inteligente (512-1024 tokens por chunk, con overlap 10-20% para preservar contexto entre fronteras).
- Generación de embeddings para cada chunk.
- Almacenamiento en vectorstore con metadata (fuente, fecha, autor, categoría).
- Retrieval:
- Query del usuario → embedding.
- Búsqueda semántica en vectorstore (cosine similarity, dot product).
- Filtros metadata (fecha, categoría, permisos) para refinar resultados.
- Ranking y selección de top-k chunks (típicamente 3-10).
- Augmentation & Generation:
- Construcción de prompt con contexto recuperado.
- Llamada a LLM con instrucciones de citar fuentes y no alucinar.
- Generación de respuesta fundamentada en contexto.
Técnicas avanzadas de RAG:
- Hybrid search: combina búsqueda vectorial (semántica) con keyword search (BM25) para capturar términos exactos y conceptos similares.
- HyDE (Hypothetical Document Embeddings): genera respuesta hipotética al query, embediza esa respuesta y busca con ella; mejora recall en queries complejos.
- Reranking: recupera top-50 chunks con búsqueda rápida, luego reordena con modelo cross-encoder más preciso.
- Query expansion: descompone pregunta compleja en sub-preguntas, busca para cada una, sintetiza resultados.
- Agentic RAG: agente decide dinámicamente qué fuentes consultar, cuántos chunks recuperar y si necesita información adicional antes de responder.
Evaluación de sistemas RAG (framework RAGAS):
- Context precision: ¿los chunks recuperados son relevantes para la pregunta?
- Context recall: ¿se recuperó toda la información necesaria para responder correctamente?
- Faithfulness: ¿la respuesta está fundamentada en el contexto o incluye alucinaciones?
- Answer relevance: ¿la respuesta responde directamente la pregunta?
Fine-Tuning y Adaptación de Modelos
Cuándo fine-tunear:
- Tareas específicas donde prompt engineering no alcanza calidad deseada.
- Necesitas latencia mínima con modelos más pequeños.
- Requieres control total sobre comportamiento y tono.
- Datos sensibles que no pueden enviarse a APIs externas.
Técnicas de fine-tuning en 2025:
Full fine-tuning: actualiza todos los pesos del modelo; costoso en compute pero máxima adaptación. Viable solo para modelos <7B o con presupuesto GPU generoso.
LoRA (Low-Rank Adaptation): congela pesos base, entrena matrices de bajo rango que se suman a capas existentes; reduce parámetros entrenables 99% y permite fine-tuning en GPU consumer (RTX 4090, A100).
QLoRA: combina LoRA con quantization 4-bit; permite fine-tuning de modelos 70B en GPU única con 48GB VRAM.
Adapter layers: añade capas pequeñas entre bloques transformer; entrena solo adapters, mantiene base congelada; múltiples adapters para diferentes tareas en mismo modelo base.
RLHF (Reinforcement Learning from Human Feedback): alinea modelo con preferencias humanas usando reward model y PPO; técnica usada en ChatGPT, Claude; compleja pero poderosa para alineación fina.
Datos para fine-tuning:
- Calidad > cantidad: 1000 ejemplos de alta calidad superan 100k ruidosos.
- Balance de distribución: representa todas las variantes de tarea que esperas en producción.
- Format consistency: mantén estructura input/output uniforme.
- Negative examples: incluye casos donde el modelo NO debe responder o debe escalar a humano.
Plataformas y herramientas:
- Hugging Face Transformers + PEFT: stack open source completo para LoRA/QLoRA.
- Axolotl: framework simplificado para fine-tuning con configuración YAML.
- Together AI, Modal, RunPod: inference y fine-tuning managed con GPUs bajo demanda.
- OpenAI/Anthropic fine-tuning APIs: fine-tuning de GPT-3.5/4 y Claude sin gestionar infraestructura.
Arquitecturas de Agentes: IA que Actúa
Qué es un agente de IA: sistema que observa entorno, razona sobre acciones posibles, ejecuta herramientas y aprende de resultados para alcanzar objetivos sin intervención humana paso a paso.
Componentes de un agente:
- Reasoning engine (LLM): cerebro que interpreta contexto, planifica acciones y decide qué hacer.
- Tools/Functions: APIs, bases de datos, calculadoras, navegadores, shells que el agente puede invocar.
- Memory: almacenamiento de conversaciones, resultados intermedios y aprendizajes.
- Planning: descompone objetivos complejos en subtareas ejecutables.
- Reflection: evalúa resultados, detecta errores y ajusta estrategia.
Patrones de arquitectura de agentes:
ReAct (Reason + Act):
textThought: Necesito buscar información sobre PyTorch 2.0
Action: search["PyTorch 2.0 features"]
Observation: [resultados de búsqueda]
Thought: Los resultados mencionan torch.compile; necesito detalles
Action: read_page["https://pytorch.org/docs/2.0/"]
Observation: [contenido de la página]
Thought: Ahora puedo responder la pregunta
Answer: [respuesta final]
Plan-and-Execute:
- Descompone objetivo en plan paso a paso.
- Ejecuta cada paso secuencialmente.
- Valida resultado de cada paso antes de continuar.
- Re-planifica si un paso falla o contexto cambia.
Multi-Agent Systems:
- Especialización: cada agente domina un dominio (búsqueda, código, análisis).
- Coordinación: agente orquestador delega subtareas a especialistas.
- Colaboración: agentes debaten entre sí para validar respuestas (multi-agent debate).
Implementación práctica con LangChain:
pythonfrom langchain.agents import initialize_agent, Tool
from langchain.llms import OpenAI
from langchain.utilities import SerpAPIWrapper
# Definir herramientas
search = SerpAPIWrapper()
tools = [
Tool(
name="Search",
func=search.run,
description="Busca información actualizada en internet"
),
Tool(
name="Calculator",
func=lambda x: eval(x),
description="Ejecuta cálculos matemáticos"
)
]
# Inicializar agente
llm = OpenAI(temperature=0)
agent = initialize_agent(
tools,
llm,
agent="zero-shot-react-description",
verbose=True
)
# Ejecutar
result = agent.run("¿Cuál es el precio actual de Bitcoin multiplicado por 1.5?")
Desafíos de agentes en producción:
- Control de costos: agentes pueden entrar en loops infinitos; establece límites de iteraciones y presupuesto de tokens.
- Seguridad: valida todas las herramientas que el agente puede invocar; nunca des acceso a shell sin sandbox.
- Observabilidad: tracear cada decisión, acción y resultado para debugging y auditoría.
- Reliability: implementa fallbacks cuando herramientas fallan, timeouts y circuit breakers.
Evaluación Sistemática: Más Allá de “Se Ve Bien”
Por qué evaluación rigurosa importa: prompts que funcionan en ejemplos de prueba colapsan en producción; modelos mejoran en una métrica y empeoran en otra; cambios pequeños tienen efectos impredecibles.
Framework de evaluación multi-capa:
Nivel 1: Evaluaciones automatizadas
- Exactitud factual: compara respuesta con ground truth usando métricas como BLEU, ROUGE, exact match.
- Similaridad semántica: embeddings de respuesta esperada vs. generada; cosine similarity >0.85 indica alta similitud.
- LLM-as-judge: usa modelo potente (GPT-4, Claude Opus) para evaluar respuestas de modelo más pequeño según criterios (relevancia, tono, estructura).
- Benchmarks estándar: HumanEval (código), MMLU (conocimiento general), TruthfulQA (factualidad).
Nivel 2: Evaluaciones humanas
- Rating scales: evaluadores califican respuestas 1-5 en dimensiones (utilidad, precisión, tono).
- Preferencias comparativas: A/B testing donde humanos eligen mejor respuesta entre dos variantes.
- Adversarial testing: red team intenta “romper” el sistema con prompts adversariales, jailbreaks, edge cases.
Nivel 3: Métricas de negocio
- Task success rate: ¿el usuario completó su objetivo?
- Time to resolution: ¿cuánto demoró resolver la consulta?
- Escalations: ¿cuántas veces se necesitó intervención humana?
- User satisfaction: CSAT, NPS post-interacción.
Herramientas de evaluación:
- LangSmith: datasets versionados, evaluaciones automatizadas, comparación A/B.
- Humanloop: evaluaciones humanas integradas, fine-tuning guiado por feedback.
- Braintrust: plataformas de evaluación continua con CI/CD integration.
Dataset de evaluación de calidad:
- Representative: cubre distribución real de queries en producción.
- Diverse: incluye casos fáciles, complejos, ambiguos y adversariales.
- Evolving: actualiza regularmente con casos que fallan en producción.
- Annotated: con respuestas esperadas y explicaciones de por qué son correctas.
Consideraciones de Producción: Latencia, Costo y Escala
Optimización de latencia:
- Caché agresivo: almacena respuestas a queries frecuentes; invalida por TTL o cambios en datos fuente.
- Streaming: envía tokens a medida que se generan; reduce time-to-first-token y mejora UX percibida.
- Batch processing: agrupa queries cuando latencia individual no es crítica.
- Model cascade: intenta con modelo rápido/barato; escala a modelo potente solo si confianza es baja.
- Especulative decoding: genera múltiples tokens en paralelo especulativamente, verifica con modelo grande.
Control de costos:
- Router inteligente: direcciona queries simples a modelos pequeños (GPT-3.5, Claude Haiku), complejas a grandes.
- Prompt compression: reduce tokens de contexto sin perder información crítica.
- Output length limits: establece max_tokens apropiado por caso de uso.
- Self-hosting: modelos open source en infraestructura propia para volúmenes altos (breakeven típico: >10M tokens/mes).
- Reserved capacity: compromiso anual con OpenAI/Anthropic para descuentos 30-50%.
Escalado horizontal:
- Load balancing: distribuye requests entre múltiples réplicas de modelo.
- Auto-scaling: aumenta réplicas según latencia P95 y utilización GPU.
- Multi-region deployment: reduce latencia sirviendo desde región más cercana al usuario.
- Queue management: prioriza requests según usuario (freemium vs. enterprise), urgencia o costo.
Seguridad, Privacidad y Gobernanza
Vectores de ataque en sistemas de IA:
- Prompt injection: usuario malicioso manipula prompt para saltarse restricciones o exfiltrar datos.
- Data poisoning: contamina datos de entrenamiento/retrieval para sesgar respuestas.
- Model extraction: consultas estratégicas para replicar comportamiento del modelo.
- PII leakage: modelo expone información sensible presente en datos de entrenamiento o contexto.
Defensas y mitigaciones:
- Input sanitization: valida y filtra inputs antes de enviar a modelo; detecta patrones de injection.
- Output filtering: escanea respuestas antes de mostrar al usuario; bloquea PII, secretos, contenido peligroso.
- Sandboxing: ejecuta código generado por IA en entornos aislados sin acceso a recursos sensibles.
- Rate limiting: limita queries por usuario/IP para prevenir abuse y extraction.
- Audit logging: registra todos los prompts, respuestas y acciones de agentes para investigaciones.
Privacidad y cumplimiento:
- Data residency: hospeda modelos y datos en regiones que cumplen regulaciones (GDPR, HIPAA, SOC2).
- PII redaction: detecta y enmascara información personal antes de procesarla con LLMs.
- User consent: políticas claras sobre qué datos se usan para entrenamiento/mejora de modelos.
- Right to deletion: mecanismos para eliminar datos de usuario de índices y logs.
Gobernanza de modelos:
- Model registry: catálogo centralizado de modelos con versiones, métricas, aprobaciones.
- CI/CD para IA: tests automatizados, evaluaciones de calidad, deployment canary/blue-green.
- Monitoring continuo: detecta drift, degradación de performance, sesgos emergentes.
- Incident response: runbooks para manejar alucinaciones críticas, outputs dañinos o brechas de seguridad.
Ética y Responsabilidad en IA
Sesgos y fairness:
- Evalúa performance del modelo por segmentos demográficos; asegura equidad.
- Audita datos de entrenamiento para detectar sesgos históricos.
- Implementa debiasing techniques y re-weighting de ejemplos subrepresentados.
Transparencia y explicabilidad:
- Documenta capacidades y limitaciones del sistema; no oversell.
- Proporciona explicaciones de por qué el modelo generó cierta respuesta.
- Permite humanos overrule decisiones críticas.
Impacto social y ambiental:
- Mide y minimiza huella de carbono del entrenamiento e inferencia.
- Considera efectos en empleo; diseña IA para aumentar, no reemplazar, capacidades humanas.
- Participa en iniciativas de IA responsable (Partnership on AI, AI Alliance).
Roadmap de Implementación: 0 a Producción en 90 Días
Días 1-15: Fundamentos y prototipo
- Setup de entorno: APIs (OpenAI/Anthropic), frameworks (LangChain/LlamaIndex), vectorstore (Pinecone/pgvector).
- Prompt engineering: diseña y prueba prompts para caso de uso principal.
- RAG básico: indexa documentación interna, implementa búsqueda + generación.
- Evaluación inicial: crea dataset de 50 ejemplos, mide calidad manualmente.
Días 16-45: Refinamiento y expansión
- Optimización de retrieval: hybrid search, reranking, query expansion.
- Agentes simples: implementa 2-3 herramientas críticas con ReAct pattern.
- Evaluación automatizada: LLM-as-judge, métricas de similaridad, benchmarks.
- Fine-tuning (opcional): si prompt engineering no alcanza, fine-tunea modelo pequeño para tarea específica.
Días 46-75: Producción y observabilidad
- Deployment: API REST/GraphQL con rate limiting, caché, autenticación.
- Monitoreo: LangSmith/Arize para tracing, costos, latencia, calidad.
- Seguridad: input/output filtering, PII redaction, audit logging.
- Escalado: load balancing, auto-scaling, multi-region si necesario.
Días 76-90: Optimización y gobernanza
- Control de costos: router de modelos, prompt compression, caché agresivo.
- Feedback loops: integra ratings de usuarios, re-entrena/ajusta basado en datos reales.
- Documentación: runbooks, políticas de uso, limitaciones conocidas.
- Training interno: capacita equipo en prompt engineering, debugging, evaluación.
Herramientas y Recursos Esenciales
Frameworks y bibliotecas:
- LangChain, LlamaIndex, Haystack, Semantic Kernel
- Hugging Face Transformers, PEFT, TRL
- vLLM, Ollama, llama.cpp, TensorRT-LLM
Plataformas de modelos:
- Hugging Face Hub, Replicate, Together AI, Modal
- OpenAI, Anthropic, Google AI Studio, AWS Bedrock
Evaluación y observabilidad:
- LangSmith, Weights & Biases, Arize AI, Humanloop
- RAGAS, EleutherAI LM Evaluation Harness
Comunidades y aprendizaje:
- Papers with Code, Hugging Face Forums, r/LocalLLaMA
- AI Engineer Summit, NeurIPS, ICML
- Blogs: Anthropic, OpenAI, LangChain, Hugging Face
Errores Comunes que Cuestan Tiempo y Dinero
- Usar siempre el modelo más caro sin evaluar alternativas más baratas.
- Ignorar caché; cada query idéntica cuesta como si fuera nueva.
- Retrieval sin filtros metadata; retornas contexto irrelevante que confunde al modelo.
- Fine-tuning prematuro antes de agotar prompt engineering.
- Falta de evaluación rigurosa; confianza en “se ve bien” en lugar de métricas.
- Ignorar latencia P95/P99; optimizar solo para caso promedio.
- Arquitectura monolítica que acopla lógica de negocio con llamadas a LLM.
- No implementar rate limiting y quedar expuesto a abuse.
Conclusión: IA como Capacidad Core, No Feature Adicional
En 2025, la inteligencia artificial no es un “nice to have” que se añade al final del roadmap; es una capacidad fundamental que redefine cómo construimos productos, resolvemos problemas y entregamos valor. Desarrolladores que dominan este stack —desde prompt engineering hasta arquitecturas de agentes, pasando por RAG, fine-tuning y evaluación sistemática— tienen ventaja competitiva masiva en un mercado donde la velocidad de innovación se mide en días, no en trimestres.
El campo evoluciona rápido: modelos mejoran mensualmente, técnicas emergentes vuelven obsoletas prácticas de hace 6 meses, y frameworks se consolidan o desaparecen. Pero los fundamentos persisten: entender profundamente el problema, evaluar rigurosamente las soluciones, iterar basándose en datos reales y mantener humanos en el loop donde importa.
La IA no reemplaza el juicio ingenieril; lo amplifica. Las herramientas están disponibles, los modelos son accesibles y la comunidad comparte conocimiento abiertamente. Lo que falta es ejecución: equipos que construyan, midan, aprendan y mejoren sistemáticamente hasta entregar experiencias que antes eran imposibles.
El momento de dominar IA no es mañana; es ahora. Cada día que pasa sin incorporar estas capacidades es terreno que cedes a competidores que sí lo hacen. Empieza pequeño, mide todo, itera rápido y construye la experiencia práctica que ningún curso puede enseñar.
