Powrót do strony głównej

Event sourcing dla agentów: deklaratywne budowanie systemów AI

Artykuł omawia zastosowanie event sourcing w systemach wieloagentowych na przykładzie frameworku zymi. Pokazano, jak deklaratywne podejście rozwiązuje problem mutable state, zapewnia reprodukowalność i upraszcza integrację z LLM. Przedstawiono przykłady konfiguracji i architektoniczne zalety.

Dlaczego mutable state zabija Twoje systemy agentowe (i jak to naprawić)
Advertisement 728x90

# Deklaratywna konstrukcja agentów: jak event sourcing rozwiązuje problem mutable state

Współczesne systemy multiagentowe oparte na LLM borykają się z fundamentalnym problemem: zarządzanie stanem poprzez mutable state prowadzi do niestabilności i trudności w debugowaniu. Rozwiązanie znaleziono w nieoczekiwanym miejscu — w podejściach data engineering. Nowy framework zymi stosuje zasady event sourcing i deklaratywnego opisu, znane z dbt, do budowania niezawodnych systemów zorientowanych na agentów.

Deklaratywne podejście zamiast imperatywnego kodu

Tradycyjne frameworki takie jak LangGraph wymagają szczegółowego opisu jak przetwarzać dane poprzez zmienny stan. To powoduje kilka krytycznych problemów:

  • State staje się „śmietnikiem” z nieoczywistymi zależnościami
  • Każda zmiana wymaga ręcznej synchronizacji
  • Debugowanie przeradza się w rutynę przeszukiwania print-logów

zymi zmienia paradygmat: opisujesz co ma być zrobione za pomocą konfiguracji YAML, a silnik samodzielnie zarządza wykonaniem. Struktura projektu przypomina projekt dbt:

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

Każdy agent jest definiowany poprzez deklaratywny manifest. Na przykład agent badawczy:

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

Narzędzia są również opisywane deklaratywnie. Implementacja web_search poprzez 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 łączy agentów w sekwencję kroków z zależnościami:

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]

Uruchomienie pipeline'u poprzez CLI:

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

Event sourcing: od niemutowalnych zdarzeń do odtwarzalności

Kluczowa różnica zymi od LangGraph to rezygnacja z mutable state na rzecz architektury event-sourced. Wszystkie interakcje są zapisywane jako niemutowalne zdarzenia w łańcuchu z kryptograficzną weryfikacją. Każde zdarzenie zawiera:

  • Hash poprzedniego zdarzenia (zapewnia integralność łańcucha)
  • Dane operacji
  • Znacznik czasu
  • Źródło zdarzenia

Ta model daje trzy krytyczne zalety:

Google AdInline article slot
  • Pełna śledzalność — każdy wynik można odtworzyć z łańcucha zdarzeń
  • Naturalny audyt — wszystkie zmiany są logowane bez dodatkowych wysiłków
  • Bezpieczeństwo operacji — monitor ocenia intencje przed wykonaniem

Rozważmy fragment logu wykonania:

#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

Widzimy tu, jak system najpierw generuje intencję wykonania operacji (intention_emitted), a monitor decyduje, czy zatwierdzić działanie (intention_evaluated). Przy próbie zapisu do pliku monitor zażądał potwierdzenia — mechanizm niemożliwy przy bezpośredniej modyfikacji state.

Zalety dla programistów i LLM

Deklaratywne podejście daje praktyczne korzyści, zwłaszcza w erze generatywnego AI:

  • Zmniejszenie złożoności dla LLM — konfiguracje YAML są prostsze do generowania niż kod imperatywny
  • Ścisła walidacja schematu — JSON Schema zapobiega błędom konfiguracji
  • Równoległe wykonanie — silnik automatycznie wykrywa niezależne kroki
  • Odtwarzalność — każdy uruchomienie można powtórzyć poprzez event log

Eksperymenty pokazują, że generowanie pipeline'ów poprzez LLM dla zymi wymaga o 30-40% mniej iteracji niż pisanie równoważnego kodu w LangGraph. Wynika to z:

  • Brak konieczności ręcznego zarządzania stanem
  • Wyraźnych granic odpowiedzialności między komponentami
  • Statycznej weryfikacji konfiguracji

Co jest ważne

  • Deklaratywność zamiast imperatywności — opis co trzeba zrobić, a nie jak, zmniejsza obciążenie poznawcze
  • Event sourcing jako podstawa — niemutowalne zdarzenia zapewniają odtwarzalność i bezpieczeństwo
  • Integracja z rozwojem LLM — strukturyzowane konfiguracje są łatwiejsze do generowania i korygowania przez AI
  • Kryptograficzna integralność — hash-chain gwarantuje wiarygodność historii wykonania
  • Monitorowanie intencji — oddzielna warstwa weryfikacji operacji zapobiega niepożądanym działaniom

Framework zymi pokazuje, jak idee z data engineering mogą rozwiązać systemowe problemy w dziedzinie programowania zorientowanego na agentów. Przejście od mutable state do architektury event-sourced nie tylko upraszcza rozwój — tworzy zasadniczo nowe możliwości kontroli i analizy zachowania agentów AI. Dla specjalistów technicznych oznacza to przejście od kruchych systemów do niezawodnych, śledzalnych rozwiązań, gdzie każdy krok wykonania ma jasny dowód i odtwarzalność.

— Editorial Team

Advertisement 728x90

Czytaj dalej