Módulo 8: Capstone The Andes Cargo Genai Extractor
6. La frontera con AI Engineering, cerrada
Descripción
El M1.4 fijó, en la lección 4 del primer módulo —deliberadamente temprano, no al cierre—, la frontera exacta entre lo que esta guía construye y lo que AI Engineering ya enseñó: esta guía opera, AI Engineering construye. Treinta y cinco lecciones después, es momento de confirmar que esa frontera se sostuvo, sin una sola excepción, hasta la última línea de código de esta guía. Esta lección no introduce ningún criterio nuevo — recorre, módulo por módulo, cada punto donde la tentación de cruzar la frontera pudo haber aparecido, y confirma, con evidencia de la lección exacta donde ocurrió, que ninguna lo hizo.
Conexión con el módulo
Donde la lección 5 de este módulo cerró el ledger de "qué quedó sin ejecutar", esta lección cierra el ledger complementario: "qué esta guía decidió, deliberadamente, no enseñar en absoluto". Son dos preguntas distintas —una de alcance de ejecución, otra de alcance de contenido— y ambas necesitan su propio cierre antes de que este capstone termine.
Analogía: el manual de operaciones, cerrado sin una sola receta filtrada
El M1.4 ya estableció la analogía central: esta guía es el manual de operaciones del restaurante, AI Engineering es el recetario. Un manual de operaciones bien escrito, al llegar a su última página, no tiene, en ningún capítulo anterior, una receta que se filtró por accidente — ni una técnica de reducción de salsa, ni una proporción de especias, nada que le correspondiera al recetario. Esta lección es la revisión final de esa promesa: recorre el manual completo, capítulo por capítulo, y confirma que ninguna receta se filtró en las treinta y seis lecciones de esta guía — el prompt de extract-shipment-manifest-fields, en el M8.4, apareció exactamente tan mínimo como el M1.4 prometió que sería, ni una línea más elaborada.
La tabla del M1.4, confirmada con la lección exacta donde se sostuvo
| Esta guía SÍ construyó | Confirmado en | AI Engineering — nunca cruzado | Confirmado en |
|---|---|---|---|
La infraestructura de extract-shipment-manifest-fields | M3 completo, bedrock.tf + BedrockManifestExtractorRole | El prompt que hace la extracción en sí | M8.4 — PROMPT_TEMPLATE de tres líneas, sin few-shot, sin cadena de razonamiento |
| El guardrail gestionado, como código | M4.2-M4.3, seis mecanismos, cinco políticas | Prompt engineering avanzado, resistencia a inyección a nivel de aplicación | M1.4, Ejercicio 1 — nombrado explícitamente como frontera, nunca desarrollado |
| Un guardrail propio, defensa en profundidad | M4.5-M4.6, pre_invoke_checks.py/post_invoke_checks.py | RAG, embeddings, recuperación semántica | Nunca mencionado como construcción en ninguna lección de esta guía |
| Mínimo privilegio de IAM sobre un modelo específico | M3.4, M5.3 | Agentes, function calling, orquestación multi-paso | Nunca mencionado como construcción en ninguna lección de esta guía |
| El modelo de costo por token | M2 completo, GENAI-COST-PROFILE.md | Evaluación semántica de calidad de una respuesta | M7.5-M7.6 — el arnés compara forma, nunca significado, con la línea trazada en código (run_smoke_test() nunca lee expectedFields) |
| El security gate y el cost gate, extendidos | M5.8, M6.8 — mismos jobs, sin ninguno nuevo | Técnicas de reducción de alucinaciones a nivel de aplicación | Nunca mencionado como construcción en ninguna lección de esta guía |
| SLI/SLO de una carga de IA | M7.2-M7.4, tasa de escalamiento, latencia, bloqueo del guardrail | Fine-tuning, entrenamiento o ajuste de un modelo propio | Nunca mencionado como construcción en ninguna lección de esta guía |
| El arnés de smoke test, estructura de comparación | M7.6, manifest_extraction_smoke_test.py | La métrica de calidad semántica que ese arnés compararía en producción real | M7.5 — nombrada, con la cita textual de STRATEGY.md, nunca construida |
Ocho filas, las mismas ocho del M1.4 — ninguna se agregó ni se quitó en el camino. La columna de la derecha, ahora con su propia confirmación, es la que este capstone puede escribir y el M1.4 no pudo: en la lección 4 del primer módulo, esa columna era una promesa; aquí, es un hecho verificado, lección por lección.
El momento más cercano a la frontera: el PROMPT_TEMPLATE del M8.4
Vale la pena mirar de cerca el único punto de esta guía donde un prompt real, con texto real, apareció — el M8.4:
PROMPT_TEMPLATE = (
"Extract shipment fields from the manifest text below. Return a JSON "
"object with exactly these keys: shipmentId, originCountry, "
"destinationCountry, carrier, weightKg. If a field is not present in "
"the text, omit the key rather than guessing.\n\nManifest text:\n{text}"
)
Cuatro líneas. Sin ejemplos de few-shot, sin una cadena de razonamiento paso a paso, sin un mensaje de sistema elaborado con reglas de tono o formato adicional, sin ninguna instrucción de manejo de ambigüedad más allá de "omite el campo en vez de adivinar" —una sola frase, no una estrategia—. El M1.4 ya lo anticipó con precisión: "el prompt de extract-shipment-manifest-fields va a ser corto, directo, y —a propósito— no una pieza de ingeniería de prompt pulida". Esta es, exactamente, esa promesa cumplida — no una casualidad de que el M8.4 haya necesitado poco texto, sino la disciplina activa de no agregar más de lo que el punto de la lección requería.
Compáralo con lo que un prompt de producción, diseñado por alguien que sí está resolviendo el problema de AI Engineering, probablemente incluiría: ejemplos de manifiestos ambiguos con su extracción correcta (few-shot), instrucciones explícitas sobre cómo manejar unidades de peso mixtas (kg frente a lb), una instrucción de razonamiento paso a paso antes de producir el JSON final, reglas de desambiguación para nombres de transportista con variaciones ortográficas. Ninguna de esas piezas aparece en PROMPT_TEMPLATE — no porque esta guía no supiera que existen, sino porque construirlas sería, exactamente, la receta que el manual de operaciones nunca debía escribir.
Lo que esta guía SÍ tuvo que nombrar, sin construir
Cerrar la frontera no significa que esta guía haya evitado, por completo, cualquier mención de territorio de AI Engineering — significa que, cada vez que lo mencionó, lo nombró y siguió, sin desarrollarlo. Vale la pena listar los puntos exactos donde eso ocurrió, porque son la prueba más concreta de la disciplina:
| Concepto de AI Engineering | Dónde se nombró | Qué dijo esta guía, exactamente |
|---|---|---|
| Prompt injection a nivel de aplicación | M1.4, Ejercicio 1 | "Estructurar el prompt mismo para resistirlos es la mitad que corresponde a AI Engineering" |
| Evaluación semántica de calidad | M7.5 | "No es lo mismo que evaluar la calidad de un LLM" — nombrada como la línea exacta que el M7.6 no cruza |
| Familias de modelos y capacidades | M1.6 | Se listan (Nova, Claude, Llama, Mistral) como catálogo, nunca se compara su calidad de razonamiento |
| Fine-tuning | Tabla del M1.4 | Nombrado en la columna derecha, sin ninguna lección dedicada en el resto de la guía |
Cuatro menciones, cuatro veces donde la guía se detuvo exactamente en el nombre, sin dar un paso más — la misma disciplina que el M1.4, en su propia sección final, describió como "nombrarlo, y seguir".
Errores comunes
Buscar, en retrospectiva, "la lección donde esta guía sí cruzó la frontera un poco", asumiendo que en 36 lecciones tuvo que pasar al menos una vez (de desconfianza estadística). Qué pasa: alguien, familiarizado con lo difícil que es mantener una disciplina así durante una guía completa, busca activamente una excepción. Cómo detectarlo: si tu lectura de esta lección es "seguro se les escapó algo en alguna parte". Cómo corregirlo: la tabla de esta lección, con su columna de confirmación lección por lección, es exactamente la evidencia verificable para esa duda — cada fila apunta a un lugar específico donde se puede confirmar, no una afirmación de confianza sin evidencia. Si encuentras una lección de esta guía que sí desarrolla una técnica de prompt engineering, RAG o evaluación semántica más allá de nombrarla, eso sería una inconsistencia real que valdría la pena señalar — pero la tabla de esta lección, y el M1.4 que la originó, sostienen que no la hay.
Confundir "el prompt es corto" con "el prompt fue fácil de escribir bien" (de subestimar el trabajo de mantener la disciplina, no el trabajo de escribir el prompt en sí). Qué pasa: alguien lee PROMPT_TEMPLATE de cuatro líneas y concluye que esta parte de la guía "no tuvo trabajo real". Cómo detectarlo: si tu evaluación de esta lección es "escribir cuatro líneas de prompt no es gran cosa". Cómo corregirlo: el trabajo real de esta guía, en cada punto donde el prompt pudo haberse extendido, no fue escribir esas cuatro líneas — fue resistir la tentación de agregar una quinta, una sexta, una séptima, cada vez que el ejemplo de un manifiesto ambiguo (como 4479 en el M8.4, sin peso) invitaba a "mejorar" la instrucción con una regla más. El M1.4 ya lo dijo con precisión: "la respuesta correcta no es explicarlo mejor — es nombrarlo, y seguir", y esa disciplina, sostenida sesenta y cuatro lecciones, es el trabajo real, no la longitud del texto final.
Tratar esta lección como una simple repetición del M1.4, sin ningún valor agregado (de no notar la diferencia entre promesa y confirmación). Qué pasa: alguien, reconociendo la tabla del M1.4 casi intacta, concluye que esta lección no aporta nada nuevo. Cómo detectarlo: si tu resumen de esta lección es "es lo mismo que el M1.4, otra vez". Cómo corregirlo: la diferencia exacta está en la columna "Confirmado en" — el M1.4 prometió una frontera antes de que existiera una sola línea de código de esta guía; esta lección la confirma con la lección específica donde cada promesa se cumplió, algo que el M1.4, escrito primero, no podía hacer todavía. Prometer una disciplina y confirmar que se sostuvo son dos actos distintos, y el segundo es, precisamente, el trabajo de un capstone.
Ejercicios
Ejercicio 1 — Sin mirar la tabla de esta lección, recita de memoria las ocho filas del M1.4 (columna izquierda) con el módulo exacto donde cada una se construyó. Verifica tu respuesta contra la tabla de esta lección.
Ver solución
Infraestructura (M3), guardrail gestionado (M4.2-M4.3), guardrail propio (M4.5-M4.6), mínimo privilegio de IAM (M3.4/M5.3), modelo de costo (M2), gates extendidos (M5.8/M6.8), SLI/SLO (M7.2-M7.4), arnés de smoke test (M7.6). Si nombraste las ocho con su módulo correcto, tienes clara la arquitectura completa de esta guía, no solo la frontera.
Ejercicio 2 — Un compañero argumenta: "el M8.4 sí cruzó un poco la frontera, porque PROMPT_TEMPLATE le dice explícitamente al modelo que omita campos en vez de adivinar — eso ya es una técnica de prompt engineering". Evalúa este argumento con precisión.
Ver solución
El argumento tiene un grano de verdad que vale la pena reconocer con precisión, no descartar de plano: cualquier instrucción dentro de un prompt, técnicamente, es una decisión de prompt engineering en algún sentido amplio. Pero la distinción que el M1.4 traza no es "cero instrucciones", es "sin la profundidad adicional que AI Engineering desarrolla a fondo" — una sola frase de manejo de ambigüedad ("omite en vez de adivinar") está muy lejos de few-shot, cadenas de razonamiento, o estrategias de manejo de casos límite múltiples y encadenados, que es el tipo de profundidad que el M1.4 explícitamente delega. La línea correcta no es "cero prompt engineering en absoluto" —imposible, cualquier prompt implica alguna decisión—, es "ninguna lección de esta guía desarrolla prompt engineering como su propio objeto de estudio", y esa afirmación sí se sostiene, incluso con esa frase específica presente.
Ejercicio 3 — Predice qué le pasaría a esta guía si, en una versión futura, alguien agregara una novena lección al M4 explicando cómo mejorar PROMPT_TEMPLATE con few-shot. ¿Qué principio de esta lección se rompería, exactamente?
Ver solución
Se rompería, con precisión, la fila "El prompt que hace la extracción en sí" de la tabla de esta lección — esa lección nueva movería contenido de la columna derecha (territorio de AI Engineering) hacia la columna izquierda (lo que esta guía construye), exactamente el riesgo que el M1.4 nombró en su propia sección "Lo que pasa si esta frontera se cruza sin darse cuenta": "esta guía terminaría enseñando una versión más débil de lo que AI Engineering ya enseña a fondo". La guía seguiría funcionando técnicamente, pero dejaría de ser la fuente definitiva de su propia mitad del problema —la operación—, para convertirse en una fuente diluida de dos mitades distintas, ninguna completa.
Resumen y siguiente paso
Esta lección recorrió las ocho filas de la frontera que el M1.4 fijó primero, confirmando, con la lección exacta de cada módulo, que ninguna se cruzó en las treinta y seis lecciones de esta guía. Miraste de cerca el único prompt real que esta guía escribió —PROMPT_TEMPLATE, cuatro líneas, sin ninguna técnica avanzada— y las cuatro veces exactas donde un concepto de AI Engineering se nombró sin desarrollarse. El ledger de la lección 5 cerró qué quedó sin ejecutar; esta lección cierra qué quedó, deliberadamente, sin enseñar.
Antes de avanzar deberías poder: recitar las ocho filas de la frontera con su módulo exacto de construcción; explicar por qué PROMPT_TEMPLATE de cuatro líneas es una disciplina sostenida, no una tarea simple; y defender, con un ejemplo propio, por qué agregar una lección de prompt engineering al M4 rompería la identidad completa de esta guía.
La lección 7 mira hacia adelante, no hacia atrás: qué necesitaría Andes Cargo si su volumen de manifiestos escalados creciera al punto de justificar infraestructura que ni esta guía ni kubernetes-and-eks-in-production-guide construyen — nombrada, con precisión, sin fingir que existe un camino $0 para ella.
Recursos
- Este mismo curso, Módulo 1, lección 4 (
04-the-boundary-with-ai-engineering-said-out-loud.md) — la fuente completa de la tabla de ocho filas y las tres citas textuales deSTRATEGY.mdque esta lección confirma. src/paths/aws-cloud-ecosystem/STRATEGY.md— la fuente original de la posición de esta guía en el grafo del ecosistema NIEVA.- Este mismo curso, Módulo 8, lección 4 (
04-end-to-end-walkthrough-the-ai-escalation-path-mixed-and-declared.md) — el origen dePROMPT_TEMPLATE, analizado en detalle en esta lección. - Este mismo curso, Módulo 7, lecciones 5 y 6 — la frontera aplicada específicamente a evaluación de calidad, la segunda vez que esta guía la traza en detalle.