# Deklarative Agenten-Zusammensetzung: Wie Event Sourcing das Problem veränderlicher Zustände löst
Moderne Multi-Agenten-Systeme auf Basis von LLMs stehen vor einer grundlegenden Herausforderung: Die Verwaltung von Zuständen über veränderliche Zustände führt zu Instabilität und Debugging-Albträumen. Die Lösung kommt aus einer unerwarteten Quelle – Praktiken aus dem Data Engineering. Das neue zymi-Framework wendet Event Sourcing und deklarative Beschreibungsprinzipien an, die aus dbt bekannt sind, um zuverlässige agentenorientierte Systeme aufzubauen.
Deklarativer Ansatz statt imperativen Codes
Traditionelle Frameworks wie LangGraph erfordern detaillierte Anweisungen darüber, wie Daten durch veränderliche Zustände verarbeitet werden sollen. Das erzeugt mehrere kritische Probleme:
- Der Zustand wird zu einem chaotischen Durcheinander mit versteckten Abhängigkeiten
- Jede Änderung verlangt manuelle Synchronisation
- Debugging wird zur Qual des Wühlens in Print-Logs
zymi kehrt das Paradigma um: Sie beschreiben was zu tun ist, mithilfe von YAML-Konfigurationen, und der Engine übernimmt die Ausführung automatisch. Die Projektstruktur entspricht der eines dbt-Projekts:
zymi-research/
├── agents/
│ ├── researcher.yml
│ └── writer.yml
├── pipelines/
│ └── research.yml
├── tools/
└── project.yml
Jeder Agent wird durch ein deklaratives Manifest definiert. Zum Beispiel der researcher-Agent:
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
Tools werden ebenfalls deklarativ beschrieben. Die Implementierung von web_search über die 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}'
Ein Pipeline verknüpft Agents in Schritte mit Abhängigkeiten:
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]
Führen Sie das Pipeline über die CLI aus:
zymi run research -i topic="Event sourcing in AI"
Event Sourcing: Von unveränderlichen Events zur Reproduzierbarkeit
Der entscheidende Unterschied von zymi zu LangGraph besteht darin, veränderliche Zustände durch eine event-gesourcte Architektur zu ersetzen. Alle Interaktionen werden als unveränderliche Events in einer kryptografisch verifizierten Kette protokolliert. Jedes Event enthält:
- Hash des vorherigen Events (sichert die Kette)
- Betriebsdaten
- Zeitstempel
- Event-Quelle
Dieses Modell bietet drei entscheidende Vorteile:
- Vollständige Nachverfolgbarkeit – jedes Ergebnis lässt sich aus der Event-Kette rekonstruieren
- Integrierte Auditspur – alle Änderungen werden mühelos protokolliert
- Betriebssicherheit – der Monitor prüft Absichten vor der Ausführung
Hier ein Auszug aus einem Ausführungslog:
#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
Dies zeigt, wie das System zunächst eine Absicht zur Ausführung einer Operation emittiert (intention_emitted), dann der Monitor entscheidet, ob sie genehmigt wird (intention_evaluated). Beim Versuch, eine Datei zu schreiben, forderte der Monitor eine Genehmigung – ein Schutzmechanismus, der bei direkter Zustandsmutation unmöglich ist.
Vorteile für Entwickler und LLMs
Der deklarative Ansatz bringt praktische Gewinne, besonders im Zeitalter generativer KI:
- Reduzierte Komplexität für LLMs – YAML-Konfigs sind einfacher zu generieren als imperativer Code
- Strenges Validierungsschema – JSON Schema verhindert Konfigurationsfehler
- Parallele Ausführung – der Engine erkennt unabhängige Schritte automatisch
- Reproduzierbarkeit – jede Ausführung lässt sich aus dem Event-Log wiederholen
Experimente zeigen, dass von LLMs generierte Pipelines für zymi 30–40 % weniger Iterationen benötigen als äquivalenter LangGraph-Code. Das rührt daher:
- Kein manuelles State-Management
- Klare Verantwortungsgrenzen zwischen Komponenten
- Statische Konfigurationsvalidierung
Was zählt
- Deklarativ statt imperativ – was zu tun ist beschreiben, nicht wie, reduziert die kognitive Belastung
- Event Sourcing als Basis – unveränderliche Events gewährleisten Reproduzierbarkeit und Sicherheit
- Integration in die LLM-Entwicklung – strukturierte Konfigs sind für KI leichter zu erzeugen und zu verfeinern
- Kryptografische Integrität – die Hash-Kette garantiert die Authentizität der Ausführungshistorie
- Absichten-Überwachung – eine dedizierte Schicht prüft Operationen, um unerwünschte Aktionen zu blocken
Das zymi-Framework zeigt, wie Data-Engineering-Konzepte systemische Herausforderungen in der agentenorientierten Programmierung angehen können. Der Wechsel von veränderlichen Zuständen zu einer event-gesourcten Architektur vereinfacht nicht nur die Entwicklung – er schafft neue Möglichkeiten zur Kontrolle und Analyse des Verhaltens von KI-Agenten. Für Technikprofis bedeutet das den Übergang von spröden zu zuverlässigen, nachverfolgbaren Lösungen, in denen jeder Schritt nachweisbar und reproduzierbar ist.
— Editorial Team
Noch keine Kommentare.