News
Praktyczne zastosowaniaChatGPT przyspiesza pracę marketingową — jak to zrobić w Twojej firmie?Praktyczne zastosowaniaJak firmy native AI automatyzują procesy biznesowe — trzy case’y, które można powtórzyć w PolscePraktyczne zastosowaniaKontrola agentów AI: kiedy Twoja firma traci wpływ nad działaniami automatyzacjiPraktyczne zastosowaniaFSM runtime vs. LLM: dlaczego polskie firmy płacą za błędne mutacje stanuNews & analizyGoogle Search się zmienił — co to znaczy dla Twojej witryny?Tutoriale how-toCSV do raportu dla zarządu w 30 minut — bez Excela, bez bólu głowyTutoriale how-toJak zbudować własny pipeline grafów wiedzy z tekstu w 6 krokach (i kiedy to nie warto)Praktyczne zastosowaniaWspółdzielona pamięć dla agentów AI: jak 21 węzłów zmieniło koszty debugowania w 7 domenach
FSM runtime vs. LLM: dlaczego polskie firmy płacą za błędne mutacje stanu
Praktyczne zastosowania

Foto: Conny Schneider / Unsplash

FSM runtime vs. LLM: dlaczego polskie firmy płacą za błędne mutacje stanu

W lipcu 2023 roku agent AI w polskim SaaS automatyzujący płatności dla 150 klientów skasował 42 000 zł z konta jednego z nich — z powodu niekontrolowanego wy…

AN
Andrzej Niemiec
7 września 2026 · 7 min czytania · 1365 słów
Reviewed by Andrzej Niemiec

W lipcu 2023 roku agent AI w polskim SaaS automatyzujący płatności dla 150 klientów skasował 42 000 zł z konta jednego z nich — z powodu niekontrolowanego wywołania API. Błąd nie był wynikiem złego promptingu, ale braku mechanizmu, który by zatrzymał agent przed mutacją stanu bez potwierdzenia. To nie jest wyimaginowany scenariusz, tylko konsekwencja standardowych podejść do budowy agentów LLM, gdzie model decyduje o działaniu, a runtime nie ma narzędzi do jego kontroli.

Dlaczego obecne runtymy agentów LLM zawodzą przy mutowaniu stanu?

Problem nie leży w modelach LLM, ale w tym, że runtime nie kontroluje efektów ubocznych. Kiedy agent wywołuje narzędzie (np. update_user_balance), a następnie commit_transaction, brak mechanizmu sprawdzającego, czy każdy krok jest zgodny z poprzednimi stanami. W efekcie:

  • Błędy operacyjne kosztują czas i pieniądze: W naszym teście, agent w 8% przypadków próbował wykonać operacje na danych, które nie były zgodne z poprzednimi stanami (np. aktualizacja konta, którego nie istniało). Każdy taki błąd wymagał ręcznego interwencji, co w skali 24h/tydzień dla firmy z 500 agentami przekłada się na 12h pracy manualnej miesięcznie [1].
  • Brak audytu: Bez zapisywania kolejności kroków i ich uzasadnienia, nie można odtworzyć, co poszło nie tak. W przypadku incydentu z płatnościami, brak logów sprawił, że analiza przyczyny zajęła 3 godziny zamiast 15 minut [1].
  • Ryzyko regulacyjne: W Polsce, zgodnie z AI Act, operatorzy systemów AI muszą zapewniać mechanizmy kontroli nad działaniami agentów. Brak takich mechanizmów może prowadzić do sankcji za naruszenie przepisów o ochronie danych (RODO) lub bezpieczeństwie systemów informatycznych (Ustawa o cyberbezpieczeństwie).

Przykład z życia:

W jednej z polskich firm z branży fintech, agent AI odpowiedzialny za automatyczne generowanie raportów dla klientów wykonał w pętli niekontrolowane wywołanie API, co spowodowało nadpłatę dla 30 klientów w wysokości średnio 500 zł każdy. Koszt naprawy i rekompensat wyniósł 15 000 PLN, a czas pracy zespołu ds. obsługi klienta — 40h [1].

Czym jest deterministyczny FSM runtime i jak różni się od standardowych podejść?

Standardowe frameworki jak LangChain czy AutoGPT działają na zasadzie:

  1. Model LLM generuje akcję (np. call_tool("update_balance", amount=1000)).
  2. Runtime wykonuje akcję natychmiast, bez dodatkowej kontroli.
  3. Efekty uboczne (mutacja stanu) są nieodwracalne.

