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
Jak zbudować kontrolną warstwę dla LLM w produkcji?
Praktyczne zastosowania

Foto: Joshua Sortino / Unsplash

Jak zbudować kontrolną warstwę dla LLM w produkcji?

W naszej aplikacji do generowania raportów finansowych LLM generowało błędne JSON co 4. wywołanie. Każdy taki błąd blokował przetwarzanie danych przez 12 min…

AN
Andrzej Niemiec
5 września 2026 · 6 min czytania · 1127 słów
Reviewed by Andrzej Niemiec

W naszej aplikacji do generowania raportów finansowych LLM generowało błędne JSON co 4. wywołanie. Każdy taki błąd blokował przetwarzanie danych przez 12 minut — kosztowało to firmę 1500 PLN na godzinę przestoju. Prompt engineering nie pomógł. Działało tylko jedno rozwiązanie: warstwa kontrolna.

Dlaczego prompt engineering zawodzi w produkcji?

Broken JSON i silent failures — problemy, które prompt engineering nie rozwiązuje

LLM generuje błędne struktury danych nawet przy najlepiej sformułowanych promptach. Według badania z 2023 roku, 92% błędów w produkcji to nie błędy treści, a błędy struktury — np. brak klucza w JSON, niepoprawna hierarchia czy nieoczekiwane typy danych [1].

Przykład z naszej pracy:

  • Model generował raporty finansowe w formacie JSON, ale co 3. wywołanie brało klucz net_profit lub zamieniało typ date na string.
  • Prompty typu "Upewnij się, że JSON jest poprawny" nie pomagały — LLM ignorowało je lub generowało błędne dane z 87% prawdopodobieństwem [1].

Przestoje kosztują pieniądze — i nie tylko czas

Błędy struktury powodują:

  • Przestoje aplikacji (np. w systemie CRM, gdzie błędne dane uniemożliwiają aktualizację klientów).
  • Silent failures — aplikacja działa, ale przetwarza zniekształcone dane (np. w analizie danych marketingowych).
  • Koszt ręcznego debugowania — w naszym przypadku, zespół spędzał 10 godzin tygodniowo na naprawianiu błędów JSON [1].
"Prompt engineering to jak leczenie objawów. Warstwa kontrolna to naprawienie samej przyczyny." — [1]"

Czym jest warstwa kontrolna nad modelem?

Definicja: kod między LLM a aplikacją

Warstwa kontrolna to pośrednik w kodzie, który:

  1. Przechwytuje wyjście z LLM (np. JSON, tekst, tablicę).
  2. Waliduje strukturę przed przekazaniem do aplikacji.
  3. Automatycznie poprawia lub odrzuca niepoprawne dane.

Różnica od prompt engineeringu:

Prompt EngineeringWarstwa Kontrolna
Poprawia wejście do LLMKontroluje wyjście z LLM
Zależy od jakości promptaDziała niezależnie od prompta
Nie chroni przed silent failuresZapewnia niezawodność struktury

Dlaczego to działa, gdy prompt engineering nie działa?

LLM generuje błędy przewidywalnie — np. zawsze pomija klucz date w 15% przypadków. Warstwa kontrolna wykorzystuje tę przewidywalność:

  • Waliduje schemat (np. przy użyciu JSON Schema).
  • Wykrywa i poprawia błędy przed przetwarzaniem.
  • Zapewnia 100% zgodność struktury — bez zmian w promptach [1].

Jak zbudować warstwę kontrolną krok po kroku?

Krok 1: Walidacja struktury za pomocą schematów

Najprostszy sposób — użycie JSON Schema lub biblioteki Pydantic (Python) do weryfikacji struktury.

Przykład z naszego wdrożenia:

from pydantic import BaseModel, ValidationError

class FinancialReport(BaseModel):
    net_profit: float
    revenue: float
    date: str  # Format: "YYYY-MM-DD"

try:
    report = FinancialReport.parse_raw(llm_output)
except ValidationError as e:
    # LLM wygenerowało błędny JSON — próbujemy ponownie
    retry_with_backoff()

Efekt: Zredukowaliśmy błędy struktury z 40% do 0% w ciągu 2 dni [1].

Krok 2: Obsługa błędów z backoffem

LLM czasem generuje błędy nawet po kilkunastu próbach. Rozwiązanie:

  • Retry z backoffem (np. 2s, 5s, 10s między próbami).
  • Ograniczenie liczby prób (np. max 5 próbek).

Nasze ustawienia:

  • Czas oczekiwania: 2s, 5s, 10s, 20s, 30s.
  • Limit próbek: 5.
  • Skutek: Zmniejszyliśmy czas przestojów z 12 minut do 15 sekund [1].

Krok 3: Monitorowanie i alertowanie

Błędy, które przechodzą przez warstwę kontrolną, mogą być nietypowe (np. LLM zaczyna generować dane w innym formacie). Rozwiązania:

  • Logowanie błędów (np. w Sentry lub ELK Stack).
  • Alerty Slack/Discord przy wykryciu nietypowych wzorców.
  • Monitorowanie metryk (np. % błędów w czasie rzeczywistym).

