cursos:sdd:11-ingenieria
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| cursos:sdd:11-ingenieria [2026/11/05 22:22] – ↷ El nombre de la página cambió de cursos:sdd:10-ingenieria a cursos:sdd:11-ingenieria claude | cursos:sdd:11-ingenieria [2026/11/06 08:37] (actual) – Renumerar el curso: Estructura de un skill pasa al 10 y los temas siguientes suben un número: movida a cursos:sdd:12-ingenieria claude | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| - | ====== 10. Ingeniería: | ||
| - | |||
| - | Trabajar con un modelo empezó siendo //escribir bien una pregunta//. Hoy es //construir un sistema alrededor del modelo//. Entre una cosa y otra hay **cinco capas**, y cada una apareció cuando la anterior se quedó corta. | ||
| - | |||
| - | ^ Capa ^ Qué se diseña ^ La pregunta que responde ^ | ||
| - | | **Prompt** | La petición concreta que se envía | ¿Lo estoy pidiendo bien? | | ||
| - | | **Contexto** | Lo que el modelo ve al responder | ¿Tiene la información para resolverlo? | | ||
| - | | **Harnés** | El andamiaje alrededor de //una// ejecución | ¿Puede actuar sin romper nada? | | ||
| - | | **Bucle** | El ciclo que repite un agente solo | ¿Cuándo comprueba su trabajo y para? | | ||
| - | | **Grafo** | La coordinación entre //varios// agentes | ¿Quién hace qué, en qué orden y compartiendo qué? | | ||
| - | |||
| - | **Las capas se acumulan, no se sustituyen.** Un grafo está hecho de nodos, un nodo bueno es un bucle bien diseñado, y un bucle bueno necesita el harnés debajo haciendo su trabajo. Saltarse una capa de abajo no la elimina: hace que el fallo aparezca más arriba, más tarde y mucho más difícil de depurar. | ||
| - | |||
| - | Ese es también el orden en que conviene subir: **no se pasa a la capa siguiente hasta que la anterior se queda corta de verdad**. | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== 1. Ingeniería de prompts ===== | ||
| - | |||
| - | Es la capa de **un solo turno**: qué palabras se mandan. Sigue siendo la base, porque las cuatro capas de encima acaban escribiendo prompts; lo que cambia es quién los escribe. | ||
| - | |||
| - | Un prompt sirve cuando lleva cuatro cosas: | ||
| - | |||
| - | * **Objetivo** concreto, no un tema. | ||
| - | * **Restricciones**: | ||
| - | * **Formato de salida** esperado. | ||
| - | * **Criterio de terminado**: | ||
| - | |||
| - | < | ||
| - | Malo: arregla este código | ||
| - | Bueno: arregla el NullPointerException de PedidoService.calcularTotal, | ||
| - | | ||
| - | y deja pasando los tests de PedidoServiceTest | ||
| - | </ | ||
| - | |||
| - | ==== Las dos técnicas que se usan a diario ==== | ||
| - | |||
| - | ^ Técnica ^ En qué consiste ^ Cuándo ^ | ||
| - | | **Zero-shot** | Se pide directamente, | ||
| - | | **Few-shot** | Se dan dos o tres ejemplos de entrada y salida antes de la petición real | Cuando la salida tiene un formato propio. Enseñar cómo es " | ||
| - | |||
| - | El // | ||
| - | |||
| - | ==== Dónde se queda corto ==== | ||
| - | |||
| - | Cada conversación empieza de cero. Las reglas del proyecto hay que repetirlas cada vez, la información que cambia hay que pegarla a mano, y seis personas del equipo escriben seis versiones distintas del mismo prompt con seis calidades distintas de resultado. | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== 2. Ingeniería de contexto ===== | ||
| - | |||
| - | Ya no es //cómo// se pregunta, sino **qué información ve el modelo** al responder. El cuello de botella casi nunca es la redacción: es que al modelo le falta el documento, la fila de la base de datos o la salida de la herramienta que necesitaba. | ||
| - | |||
| - | Las piezas con las que se construye el contexto: | ||
| - | |||
| - | ^ Pieza ^ Qué aporta ^ | ||
| - | | **System prompt** | Instrucciones permanentes, | ||
| - | | **Fichero de instrucciones del proyecto** | '' | ||
| - | | **Historial** | Lo ya dicho en la sesión, para que las decisiones anteriores sigan valiendo | | ||
| - | | **Documentos recuperados (RAG)** | Se busca en una base de conocimiento y se inyecta lo relevante | | ||
| - | | **Salida de herramientas** | El modelo pide lo que necesita mientras trabaja: leer ficheros, consultar una API, lanzar los tests | | ||
| - | |||
| - | Las dos últimas son el salto importante: con RAG se **prepara** el contexto por adelantado; con herramientas el modelo lo **va pidiendo**, que es lo que hace falta cuando no se puede saber de antemano qué información va a necesitar. MCP es el estándar que normaliza esa conexión a herramientas y datos (tema 9). | ||
| - | |||
| - | <note important> | ||
| - | |||
| - | ==== Dónde se queda corto ==== | ||
| - | |||
| - | Un modelo perfectamente informado sigue siendo un modelo: no tiene criterio sobre si lo que va a hacer es peligroso, no duda antes de romper algo y no sabe cuándo parar. Una ventana de contexto más grande no convierte un agente inestable en un sistema fiable. | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== 3. Ingeniería de harneses ===== | ||
| - | |||
| - | //Harnés// es el arnés del escalador: no hace el trabajo, pero si algo sale mal limita el daño. Aquí es el conjunto de reglas, comprobaciones y mecanismos de seguridad **alrededor** del modelo, para una ejecución. | ||
| - | |||
| - | El cambio de mentalidad es este: | ||
| - | |||
| - | <note tip> | ||
| - | |||
| - | ==== Las cinco capas del harnés ==== | ||
| - | |||
| - | ^ ^ Capa ^ Qué es ^ Dónde se ve en el curso ^ | ||
| - | | 1 | **Límites** | Lo que el agente //no puede// hacer, impuesto por el entorno: contenedor o VM, acceso de solo lectura, reglas de red, directorios permitidos | Tema 15: Sandbox | | ||
| - | | 2 | **Instrucciones** | Las normas permanentes del proyecto en '' | ||
| - | | 3 | **Comprobaciones** | Lint, tipos, tests, análisis de seguridad. Puertas que el agente **no puede saltarse**, no sugerencias | Temas 12, 13 y 14 | | ||
| - | | 4 | **Recuperación** | Qué pasa cuando una comprobación falla: reintento con tope, // | ||
| - | | 5 | **Revisión** | Un revisor **distinto** del que hizo el trabajo | Tema 11: Ejecutor-Revisor | | ||
| - | |||
| - | La capa 1 va primera justamente porque **no depende de que el modelo se porte bien**. Una instrucción se puede ignorar; un contenedor sin permiso de escritura, no. Los //hooks// (tema 16) son la forma práctica de convertir las capas 1 y 3 en algo que el agente tiene que cumplir. | ||
| - | |||
| - | ==== Dos tipos de comprobación ==== | ||
| - | |||
| - | ^ Tipo ^ Quién juzga ^ Ejemplos ^ Coste ^ Fiabilidad ^ | ||
| - | | **Computacional** | Código normal, regla fija | Tests, linters, comprobador de tipos, validación de esquema | Barato y rápido | Altísima, pero solo pilla lo que se te ocurrió comprobar | | ||
| - | | **Inferencial** | Otro modelo | LLM-as-judge, | ||
| - | |||
| - | Un harnés decente usa los dos: lo determinista primero, porque es gratis, y el modelo juez solo para lo que no se puede expresar como regla. | ||
| - | |||
| - | <note warning> | ||
| - | |||
| - | ==== Por dónde empezar, según lo que hay en juego ==== | ||
| - | |||
| - | * **Proyecto personal**: solo la capa 2. Un buen fichero de instrucciones, | ||
| - | * **Flujo de un equipo**: añadir la capa 3. Los mismos tests y linters que se le exigen al código humano, como puerta. | ||
| - | * **El agente toca datos o servicios**: | ||
| - | * **Sistema de cara al cliente o sensible**: añadir la capa 5, con revisión humana final. | ||
| - | |||
| - | ==== Dónde se queda corto ==== | ||
| - | |||
| - | El harnés hace que //una// ejecución sea fiable, pero sigue dando por supuesto que hay una persona lanzándola, | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== 4. Ingeniería de bucles ===== | ||
| - | |||
| - | Aquí el humano **deja de apretar el botón**. En vez de escribir un prompt, leer la respuesta y escribir el siguiente, se construye un sistema pequeño que hace ese ciclo: mira qué queda pendiente, decide qué intentar, se lo pasa al agente, comprueba si el resultado cumple el objetivo, guarda lo aprendido y vuelve a empezar o para. | ||
| - | |||
| - | <uml> | ||
| - | start | ||
| - | :leer el estado del proyecto; | ||
| - | repeat | ||
| - | :elegir la siguiente tarea; | ||
| - | :ejecutar el agente; | ||
| - | :pasar el verificador; | ||
| - | if (verificador en verde) then (si) | ||
| - | :guardar el avance; | ||
| - | else (no) | ||
| - | :registrar el fallo; | ||
| - | endif | ||
| - | repeat while (queda objetivo y queda presupuesto) is (si) not (no) | ||
| - | stop | ||
| - | </ | ||
| - | |||
| - | La versión mínima de esto es la **técnica Ralph**: un '' | ||
| - | |||
| - | ==== Las tres cosas que hay que acertar ==== | ||
| - | |||
| - | - **El objetivo tiene que ser demostrable, | ||
| - | - **El verificador es el cuello de botella real, no el modelo.** Un bucle vale exactamente lo que valga su capacidad de distinguir trabajo bueno de trabajo malo. Con una comprobación débil, marcará como hecho lo que está roto y seguirá adelante. La mayor parte del esfuerzo de ingeniería se va ahí, no al prompt. | ||
| - | - **Límites duros**: número de vueltas, tope de gasto, tiempo máximo. | ||
| - | |||
| - | ==== Estilos de bucle ==== | ||
| - | |||
| - | ^ Estilo ^ Cómo funciona ^ Bueno para ^ Riesgo ^ | ||
| - | | **Cerrado, con aprobación humana** | Propone la acción siguiente y espera el visto bueno | Cambios de riesgo, primeros días de un bucle nuevo | Lento; si se aprueba todo sin mirar, no aporta nada | | ||
| - | | **Abierto, con presupuesto** | Corre desatendido hasta el tope de vueltas, de coste o hasta cumplir el objetivo | Tandas nocturnas, refactorizaciones acotadas | Puede quemar el presupuesto en lo que no era | | ||
| - | | **Ralph** | Un agente, una especificación, | ||
| - | | **Orquestado** | Un bucle de control lanza subagentes especializados y funde los resultados | Objetivos que se parten en piezas independientes | El coste de coordinación, | ||
| - | |||
| - | <note warning>// | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== 5. Ingeniería de grafos ===== | ||
| - | |||
| - | El bucle diseña el ciclo de //un// agente. El grafo diseña **cómo se conectan varios**. Tres piezas: | ||
| - | |||
| - | * **Nodos** — quien hace el trabajo: un agente especializado (investigador, | ||
| - | * **Aristas** — el encaminamiento: | ||
| - | * **Estado compartido** — el objeto que viaja por las aristas. Es lo que convierte un montón de agentes en un sistema en vez de en un grupo de asistentes que se olvidan de todo al pasarse el trabajo. | ||
| - | |||
| - | <uml> | ||
| - | start | ||
| - | : | ||
| - | repeat | ||
| - | fork | ||
| - | :escribir el codigo; | ||
| - | fork again | ||
| - | :escribir los tests; | ||
| - | end fork | ||
| - | :revisor; | ||
| - | backward: | ||
| - | repeat while (pide otra pasada) is (si) not (no) | ||
| - | :publicar; | ||
| - | stop | ||
| - | </ | ||
| - | |||
| - | <note tip>**El grafo es el mapa; el bucle es el camino.** El grafo dice qué es alcanzable y quién habla con quién. No dice cuántas veces reintenta un nodo, cuándo se rinde ni qué es suficientemente bueno: eso sigue siendo del bucle, dentro de cada nodo. Un agente trabajando solo es el grafo más pequeño posible: un nodo con una arista a sí mismo.</ | ||
| - | |||
| - | No confundirlo con un //knowledge graph// ni con GraphRAG: aquellos modelan **datos** y sus relaciones para recuperarlos; | ||
| - | |||
| - | ==== Cuándo merece la pena ==== | ||
| - | |||
| - | La respuesta honesta por defecto es **que no**. Lo normal es que un agente bien acotado con un buen verificador baste, y adelantarse al grafo es cómo una tarea de dos horas se convierte en un proyecto de dos semanas de // | ||
| - | |||
| - | ^ Señal ^ Basta un bucle ^ Toca grafo ^ | ||
| - | | Forma de la tarea | Un trabajo, una meta clara | Se parte en especialidades que se pasan el trabajo | | ||
| - | | Paralelismo | Los pasos van en serie | Hacen falta varias cosas a la vez y luego juntarlas | | ||
| - | | Herramientas por paso | Las mismas todo el rato | Modelo o herramientas distintos en cada fase | | ||
| - | | Verificación | El agente comprueba lo suyo | Un nodo aparte revisa el trabajo de otro | | ||
| - | | Aislamiento de fallos | Un paso malo reintenta y ya | Un nodo que falla no debe envenenar el resto | | ||
| - | |||
| - | Si la mayoría de las respuestas sinceras caen en la columna de la izquierda, es un bucle al que alguien ha convencido de que necesitaba arquitectura. | ||
| - | |||
| - | ==== Frameworks ==== | ||
| - | |||
| - | ^ Framework ^ Modelo de orquestación ^ | ||
| - | | **LangGraph** | '' | ||
| - | | **AutoGen (GraphFlow)** | Orquestación por grafo sobre el modelo de agentes de Microsoft | | ||
| - | | **Google ADK** | Agentes de flujo secuencial, paralelo y en bucle como primitivas | | ||
| - | | **Protocolo A2A** | Delegación entre agentes de **sistemas y equipos distintos**, | ||
| - | |||
| - | Un grafo implícito sigue siendo un grafo: simplemente no se ve hasta que algo se rompe. Mejor un framework que obligue a hacerlo explícito que uno propio que lo esconda. | ||
| - | |||
| - | ==== Lista de comprobación antes de montar uno ==== | ||
| - | |||
| - | - Intenta que siga siendo un bucle. Si un agente bien acotado con un verificador decente hace el trabajo, para ahí. | ||
| - | - Un nodo solo se crea si es una especialidad de verdad, otro modelo, otras herramientas o un revisor de solo lectura. Un paso que podrías meter dentro de otro no es un nodo. | ||
| - | - Dibuja las aristas antes de escribir código. Si no cabe en una servilleta, ya es demasiado complejo. | ||
| - | - Diseña el estado compartido a propósito y decide **quién puede escribir en él**. La deriva del estado es la forma más rápida de pudrir un grafo. | ||
| - | - Dale dientes al revisor: un agente distinto del que produjo el trabajo, no el mismo poniéndose la nota. | ||
| - | - Aísla los fallos: un nodo malo reintenta sin corromper el estado ni contaminar el resto de la ejecución. | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== 6. Resumen ===== | ||
| - | |||
| - | * **Prompt**: una petición bien hecha. Objetivo, restricciones, | ||
| - | * **Contexto**: | ||
| - | * **Harnés**: | ||
| - | * **Bucle**: el sistema decide el paso siguiente. Objetivo demostrable, | ||
| - | * **Grafo**: varios nodos especializados con estado compartido. Solo cuando el trabajo lo pide. | ||
| - | |||
| - | Los patrones concretos para montar todo esto —pipeline, | ||
| - | |||
| - | ===== Fuentes ===== | ||
| - | |||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
cursos/sdd/11-ingenieria.1793913744.txt.gz · Última modificación: por claude
