Un agente autónomo (WhatsApp + Gmail + herramientas internas vía MCP) que decide qué tool llamar y con qué parámetros, corriendo sin supervisión humana en cada mensaje. El LLM no es determinístico por naturaleza, pero el sistema que lo rodea sí tiene que serlo, o rompes integraciones reales cada vez que el modelo decide ser "creativo" con el formato de salida.
El problema real
Un LLM sin restricciones responde distinto ante el mismo input: a veces devuelve JSON limpio, a veces lo envuelve en markdown con backticks, a veces agrega una frase de cortesía antes del JSON, a veces cambia el nombre de un campo por un sinónimo. Si tu código de downstream hace JSON.parse() directo sobre eso, falla de forma intermitente e impredecible — el peor tipo de bug porque no reproduce siempre.
Por qué "prompt mejor redactado" no alcanza
La tentación es escribir un prompt más detallado pidiendo "responde solo JSON". Funciona la mayoría de las veces, pero "la mayoría de las veces" no sirve en un sistema que corre miles de veces al día sin supervisión. Necesitas garantías estructurales, no buenas intenciones del modelo.