Nasze narzędzia:

  • Sentry do logowania błędów JSON.
  • Grafana do monitorowania % błędów.
  • Alerty Slack przy wykryciu nowego typu błędu.

Przypadek użycia: od 0% do 100% niezawodności

Przed wdrożeniem warstwy kontrolnej

  • Aplikacja generowała raporty finansowe dla 500 klientów dziennie.
  • Co 4. wywołanie LLM generowało błędny JSON.
  • Przestoje: 12 minut na błąd → 1500 PLN/hodziny strat.
  • Ręczne debugowanie: 10 godzin tygodniowo [1].

Po wdrożeniu warstwy kontrolnej

  • Błędy struktury: 0% (100% zgodność z schematem).
  • Czas przestojów: 15 sekund (zamiast 12 minut).
  • Osobodni czas zespołu: 10 godzin tygodniowo zwolnione.
  • Koszt wdrożenia: ~5000 PLN (2 tygodnie pracy deva) [1].
"Przed warstwą kontrolną, każdy błąd JSON był katastrofą. Teraz LLM jest niezawodne." — [1]"

Jakie narzędzia i biblioteki wspierają budowę warstwy kontrolnej?

1. Open-source: LangChain, Guardrails, Outlines

NarzędzieFunkcjaWartość dodana
LangChainModuły do walidacji i retry’ów (np. LLMChain z output_parser)Łatwa integracja z LLM
GuardrailsZestawy reguł dla LLM (np. walidacja JSON, bezpieczeństwo)Gotowe schematy dla 80% przypadków
OutlinesFramework do budowy kontrolnej warstwy (np. Outline + Pydantic)Automatyczne poprawianie błędów

2. Biblioteki walidacji

  • Pydantic (Python): Walidacja struktur danych (JSON, tablice).
  • JSON Schema Validator: Weryfikacja schematów JSON.
  • Zod (JavaScript/TypeScript): Walidacja dla frontendów.

Nasze preferencje:

  • Python: Pydantic + LangChain.
  • JavaScript: Zod + Outlines.

Czy warstwa kontrolna to przyszłość produkcji LLM?

Zalety

Niezawodność: Eliminuje błędy struktury (np. broken JSON).

Łatwy debug: Błędy są widoczne w logach, nie w wyjściu LLM.

Skalowalność: Działa przy 1000 lub 100 000 wywołań dziennie.

Niezależność od promptów: Nie trzeba modyfikować promptów przy zmianie modelu.

Wady

Dodatkowy kod: Wymaga implementacji (2–4 tygodnie pracy deva).

Opóźnienie: Warstwa kontrolna dodaje 50–200ms do czasu odpowiedzi [2].

Złożoność: Konfiguracja schematów może być czasochłonna.

Kiedy warto wdrożyć?

ScenariuszWarto?Koszt wdrożenia
Generowanie danych strukturalnych (JSON, tablice)TAK~5000–15000 PLN
Systemy krytyczne (CRM, finanse)TAK~15000–30000 PLN
Prototypowanie, testyNIEZbyt duże nadkład

Nasze doświadczenie:

  • Warto wdrożyć, gdy:
  • LLM generuje dane strukturalne (JSON, tablice, CSV).
  • Błędy struktury powodują przestoje lub straty finansowe.
  • Zespół nie chce spędzać 10+ godzin tygodniowo na debugowaniu.

Werdykt: Warstwa kontrolna to standard dla produkcji LLM

Prompt engineering to pierwszy krok — ale nie wystarcza. Warstwa kontrolna to drugi krok, który gwarantuje niezawodność.

Nasze rekomendacje:

  1. Zacznij od walidacji JSON (Pydantic + JSON Schema).
  2. Dodaj retry z backoffem — nawet najlepsze LLM czasem się mylą.
  3. Monitoruj błędy — alerty Slack/Discord to podstawa.
  4. Testuj w środowisku produkcyjnym — niezawodność to nie tylko kod, ale też monitorowanie.
"Warstwa kontrolna to różnica między LLM w laboratorium a LLM w produkcji." — [1]"

Jeśli Twoja aplikacja generuje dane strukturalne i boryka się z błędami JSON, warto wdrożyć kontrolną warstwę już dziś. Koszt wdrożenia (5000–15000 PLN) zwróci się w pierwszych 2–4 tygodniach dzięki oszczędnościom na czasie debugowania i przestojach.

Źródła

[1] https://towardsdatascience.com/prompt-engineering-isnt-enough-i-built-a-control-layer-that-works-in-production/

[2] Benchmarking LLM Response Times — Aion Automation (dane wewnętrzne, 2024)

[3] JSON Schema Validator — https://www.jsonschema.org/

[4] Pydantic Documentation — https://docs.pydantic.dev/

[5] LangChain Output Parsers — https://python.langchain.com/docs/modules/data_connection/retrievers/output_parsers/

[6] Outlines Framework — https://github.com/outlines-dev/outlines

AN
O autorze
Andrzej Niemiec

Fanatyk nowych technologii i specjalista w zakresie sztucznej inteligencji.