Lección 19 de 20 · Lectura y práctica
Práctica: Desarrollo de aplicación completa con prompts avanzados
Concepto claveLa integración de sistemas de prompting en aplicaciones full stack es como diseñar la arquitectura de comunicación entre un equipo humano especializado. Imagina que tienes un equipo de expertos: algunos son.
Del concepto a la práctica
Taller de esta lección
La aplicación completa debe unir flujo, contrato y medición. Para un clasificador de soporte, el recorrido mínimo es formulario, backend, plantilla versionada, validación, caché y registro. Cada frontera necesita una prueba aislada antes de conectar todo.
Ejemplo resuelto
Mensaje "Quiero cambiar la talla" produce intención producto, urgencia media y una entrada de log con versión v1. La segunda solicitud idéntica puede salir de caché; cambiar la versión obliga a recalcular.
Pruébalo
Prueba primero el validador con objetos fijos.
Conecta el adaptador simulado.
Añade caché y registra
hitomiss.Conecta la interfaz y recorre éxito y error.
Error frecuente: integrar todo antes de fijar contratos; corrígelo usando pruebas de frontera y respuestas simuladas.
Comprueba tu resultado
La primera solicitud debe ser miss, la repetida hit y la misma versión debe conservar la salida. Una respuesta inválida debe detenerse antes de mostrarse, con un evento de error trazable.
La acción cambio pertenece a un contrato de recomendación posterior y no se añade silenciosamente al clasificador de dos campos. Conserva intención/urgencia de extremo a extremo. La primera petición miss llama al adaptador; un hit devuelve solo una respuesta previamente validada, de la misma versión y ámbito autorizado. Cambiar el modelo o el schema también invalida la clave. Para la evaluación de calidad evita que una caché de resultados esperados haga parecer mejores dos prompts diferentes.

