Sesión 5 · Planeación
Sintetiza los resultados en un plan final
Integra la misión y los análisis parciales en una propuesta final y mide el consumo de las tres fases.
Qué aprenderás
- Preparar un prompt final que conserve la misión y findings.
- Distinguir síntesis de comprobación de restricciones.
- Calcular el número de llamadas del flujo y tratar límites y fallos.
Referencias de código
Índice de esta lección
Paso 1
Integra los resultados parciales
La última llamada necesita la misión completa y todos los findings. La misión conserva la referencia original aunque un análisis previo haya perdido una regla.
La síntesis final condensa la salida en un operativo. No valida por sí sola la corrección de todos los pasos, por eso las instrucciones piden resolver contradicciones y declarar inviabilidad cuando corresponda.
export function buildSynthesisPrompt(mission: string, findings: string[]) { return `MISIÓN:\n${mission}\n\nRESULTADOS PARCIALES:\n${findings.join("\n---\n")}`;}Qué deberías observar
La última llamada recibe tanto las reglas originales como los análisis previos.
Paso 2
Genera finalPlan
Renombra text como finalPlan para distinguir el operativo final del texto generado en una etapa. Usa el mismo tracer a lo largo de las tres fases.
Pasa tracer.onStepFinish como referencia al callback onStepEnd; no lo invoques al configurar la llamada.
const { text: finalPlan } = await generateText({ model, prompt: buildSynthesisPrompt(mission, findings), instructions: "Integra los resultados parciales en un operativo final. Indica orden, héroes y horas. Si no es viable, explica el déficit y no inventes refuerzos.", onStepEnd: tracer.onStepFinish,});console.log("Operativo final:", finalPlan);return tracer.summary();Qué deberías observar
Tienes una propuesta final y el resumen de la ejecución completa.
Paso 3
Cuenta llamadas sin confundir el límite
Para N etapas el flujo añade una llamada para construir el plan, N para analizarlas y una para sintetizar: N+2. En esta implementación cada generación no usa herramientas adicionales.
Con 2 a 15 pasos, el flujo hace de 4 a 17 llamadas; comparar también la versión directa agrega una. El máximo del arreglo no es un circuit breaker completo ni un timeout.
El consumo depende del modelo, longitud de prompts y salidas, proveedor y ejecución. Las cifras del video no demuestran un coste fijo ni una relación exponencial universal.
Planning con N pasos → 1 + N + 1 llamadasN = 2 → 4 llamadasN = 15 → 17 llamadasComparación one-shot adicional → sumar 1Qué deberías observar
Puedes explicar de dónde procede el coste sin confundir etapas con garantía de calidad.
Paso 4
Comprueba la conclusión sin Superman
La aplicación envía explícitamente el contexto en cada petición; no depende de una conversación que el SDK conserve entre llamadas.
Sin Superman esperamos que la síntesis identifique el déficit de 2 horas de luz. Si declara viable, revisa de dónde obtuvo un héroe, una capacidad o unas horas adicionales.
En esta sección no ejecutamos una llamada de proveedor desde la web. El laboratorio se prueba localmente con tu configuración cuando decidas realizar la inferencia.
Esperado sin Superman:Luz: Doctor Light + Solomon Grundy + The Shade → 6 hGreen Lantern → 4 hDéficit → 2 h → operativo inviableQué deberías observar
Puedes justificar el veredicto con una restricción concreta.
Ahora te toca
Prueba la idea por tu cuenta
Si buildPlan devuelve siete etapas, calcula cuántas llamadas hará Planning y cuántas al compararlo con one-shot. Explica por qué el plan final debe incluir la misión original.
Necesito una pista
Una llamada construye, siete analizan y otra integra.
Comparar con una solución
Planning hace 9 llamadas; la comparación agrega una y suma 10. La misión preserva la fuente de reglas para revisar errores de los findings; no garantiza por sí misma que la síntesis los corrija.
Antes de seguir
Comprueba lo que aprendiste
No es una nota. Es una pausa para comprobar que la idea quedó clara.
¿Terminaste la práctica?
Haz el ejercicio y comprueba tus respuestas antes de marcar la lección como completada.