Mejorador Automático de Prompts con Estado
PUNTOS DE DECISIÓN
EVALUACIÓN DEL PROMPT:
├── Pregunta/comando simple (qué, cuándo, cómo)
│ └── Saltar optimización → Responder directamente
├── Tarea compleja (multipaso, razonamiento, técnica)
│ ├── Presupuesto de tokens < 1000
│ │ └── APE: 3-5 iteraciones
│ ├── Presupuesto de tokens 1000-5000
│ │ └── OPRO: 5-10 iteraciones
│ └── Presupuesto de tokens > 5000
│ └── Compilación DSPy: 10-20 iteraciones
└── Plantilla reusable/prompt de sistema
└── Optimización completa con recuperación histórica
SELECCIÓN DE TÉCNICA DE OPTIMIZACIÓN:
├── Se necesita reescritura de instrucciones
│ └── Usar APE (Automatic Prompt Engineer)
├── Ajuste de parámetros con restricciones
│ └── Usar OPRO (Optimization by PROmpting)
├── Pipeline complejo con múltiples módulos
│ └── Usar patrones de compilación DSPy
└── Dominio desconocido/exploratorio
└── Cascada híbrida APE→OPRO→DSPy
CONTROL DE ITERACIONES:
├── Mejora < 1% durante 3 rondas → DETENER
├── Puntuación de calidad > 0.95 → DETENER
├── Iteraciones máximas alcanzadas → DETENER
├── Satisfacción del usuario confirmada → DETENER
└── Continuar → Siguiente iteración
INTEGRACIÓN DE RETROALIMENTACIÓN:
├── Tarea exitosa (usuario confirma/métricas buenas)
│ └── Registrar retroalimentación positiva + incrustar para recuperación
├── Tarea fallida/calidad pobre
│ └── Registrar retroalimentación negativa + analizar modo de fallo
└── Resultado poco claro
└── Preguntar al usuario por retroalimentación explícita antes de registrar
MODOS DE FALLO
Espiral de sobreoptimización
- SÍNTOMA: El prompt crece a 500+ tokens con muchas restricciones anidadas
- DIAGNÓSTICO: Perseguir rendimientos decrecientes en lugar de detenerse en "suficientemente bueno"
- SOLUCIÓN: Aplicar la regla 80/20 - si la mejora cae por debajo del 5% por iteración, detenerse
Obsesión por la plantilla
- SÍNTOMA: Gastar iteraciones en formato/estructura vs. claridad de la tarea
- DIAGNÓSTICO: Confundir presentación con rendimiento
- SOLUCIÓN: Medir el éxito real de la tarea, no la conformidad con la plantilla
Sobreajuste histórico
- SÍNTOMA: El prompt optimizado funciona para ejemplos pasados pero falla en nuevas entradas
- DIAGNÓSTICO: Entrenar con un conjunto de datos demasiado limitado de la recuperación
- SOLUCIÓN: Incluir ejemplos diversos en la optimización, probar en casos reservados
Juicio erróneo de capacidad
- SÍNTOMA: Añadir andamios extensos para tareas que el modelo maneja de forma nativa
- DIAGNÓSTICO: Asumir limitaciones del modelo sin probarlas
- SOLUCIÓN: Probar la capacidad base antes de hacer ingeniería de prompts pesada
Ceguera de medición
- SÍNTOMA: Múltiples iteraciones sin métricas de éxito claras
- DIAGNÓSTICO: Optimizar sin saber qué significa "mejor"
- SOLUCIÓN: Definir criterios de éxito medibles en el primer paso
EJEMPLOS TRABAJADOS
Ejemplo 1: Solicitud de Optimización de Código
Original: "Mejora este código"
def process_data(data):
results = []
for item in data:
if item > 0:
results.append(item * 2)
return results
Navegación por Puntos de Decisión:
- Evaluación: Tarea compleja (requiere análisis de código) → Activar optimización
- Selección de Técnica: Revisión de código + mejora → APE con 5 iteraciones
- Contexto Recuperado: Prompts similares de optimización de código del historial
- Prompt Optimizado: "Analiza esta función de Python en cuanto a rendimiento, legibilidad y patrones pitónicos. Identifica mejoras específicas: complejidad algorítmica, uso de memoria, casos límite y estilo. Proporciona código refactorizado con explicaciones."
Lo que un Novato Pasa por Alto: "mejorar" vago no especifica criterios. Lo que un Experto Capta: Se necesitan dimensiones explícitas (rendimiento, estilo, casos límite).
Resultado: Análisis claro de oportunidad de comprensión de listas, manejo de casos límite, sugerencias de tipo.
Ejemplo 2: Plantilla de Tarea de Razonamiento
Original: "Ayúdame a pensar en esta decisión"
Navegación por Puntos de Decisión:
- Evaluación: Plantilla reutilizable + tarea de razonamiento → Optimización completa
- Recuperación Histórica: Se encontraron prompts de marcos de decisión (similitud 0.87)
- Selección de Técnica: Compilación DSPy (pipeline de razonamiento estructurado)
- Estrategia de Iteración: 10 rondas, midiendo la calidad de la decisión
Plantilla Optimizada:
Marco de Análisis de Decisiones:
1. SITUACIÓN: Establecer la decisión claramente con restricciones
2. INTERESADOS: Listar las partes afectadas y sus intereses
3. OPCIONES: Generar 3-5 alternativas distintas
4. CRITERIOS: Definir métricas de éxito y ponderación
5. COMPENSACIONES: Analizar cada opción según los criterios
6. RECOMENDACIÓN: Seleccionar la mejor opción con nivel de confianza
Controles de Calidad Aplicados: Integridad de la plantilla, puntuación de reutilización, satisfacción del usuario
Ejemplo 3: Solicitud Técnica Ambigua
Original: "Configurar monitoreo"
Navegación por Puntos de Decisión:
- Evaluación: Subespecificado + técnico → Activar optimización
- Estrategia de Aclaración: OPRO con obtención de restricciones
- Contexto de Dominio: Patrones de configuración de monitoreo recuperados
Prompt Optimizado: "Diseña la configuración de monitoreo especificando: (1) Alcance de la infraestructura (servidores, contenedores, aplicaciones), (2) Métricas clave (rendimiento, disponibilidad, negocio), (3) Umbrales de alerta y escalamiento, (4) Restricciones del stack tecnológico, (5) Límites de presupuesto/complejidad. Proporciona una hoja de ruta de implementación con prioridades."
Compensaciones Antes/Después:
- Antes: Interminable ida y vuelta de aclaraciones
- Después: Recopilación estructurada de requisitos en un solo intercambio
- Coste: Prompt inicial más largo
- Beneficio: Especificación completa en una ronda
CONTROLES DE CALIDAD
Lista de verificación previa a la ejecución antes de llamar a optimize_prompt:
- Puntuación de complejidad de la tarea > 3 (se requiere multipaso/razonamiento)
- Criterios de éxito claros definidos o deducibles
- Presupuesto de tokens estimado y técnica seleccionada
- Contexto de dominio identificado para la recuperación
- Límite de iteraciones establecido según la complejidad
Validación posterior a la optimización:
- El prompt optimizado es específico y accionable
- Las métricas de éxito son medibles
- Coherencia de restricciones verificada (sin contradicciones)
- Eficiencia de tokens: la mejora justifica la longitud añadida
- Contexto histórico integrado apropiadamente
- Confirmación del usuario obtenida para cambios importantes
Rúbrica de puntuación de calidad (0-100):
- Claridad: ¿Puede un usuario novato entender los requisitos? (25 pts)
- Especificidad: ¿Instrucciones concretas vs. abstractas? (25 pts)
- Integridad: ¿Cubre casos límite y restricciones? (25 pts)
- Eficiencia: ¿Logra los objetivos sin hinchazón? (25 pts)
LÍMITES DE NO-APLICACIÓN
NO usar esta habilidad para:
- Preguntas fácticas simples → Responder directamente con conocimiento
- Operaciones de archivo sin razonamiento → Usar habilidad de gestión de archivos
- Ejecución directa de comandos → Ejecutar inmediatamente
- Respuestas conversacionales → Responder de forma natural
- Prompts ya optimizados → Revisar el historial primero para evitar reoptimización
- El usuario dice explícitamente "no optimices" → Respetar la preferencia del usuario
Delegar en su lugar:
- Para problemas matemáticos → Usar habilidades centradas en cálculo
- Para escritura creativa → Usar habilidad de escritura creativa (a menos que se necesite creación de plantillas)
- Para análisis de datos → Usar habilidad de análisis de datos (a menos que se requiera razonamiento complejo)
- Para depuración → Usar habilidad de depuración (a menos que se necesite mejora sistemática)
Áreas grises que requieren juicio:
- Tareas de complejidad media (puntuación 2-4) → Probar rendimiento base primero
- Solicitudes de experiencia en dominio → Optimizar solo si hay potencial de plantilla reutilizable
- Preguntas de seguimiento → Optimizar si se expande significativamente el alcance