Retour à l'accueil

Sourcing d'événements pour les agents : assemblage déclaratif de systèmes d'IA

L'article examine l'application du sourcing d'événements dans les systèmes multi-agents en utilisant l'exemple du framework zymi. Il montre comment l'approche déclarative résout le problème de l'état mutable, assure la reproductibilité et simplifie l'intégration avec LLM. Des exemples de configurations et d'avantages architecturaux sont fournis.

Pourquoi l'état mutable tue vos systèmes d'agents (et comment y remédier)
Advertisement 728x90

Assemblage déclaratif d'agents : comment Event Sourcing résout le problème de l'état mutable

Les systèmes multi-agents modernes basés sur les LLM font face à un défi fondamental : la gestion d'état via un état mutable entraîne de l'instabilité et des casse-tête en débogage. La solution vient d'une source inattendue — les pratiques d'ingénierie des données. Le nouveau framework zymi applique les principes de event sourcing et de description déclarative, familiers de dbt, pour construire des systèmes orientés agents fiables.

Approche déclarative plutôt que code impératif

Les frameworks traditionnels comme LangGraph exigent des instructions détaillées sur comment traiter les données via un état mutable. Cela crée plusieurs problèmes critiques :

  • L'état devient un tas informe avec des dépendances cachées
  • Chaque changement nécessite une synchronisation manuelle
  • Le débogage tourne à la corvée de fouille dans les logs de print

zymi renverse la donne : vous décrivez ce qui doit être fait via des configs YAML, et le moteur gère l'exécution automatiquement. La structure du projet reflète celle d'un projet dbt :

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

Chaque agent est défini via un manifeste déclaratif. Par exemple, l'agent 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

Les tools sont aussi décrits de manière déclarative. L'implémentation de web_search via l'API Tavily :

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}'

Un pipeline chaîne les agents en étapes avec des dépendances :

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]

Lancez le pipeline via CLI :

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

Event Sourcing : des événements immuables à la reproductibilité

La distinction clé de zymi par rapport à LangGraph est l'abandon de l'état mutable au profit d'une architecture à event sourcing. Toutes les interactions sont journalisées sous forme d'événements immuables dans une chaîne vérifiée cryptographiquement. Chaque événement inclut :

  • Hash de l'événement précédent (garantit l'intégrité de la chaîne)
  • Données d'opération
  • Horodatage
  • Source de l'événement

Ce modèle offre trois avantages critiques :

Google AdInline article slot
  • Traçabilité complète — tout résultat peut être reconstruit à partir de la chaîne d'événements
  • Journal d'audit intégré — tous les changements sont loggés sans effort
  • Sécurité des opérations — le moniteur évalue les intentions avant exécution

Voici un extrait d'un log d'exécution :

#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

Cela montre comment le système émet d'abord une intention pour effectuer une opération (intention_emitted), puis le moniteur décide si elle est approuvée (intention_evaluated). Lors de la tentative d'écriture de fichier, le moniteur a exigé une approbation — une protection impossible avec une mutation d'état directe.

Avantages pour les développeurs et les LLM

L'approche déclarative offre des gains pratiques, surtout à l'ère de l'IA générative :

  • Complexité réduite pour les LLM — les configs YAML sont plus simples à générer que du code impératif
  • Schéma de validation stricte — JSON Schema prévient les erreurs de config
  • Exécution parallèle — le moteur identifie automatiquement les étapes indépendantes
  • Reproductibilité — n'importe quelle exécution peut être rejouée à partir du log d'événements

Les expériences montrent que les pipelines générés par LLM pour zymi nécessitent 30-40 % d'itérations en moins que du code LangGraph équivalent. Cela vient de :

  • Pas de gestion manuelle d'état
  • Frontières de responsabilités claires entre composants
  • Validation statique des configs

Ce qui compte

  • Déclaratif plutôt qu'impératif — décrire ce qu'il faut faire, pas comment, réduit la charge cognitive
  • Event Sourcing comme fondation — les événements immuables assurent reproductibilité et sécurité
  • Intégration au développement LLM — les configs structurées sont plus faciles à générer et affiner pour l'IA
  • Intégrité cryptographique — la chaîne de hachage garantit l'authenticité de l'historique d'exécution
  • Surveillance des intentions — une couche dédiée valide les opérations pour bloquer les actions indésirables

Le framework zymi démontre comment les concepts d'ingénierie des données peuvent relever les défis systémiques de la programmation orientée agents. Passer d'un état mutable à une architecture à event sourcing ne simplifie pas seulement le développement — cela ouvre de nouvelles possibilités pour contrôler et analyser le comportement des agents IA. Pour les pros techniques, cela passe de systèmes fragiles à des solutions fiables, traçables, où chaque étape dispose d'une preuve vérifiable et de reproductibilité.

— Editorial Team

Advertisement 728x90

Lire ensuite