Volver al inicio

Event sourcing para agentes: ensamblaje declarativo de sistemas de IA

El artículo examina la aplicación de event sourcing en sistemas multiagente usando el ejemplo del framework zymi. Muestra cómo el enfoque declarativo resuelve el problema del estado mutable, asegura la reproducibilidad y simplifica la integración con LLM. Se proporcionan ejemplos de configuraciones y beneficios arquitectónicos.

Por qué el estado mutable mata tus sistemas de agentes (y cómo arreglarlo)
Advertisement 728x90

# Ensamblaje Declarativo de Agentes: Cómo el Event Sourcing Resuelve el Problema del Estado Mutable

Los sistemas multiagente modernos basados en LLMs enfrentan un desafío fundamental: gestionar el estado mediante estado mutable provoca inestabilidad y dolores de cabeza al depurar. La solución llega de una fuente inesperada: las prácticas de ingeniería de datos. El nuevo framework zymi aplica principios de event sourcing y descripción declarativa, familiares de dbt, para construir sistemas orientados a agentes confiables.

Enfoque Declarativo en Lugar de Código Imperativo

Los frameworks tradicionales como LangGraph requieren instrucciones detalladas sobre cómo procesar datos a través de estado mutable. Esto genera varios problemas críticos:

  • El estado se convierte en un vertedero desordenado con dependencias ocultas
  • Cada cambio exige sincronización manual
  • La depuración se transforma en una tarea tediosa de rastrear logs de print

zymi invierte el paradigma: describes qué hay que hacer mediante configs YAML, y el motor maneja la ejecución de forma automática. La estructura del proyecto refleja un proyecto dbt:

Google AdInline article slot
zymi-research/
├── agents/
│  ├── researcher.yml
│  └── writer.yml
├── pipelines/
│  └── research.yml
├── tools/
└── project.yml

Cada agente se define mediante un manifiesto declarativo. Por ejemplo, el agente researcher:

name: researcher
description: "Research agent — searches the web, scrapes pages, and stores findings in memory"
model: ${default_model}
system_prompt: |
  You are a thorough research assistant. Your job is to find accurate,
  up-to-date information on the given topic.

tools:
  - web_search
  - web_scrape
  - write_memory
max_iterations: 15

Las herramientas también se describen de forma declarativa. La implementación de web_search vía Tavily API:

name: web_search
description: "Search the web for information on a given query"
parameters:
  type: object
  properties:
    query:
      type: string
      description: "Search query"
  required: [query]

implementation:
  kind: http
  method: POST
  url: "https://api.tavily.com/search"
  headers:
    Authorization: "Bearer ${env.TAVILY_API_KEY}"
  body_template: '{"query": "${args.query}", "max_results": 5}'

Una pipeline encadena agentes en pasos con dependencias:

Google AdInline article slot
name: research
steps:
  - id: search_web
    agent: researcher
    task: "Search the web for information about: ${inputs.topic}"

  - id: analyze
    agent: researcher
    task: "Analyze findings and store structured summary"
    depends_on: [search_web]

  - id: write_report
    agent: writer
    task: "Write report to ./output/report.md"
    depends_on: [analyze]

Ejecuta la pipeline vía CLI:

zymi run research -i topic="Event sourcing in AI"

Event Sourcing: De Eventos Inmutables a la Reproducibilidad

La distinción clave de zymi respecto a LangGraph es abandonar el estado mutable por una arquitectura basada en event sourcing. Todas las interacciones se registran como eventos inmutables en una cadena verificada criptográficamente. Cada evento incluye:

  • Hash del evento anterior (asegura la integridad de la cadena)
  • Datos de la operación
  • Marca de tiempo
  • Fuente del evento

Este modelo ofrece tres ventajas críticas:

Google AdInline article slot
  • Trazabilidad Completa — cualquier resultado se puede reconstruir desde la cadena de eventos
  • Pista de Auditoría Integrada — todos los cambios se registran sin esfuerzo
  • Seguridad de Operaciones — el monitor evalúa intenciones antes de la ejecución

Aquí un fragmento de un log de ejecución:

#4    10:50:52.806 intention_emitted source=orchestrator
  call_custom_tool data={"type":"CallCustomTool","data":{"tool_name":"web_search"}}
#5    10:50:52.806 intention_evaluated source=orchestrator
  call_custom_tool -> approved
#49   11:20:15.321 intention_emitted source=orchestrator
  write_file data={"path":"output/report.md"}
#50   11:20:15.322 intention_evaluated source=orchestrator
  write_file -> requires_approval

Esto muestra cómo el sistema primero emite una intención para realizar una operación (intention_emitted), luego el monitor decide si aprobarla (intention_evaluated). En el intento de escritura de archivo, el monitor requirió aprobación: una salvaguarda imposible con mutación directa del estado.

Beneficios para Desarrolladores y LLMs

El enfoque declarativo ofrece ventajas prácticas, especialmente en la era de la IA generativa:

  • Complejidad Reducida para LLMs — las configs YAML son más simples de generar que código imperativo
  • Esquema de Validación Estricta — JSON Schema previene errores en las configs
  • Ejecución Paralela — el motor identifica automáticamente pasos independientes
  • Reproducibilidad — cualquier ejecución se puede reproducir desde el log de eventos

Los experimentos muestran que las pipelines generadas por LLM para zymi requieren un 30-40% menos iteraciones que el código equivalente de LangGraph. Esto se debe a:

  • Ausencia de gestión manual del estado
  • Límites claros de responsabilidad entre componentes
  • Validación estática de configs

Lo Que Importa

  • Declarativo sobre Imperativo — describir qué hacer, no cómo, reduce la carga cognitiva
  • Event Sourcing como Base — eventos inmutables aseguran reproducibilidad y seguridad
  • Integración con el Desarrollo de LLMs — configs estructuradas son más fáciles de generar y refinar para la IA
  • Integridad Criptográfica — la cadena de hash garantiza la autenticidad del historial de ejecución
  • Monitoreo de Intenciones — una capa dedicada verifica operaciones para bloquear acciones no deseadas

El framework zymi demuestra cómo conceptos de ingeniería de datos pueden abordar desafíos sistémicos en la programación orientada a agentes. Pasar de estado mutable a arquitectura basada en event sourcing no solo simplifica el desarrollo, sino que desbloquea nuevas posibilidades para controlar y analizar el comportamiento de agentes de IA. Para profesionales técnicos, esto implica un cambio de sistemas frágiles a soluciones confiables y trazables, donde cada paso cuenta con prueba verificable y reproducibilidad.

— Editorial Team

Advertisement 728x90

Leer después