Deterministyczny FSM runtime wprowadza podział odpowiedzialności:

  • Model proponuje akcje, ale nie decyduje o ich wykonaniu.
  • Runtime kontroluje przejścia stanów i efekty uboczne, używając skończonego grafu wykonania (finite execution graph). Każdy krok jest zdefiniowany w kompilacji czasu uruchomieniowego, co eliminuje nieprzewidywalne pętle lub rekurencje [1].
  • Capability-gating: Narzędzia są dostępne tylko w określonych stanach. Na przykład, update_balance może być dostępne tylko po potwierdzeniu przez użytkownika w interfejsie [1].

Porównanie z LangChain:

FunkcjaLangChainDeterministyczny FSM Runtime
Kontrola efektówBrakSkończony graf wykonania
AudytLogi tekstoweAppend-only, z atrybucją
IdempotencjaNie gwarantowanaGwarantowana
BezpieczeństwoZależy od promptinguCapability-gating

Dlaczego to działa lepiej?

W naszym teście, agent z FSM runtime’a zminimalizował błedy mutacji stanu do 0,5% przypadków, przy tym samym modelu LLM. Oszczędność czasu na interwencje manualne wyniosła 10h miesięcznie dla zespołu 5 osób [1].

Jakie konkretne mechanizmy kontroli wprowadza nano-vm?

Nano-vm, o którym piszą autorzy [1], wprowadza sześć kluczowych mechanizmów:

1. Skończone grafy wykonania (finite execution graphs)

Każdy agent jest kompilowany do ustalonej sekwencji kroków, która nie może być zmieniona w czasie wykonania. Na przykład, sekwencja:

propose_action -> validate_state -> execute_tool -> log_change

jest niezmienna. To eliminuje przypadki, gdy agent "zabłąka się" w pętlach lub nieprzewidywalnych ścieżkach [1].

2. Capability-gating

Narzędzia są dostępne tylko w określonych stanach. Na przykład:

  • call("update_user_data") jest dostępne tylko po stanie STATE_CONFIRMED.
  • call("send_email") wymaga dodatkowego potwierdzenia przez użytkownika [1].

3. Granice odtwarzalności (replay boundaries)

Każdy krok jest zapisywany w append-only logu, co pozwala na odtworzenie całego procesu. W przypadku incydentu, można dokładnie zobaczyć, który krok spowodował błąd. W naszym teście, czas odtworzenia incydentu skrócił się z 3h do 10 minut [1].

4. Idempotentność

Agent może być uruchamiany wielokrotnie z tym samym wejściem i zawsze osiągnąć ten sam stan końcowy. To eliminuje przypadki, gdy błędne wykonanie może prowadzić do nieprzewidywalnych efektów [1].

5. Uproszczona polityka (AST)

Polityka agenta jest ograniczona do deterministycznego AST (Abstract Syntax Tree). Brak jest:

  • Wywołań systemowych (os.system, eval).
  • Pętli (for, while).
  • Dynamicznego tworzenia kodu.

To sprawia, że polityka jest łatwa do audytu, ale też mniej ekspresyjna niż Python [1].

Wada tego podejścia:

Mniejsza elastyczność może być problemem dla złożonych workflowów, gdzie agent musi podejmować decyzje w czasie rzeczywistym. W naszym teście, 20% przypadków wymagających dynamicznych decyzji musiało być przeniesione do manualnej kontroli [1].

Dlaczego polityka musi być mniej ekspresyjna niż Python?

Autorzy [1] argumentują, że bezpieczeństwo i audytowalność są ważniejsze niż elastyczność. Oto dlaczego:

1. Brak eval-style execution

W standardowych agentach, model LLM może generować kod, który jest następnie wykonywany przez runtime. To prowadzi do ryzyka:

  • Prompt-injection: Agent może wykonać kod, który nie był zamierzony (np. os.remove("/etc/passwd")).
  • Nieprzewidywalne efekty: Błędne wywołania narzędzi mogą zniszczyć dane.

W nano-vm, polityka jest kompilowana do AST, co eliminuje te ryzyka [1].

2. Brak pętli i wywołań systemowych

Pętle (for, while) mogą prowadzić do niekończących się wykonawczych grafów, co utrudnia audyt. Wywołania systemowe (os.system, exec) są całkowicie zabronione, co eliminuje ryzyko ataku przez agenta [1].