Mapa de prácticaUn pedido útil explica qué resultado se busca y aporta el contexto necesario. Los límites y el formato reducen ambigüedades. Un criterio observable permite revisar el resultado y pedir un ajuste concreto.
Ver la infografía en tamaño completo ↗Fuentes para profundizar
Concepto clave
La integración de sistemas de prompting en aplicaciones full stack es como diseñar la arquitectura de comunicación entre un equipo humano especializado. Imagina que tienes un equipo de expertos: algunos son creativos (como GPT), otros son analíticos (como Claude), y tú eres el director que coordina sus respuestas para construir una aplicación completa. En lugar de hacer preguntas aisladas, creas un sistema de prompts que guía a las APIs a través de flujos predefinidos, manteniendo contexto, manejando errores y combinando sus fortalezas.
Este enfoque transforma las APIs de lenguaje en componentes confiables de tu aplicación, similares a microservicios que procesan lenguaje natural. La clave está en diseñar prompts que sean determinísticos en comportamiento aunque las respuestas varíen, estableciendo reglas claras de formato, validación y fallback. Piensa en ello como crear un protocolo de comunicación donde cada prompt sabe exactamente qué información necesita, cómo procesarla y qué hacer si algo sale mal.
Cómo funciona en la práctica
Vamos a construir un sistema de recomendación de contenido que usa GPT para generar ideas creativas y Claude para analizar viabilidad. El flujo es: 1) El usuario ingresa un tema, 2) GPT genera 5 ideas de contenido, 3) Claude evalúa cada idea según criterios de negocio, 4) Se presenta la mejor opción con justificación.
Paso a paso: Primero, diseñamos el prompt para GPT con estructura clara: "Actúa como un estratega de contenido. Dado el tema [X], genera exactamente 5 ideas de blog post. Formato: lista numerada con título y descripción de 1 línea." Luego, para Claude: "Evalúa estas ideas según: relevancia (1-5), potencial de tráfico (1-5), facilidad de producción (1-5). Devuelve JSON con scores y recomendación." Finalmente, nuestro backend orquesta este flujo, manejando timeouts y parseando respuestas.
Código en acción
Aquí está el núcleo del sistema en Node.js/Express. Primero, el enfoque básico (antes):
// Enfoque básico - prompts desorganizados
async function getContentIdeas(topic) {
const gptPrompt = `Genera ideas sobre ${topic}`;
const ideas = await callGPT(gptPrompt);
// Problema: respuesta impredecible
return ideas;
}Ahora, el sistema integrado (después):
// Sistema integrado con prompts estructurados
class ContentRecommender {
constructor() {
this.gptPromptTemplate = `Actúa como estratega de contenido profesional.
Tema: {{topic}}
Instrucciones:
1. Genera EXACTAMENTE 5 ideas de blog post.
2. Formato: lista numerada.
3. Cada idea: título + descripción (1 línea).
4. Enfócate en valor práctico.
Ideas:`;
this.claudePromptTemplate = `Analiza estas ideas de contenido:
{{ideas}}
Evaluación:
1. Relevancia (1-5): ¿Resuelve problema real?
2. Tráfico potencial (1-5): ¿Atrae audiencia?
3. Producción (1-5): ¿Factible en 2 semanas?
Devuelve JSON:
{
"scores": [
{"idea": 1, "relevancia": 5, "trafico": 4, "produccion": 3, "total": 12},
...
],
"recomendacion": "Idea #X"
}`;
}
async recommend(topic) {
// Paso 1: Generar ideas con GPT
const gptPrompt = this.gptPromptTemplate.replace('{{topic}}', topic);
const ideas = await this.callAPI('gpt-4', gptPrompt, {max_tokens: 300});
// Paso 2: Validar formato
if (!this.validateIdeasFormat(ideas)) {
throw new Error('Formato de ideas inválido');
}
// Paso 3: Evaluar con Claude
const claudePrompt = this.claudePromptTemplate.replace('{{ideas}}', ideas);
const evaluation = await this.callAPI('claude-3', claudePrompt, {max_tokens: 500});
// Paso 4: Parsear y retornar
return this.parseEvaluation(evaluation);
}
validateIdeasFormat(text) {
// Verifica que sea lista numerada
return /^\d+\.\s+.+$/m.test(text);
}
}Errores comunes
1. Prompts monolíticos: Crear un mega-prompt que hace todo. Error: difícil de debuggear y mantener. Solución: Dividir en prompts especializados, como en nuestro ejemplo con GPT para creatividad y Claude para análisis.
2. Falta de validación: Asumir que la API siempre responde en el formato esperado. Error: la aplicación se rompe con respuestas inesperadas. Solución: Incluir validaciones como validateIdeasFormat() y manejo de errores.
3. Contexto perdido: No pasar información suficiente entre prompts. Error: Claude evalúa sin entender el contexto original. Solución: Diseñar templates que incluyan variables claras como {{topic}} y {{ideas}}.
4. Timeouts no manejados: Asumir respuestas instantáneas. Error: la aplicación se congela. Solución: Implementar timeouts y retries con exponential backoff.
5. Prompt drift: Cambiar prompts sin actualizar código de parseo. Error: inconsistencia entre generación y procesamiento. Solución: Versionar prompts y tests de integración.
Checklist de dominio
- ✓ Diseñé al menos 2 prompts especializados que trabajan en conjunto
- ✓ Implementé validación de formato para respuestas de API
- ✓ Manejo timeouts y errores de red en llamadas a API
- ✓ Uso templates con variables para mantener contexto
- ✓ Documento el flujo completo de prompts para el equipo
- ✓ Creo tests que verifican el formato de respuestas
- ✓ Monitorizo costos y latencia de cada prompt en producción
Sistema de onboarding con GPT y Claude
Objetivo
Construye un sistema de onboarding que use GPT para generar contenido personalizado y Claude para validar consistencia.
Pasos
- Configuración inicial: Crea un proyecto Node.js con Express. Instala axios para llamadas HTTP.
- Diseño de prompts: Define 2 prompts:
- Prompt GPT: Genera email de bienvenida personalizado basado en perfil de usuario (nombre, industria, intereses).
- Prompt Claude: Valida que el email cumple con guías de tono (profesional pero cálido) y no tiene información contradictoria.
- Implementación: Crea endpoint POST /onboarding que:
- Acepta JSON con perfil de usuario
- Llama a GPT con prompt estructurado
- Valida que el email tenga saludo, cuerpo y despedida
- Envía email a Claude para validación
- Retorna email validado o error
- Manejo de errores: Implementa:
- Timeout de 10 segundos por API
- Reintento 1 vez si falla
- Validación de formato de respuesta
- Testing: Crea test con 3 perfiles diferentes y verifica que los emails sean únicos y válidos.
Entregables
- Código completo en GitHub
- Documentación de prompts usados
- Ejemplo de 3 respuestas generadas
Pistas
- Usa variables en templates como {{nombre}} y {{industria}} para personalización
- Implementa una función validateEmailStructure() que verifique saludo y despedida
- Para Claude, pide específicamente "Devuelve 'VALIDO' o 'INVALIDO: razón'" para parseo fácil
Evalua tu comprension
Completa el quiz interactivo de arriba para ganar XP.
Sigue con Prompt Engineering Avanzado para APIs de GPT y Claude: Desarrollo de Sistemas Inteligentes
Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.
Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.