# Deklarativní sestava agentů: jak event sourcing řeší problém mutable state
Současné multiagentní systémy založené na LLM čelí zásadnímu problému: správa stavu prostřednictvím mutable state vede k nestabilitě a složitosti ladění. Řešení bylo nalezeno na nečekaném místě — v přístupech data engineering. Nový framework zymi aplikuje principy event sourcing a deklarativního popisu, známé z dbt, pro budování spolehlivých systémů orientovaných na agenty.
Deklarativní přístup místo imperativního kódu
Tradiční frameworky jako LangGraph vyžadují podrobný popis jak zpracovávat data prostřednictvím měnitelného stavu. To vytváří několik kritických problémů:
- State se stává „skládkou" s nejasnými závislostmi
- Každá změna vyžaduje ruční synchronizaci
- Ladění se mění v rutinu hledání v print-logách
zymi mění paradigmu: popisujete co má být uděláno prostřednictvím YAML konfigurací a engine to zpracování provede sám. Struktura projektu připomíná dbt projekt:
zymi-research/
├── agents/
│ ├── researcher.yml
│ └── writer.yml
├── pipelines/
│ └── research.yml
├── tools/
└── project.yml
Každý agent je definován prostřednictvím deklarativního manifestu. Například výzkumný 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
Nástroje jsou také popsány deklarativně. Implementace web_search prostřednictvím 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}'
Pipeline spojuje agenty do sekvence kroků se závislostmi:
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]
Spuštění pipeline přes CLI:
zymi run research -i topic="Event sourcing in AI"
Event sourcing: od neměnných událostí k reprodukovatelnosti
Klíčový rozdíl zymi oproti LangGraph je odmítnutí mutable state ve prospěch architektury event-sourced. Všechny interakce jsou zaznamenávány jako neměnné události v řetězci s kryptografickou verifikací. Každá událost obsahuje:
- Hash předchozí události (zajišťuje integritu řetězce)
- Data operace
- Časovou značku
- Zdroj události
Tento model přináší tři kritické výhody:
- Plná sledovatelnost — jakýkoli výsledek lze obnovit z řetězce událostí
- Přirozený audit — všechny změny jsou logovány bez dalšího úsilí
- Bezpečnost operací — monitor hodnotí záměry před provedením
Podívejme se na fragment logu provedení:
#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
Zde je vidět, jak systém nejprve generuje záměr provést operaci (intention_emitted) a monitor rozhodne, zda akci povolit (intention_evaluated). Při pokusu o zápis do souboru monitor požádal o potvrzení — mechanismus, který není možný při přímé modifikaci state.
Výhody pro vývojáře a LLM
Deklarativní přístup přináší praktické výhody, zejména v éře generativního AI:
- Snížení složitosti pro LLM — YAML konfigurace jsou jednodušší na generování než imperativní kód
- Přísná schémata validace — JSON Schema zabraňuje chybám konfigurace
- Paralelní provádění — engine automaticky určí nezávislé kroky
- Reprodukovatelnost — jakýkoli běh lze opakovat prostřednictvím event logu
Experimenty ukazují, že generování pipelineů prostřednictvím LLM pro zymi vyžaduje o 30-40 % méně iterací než psaní ekvivalentního kódu na LangGraph. To je způsobeno:
- Nepotřebou ruční správy stavu
- Jasnými hranicemi odpovědnosti mezi komponentami
- Statickou kontrolou konfigurací
Co je důležité
- Deklarativnost místo imperativity — popis co udělat, ne jak, snižuje kognitivní zátěž
- Event sourcing jako základ — neměnné události zajišťují reprodukovatelnost a bezpečnost
- Integrace s vývojem LLM — strukturované konfigurace jsou snadněji generovány a opravovány AI
- Kryptografická integrita — hash-chain zaručuje důvěryhodnost historie provedení
- Monitorování záměrů — samostatná vrstva kontroly operací zabraňuje nežádoucím akcím
Framework zymi demonstruje, jak nápady z data engineering mohou vyřešit systémové problémy v oblasti programování orientovaného na agenty. Přechod od mutable state k event-sourced architektuře nejen zjednodušuje vývoj — vytváří zásadně nové možnosti pro kontrolu a analýzu chování AI agentů. Pro technické specialisty to znamená přechod od křehkých systémů k spolehlivým, sledovatelným řešením, kde každý krok provedení má jasný důkaz a reprodukovatelnost.
— Editorial Team
Zatím žádné komentáře.