Los agentes de IA deben ser efímeros

El lugar natural del agente es el discovery. Cuando el patrón ya existe, lo correcto es convertirlo en código determinista y reproducible.

Antes de empezar con este post, supongo que os habréis dado cuenta que este post está en español a propósito.

Quiero empezar a escribir en español de ahora en adelante; Hablar en inglés me limitaba a veces tanto en lo que quería expresar como en la forma de hacerlo. Además, no siento que haya mucho blog en español hablando de este tipo de situaciones con agentes y software. Quiero sentirme más cómodo escribiendo, pensar con menos fricción y aportar también desde ahí.

Si entras en cualquier red social hoy en día, todo lo que se habla sobre los agentes de IA gira alrededor de definir prompts, tools, memoria, planning y autonomía, a cómo usar los "loops", a usar los "dynamic workflows", tokenmaxxing... En definitiva, palabrería variada para buscar técnicas, a veces incluso chamánicas, para conseguir automatizar que un agente de IA pueda realizar el trabajo a la perfección, o dicho de otra forma más clara: Hacer que IA realmente funcione.

Esto es el principio

Esto creo que hay que tenerlo claro; una nueva forma de trabajar se avecina, y nadie sabe a dónde va a ir. Ahora mismo, hay dos grandes competidores queriendo salir a bolsa muy fuertemente, y se está formando un torbellino de nuevas features, a veces casi imposible de adoptar, que parece una carrera armamentística propia del siglo pasado.

He llegado a leer que el uso de la IA que hacemos hoy en día se asemeja a los primeros programas de televisión donde era, hablando a grosso modo, literalmente poner una cámara frente a los locutores pero seguía siendo una entrevista con componente altamente auditiva y no visual; digamos que tenemos frente a nosotros una herramienta brutal, pero aún no sabemos sacarle el partido aún.

Y tiene todo el sentido del mundo.

Los tres círculos

Una forma simple en la que pienso cómo es el Agentic Workflow son tres círculos en perfecto equilibrio:

  • El agente: discovery.
  • El humano: judgement.
  • El software: execution.

El agente es muy bueno explorando. Puede leer contexto, buscar caminos, proponer pasos, resumir opciones, conectar piezas y sacar ideas útiles de un espacio enorme. Ese es su superpoder real: descubrir información.

El humano sigue siendo quien mejor puede juzgar si algo tiene sentido dentro de un contexto mayor. No solo si "funciona", sino si merece la pena, si es prudente, si encaja con el objetivo real, si el trade-off es aceptable. Ese es el círculo de judgement.

Y luego está el software tradicional. El aburrido. El determinista. El que no improvisa. El que ejecuta definiciones concretas. Ese es justo el tipo de software que quieres para la parte final: execution.

El error habitual es intentar que el agente ocupe demasiado terreno de los otros dos círculos.

Cuando le pedimos judgement, muchas veces lo que obtenemos es una aproximación plausible y una visión desalineada.

Cuando le pedimos execution, muchas veces lo que obtenemos es un sistema que parece funcionar... hasta que deja de hacerlo de una forma difícil de predecir.

Creo que hoy en día estamos sobrevalorando al agente porque creemos que puede ser omnipotente; ahora mismo vivimos una época de hype y creemos que todo puede ser consumido y producido por un agente. Pero creo que al agente hay que dejarle trabajar en el campo donde realmente es un especialista: en descubrir.

Y es que una vez el campo está descubierto, el agente deja de tener sentido y debería consumirse como código, y dejar sus evidencias, no como un archivo Markdown dentro de un mar de información, sino en un código que sea ejecutable y reproducible.

Un agente especializado en limpiar datos de entrada en un pipeline de datos, debería descubrir los patrones de limpieza y transformarse en código para materializar el descubrimiento, y tener técnicas automatizadas (también deterministas) para detectar nuevos patrones y que un agente vuelva a trabajar para encontrar el nuevo patrón y actualizar dicho código.

Un agente especializado en scrapear una web debería hacer discovery con el browser, pero detectar el patrón y consolidar en un código que sea reproducible, hasta que deje de serlo porque haya cambiado la web y deba volver a lanzar un agente que arregle este fallo.

Por eso los agentes de código (me niego a llamarlos arneses de código o Coding Harnesses) han entrado tan bien en el ecosistema; descubren, crean código, es revisado por un humano y se materializa con un commit o un merge.

Nos falta crear ese ecosistema, ahora mismo estamos haciendo sobreuso de los agentes: ¿renombrar una variable en un codebase via prompt? ¿y el agente de turno usa grep y sed para modificar? ¿Y qué pasó con los LSPs?

Los agentes son efímeros, como efímero es el descubrimiento, pero el conocimiento de una ejecución como mejor se plasma es en un código determinista.