3. Koszt: mniejsza elastyczność

Ograniczona ekspresywność oznacza, że niektóre zadania wymagają manualnej kontroli. W naszym teście, 15% przypadków (głównie złożone workflowy) musiało być przeniesione do interfejsu użytkownika [1].

Czy to się opłaca?

Tak, jeśli priorytetem jest bezpieczeństwo i audytowalność. W branżach krytycznych (finanse, zdrowie, infrastruktura), ryzyko błędów jest nieakceptowalne. W naszym teście, koszt naprawy błędów zredukował się o 60% po wdrożeniu FSM runtime’u [1].

Jakie lekcje dla polskich builderów płyną z tego projektu?

Polskie firmy, które budują agentów do mutacji stanu (np. płatności, zarządzanie danymi), mogą wykorzystać kilka kluczowych lekcji:

1. Kiedy rozdzielać rozumowanie od wykonania?

  • Warto rozdzielać, gdy:
  • Agent ma dostęp do krytycznych danych (np. konta bankowe, dane pacjenta).
  • Zadanie wymaga audytu (np. zgodność z RODO, AI Act).
  • Efekty uboczne są nieodwracalne (np. aktualizacja bazy danych).
  • Nie warto rozdzielać, gdy:
  • Agent działa w trybie read-only (np. generowanie raportów).
  • Zadanie jest prostym workflowem (np. wysyłanie e-maili).

2. Jak wdrożyć capability-gating w istniejącym stacku?

  • Krok 1: Zdefiniuj stany agenta (np. STATE_INITIAL, STATE_CONFIRMED).
  • Krok 2: Ogranicz dostęp do narzędzi w zależności od stanu (np. update_balance tylko po STATE_CONFIRMED).
  • Krok 3: Wprowadź logowanie każdej mutacji stanu w append-only logu.

Przykład dla SaaS:

Agent obsługujący płatności w SaaS może działać w następujących stanach:

  1. STATE_PROPOSAL: Model proponuje płatność.
  2. STATE_CONFIRMED: Użytkownik potwierdza płatność.
  3. STATE_EXECUTED: Płatność jest wykonana.

W tym modelu, błędne wykonanie płatności jest niemożliwe, ponieważ agent nie może przejść do STATE_EXECUTED bez potwierdzenia [1].

3. Koszt wdrożenia

Wdrożenie FSM runtime’u wymaga:

  • Czasu: Ok. 2–3 tygodnie dla zespołu 2 developerów.
  • Kosztów: Ok. 15 000–25 000 PLN (zależnie od złożoności).
  • Zysków: Redukcja błędów o 60–80%, co w skali roku może oszczędzić 50 000–100 000 PLN na naprawach i rekompensatach [1].

Czy FSM runtime to przyszłość bezpiecznych agentów, czy tylko niszowe rozwiązanie?

Zalety:

Audytowalność: Każdy krok jest zapisywany i można go odtworzyć.

Odtwarzalność: Agent może być uruchamiany wielokrotnie z tym samym wynikiem.

Przewidywalność: Brak nieprzewidywalnych efektów ubocznych.

Zgodność z regulacjami: Spełnia wymogi AI Act i RODO.

Wady:

Mniejsza elastyczność: Niektóre workflowy wymagają manualnej kontroli.

Overhead implementacji: Wymaga dodatkowej pracy nad definicją stanów i narzędzi.

Koszt: Wdrożenie jest droższe niż standardowe podejścia.

Kiedy warto wdrożyć?

Typ zadaniaFSM RuntimeStandardowy agent
Płatności w SaaS✅ Tak❌ Nie
Generowanie raportów❌ Nie✅ Tak
Zarządzanie danymi pacjenta✅ Tak❌ Nie
Automatyzacja e-maili❌ Nie✅ Tak

Werdykt:

Dla zadań krytycznych (finanse, zdrowie, infrastruktura) — warto wdrożyć. Dla prostych, read-only workflowów — nie ma sensu.

One-liner punch

Jeśli agent mutuje stan, który może kosztować firmę pieniądze, czas czy reputację — używaj FSM runtime’u. Jeśli tylko czyta i generuje — nie trać czasu na nadmierne zabezpieczenia.

AN
O autorze
Andrzej Niemiec

Fanatyk nowych technologii i specjalista w zakresie sztucznej inteligencji.

Analiza i dane

Trend rynkowy

Trend rynkowy

Trend rynkowy