Nowy benchmark 12 interfejsów API dużych modeli językowych (LLM) wykazuje, że niemal każdy serwis zwraca JSON zgodny z żądanym schematem, ale znaczna mniejszość generuje wartości błędne pod względem faktów. Koszt tokenów dla tego samego schematu waha się od kilkunastu do niemal pięciu tysięcy. Deweloperzy budujący potoki ekstrakcji (extraction pipelines) lub agentów opartych na danych nie mogą już ufać, że „zgodność ze schematem” jest wiarygodnym wskaźnikiem „poprawności”.

Dlaczego ten test jest ważny

Dostawcy API promują „strukturyzowany output” (structured output) jako sposób na wyeliminowanie błędów parsowania. Obietnica jest prosta: podaj modelowi schemat JSON, a on wypełni pola bez konieczności pisania podatnego na błędy kodu post-processingu. W praktyce wiele systemów produkcyjnych polega już na tej gwarancji, aby unikać awarii i utrzymywać czystość późniejszych potoków analitycznych. Gdy gwarancja okazuje się tylko połowicznie prawdziwa, błędy pojawiają się po cichu, a obliczenia kosztów oparte na zużyciu tokenów drastycznie się rozjeżdżają.

Dobre wieści: schematy są teraz w większości egzekwowane

  • Większość modeli w zestawie testowym wygenerowała JSON, który przeszedł rygorystyczną walidację.
  • Constrained decoding – modele, które blokują dekoder zgodnie ze schematem, nie mogą emitować przypadkowych znaków, dzięki czemu błędnie sformatowane ładunki (payloads) praktycznie przestały istnieć.
  • Wskaźniki błędów parsowania – deweloperzy nie muszą już otaczać każdego wywołania blokami try-catch w celu obsługi błędów składni JSON.

Złe wieści: poprawność strukturalna ≠ dokładność

Poprawny kształt nie gwarantuje poprawnej wartości. Cztery z dwunastu modeli — DeepSeek V4, Qwen oraz GLM-5.2 (dwa ostatnie występują w raporcie pod dwiema różnymi nazwami) — wygenerowały idealnie sformatowany JSON, który zawierał błędne liczby, gdy włączony był tryb „myślenia” (chain-of-thought).

  • W modelu Qwen prosta ekstrakcja arytmetyczna zmieniła się z 1 poprawnej odpowiedzi na 16 przy włączonym rozumowaniu na 8 poprawnych na 8 po wyłączeniu rozumowania.
  • DeepSeek V4 Pro wykazał podobną zmianę: dokładność ekstrakcji wzrosła z 1/8 do 7/8, gdy model przestał próbować wyjaśniać swoje kroki.

Dodatkowy krok rozumowania zakłóca działanie ograniczonego dekodera, pozwalając modelowi na halucynacje przy jednoczesnym zachowaniu poprawności zewnętrznych nawiasów.

Brudna strona: niespodzianki w kosztach tokenów i ignorowane parametry

  • Format odpowiedzi Claude'a – przy dostępie przez punkty końcowe (endpoints) kompatybilne z OpenAI, Claude całkowicie ignorował flagę response_format, zwracając 0% wyników zgodnych ze schematem. Model wspiera wywołania strukturyzowane, ale tylko poprzez natywny interfejs tool-call firmy Anthropic.
  • Inflacja tokenów schematu – skromny schemat o rozmiarze 12 KB kosztuje 30 tokenów na DeepSeek, podczas gdy ten sam ładunek pochłonął 4 959 tokenów na Claude.
  • Niespójności w rozliczeniach – niektórzy dostawcy wliczają schemat do promptu, naliczając opłaty za każdy zużyty przez niego token; inni traktują go jako bezpłatną nakładkę. W dużej skali rachunek za schemat może przewyższyć koszt wygenerowanej przez model treści.

Co deweloperzy powinni zrobić teraz

  1. Waliduj wartości, a nie tylko kształty – walidator schematu nie wyłapie błędnej odpowiedzi liczbowej, nawet jeśli pasuje ona do oczekiwanego typu. Dodaj sprawdzenia specyficzne dla domeny (zakres, jednostka, spójność między polami).
  2. Wyłącz chain-of-thought podczas ekstrakcji w modelach DeepSeek, Qwen i GLM, gdy potrzebujesz niezawodnego wypełniania pól. Dodatkowy krok rozumowania jest opcjonalny, a nie wymagany do zachowania poprawności.
  3. Audytuj zużycie tokenów – loguj, ile tokenów zużywa każde zapytanie, wliczając w to część ze schematem, i porównuj rachunki u różnych dostawców przed podjęciem decyzji o wdrożeniach na dużą skalę.
  4. Testuj przenośność – schemat, który działa w OpenAI, może zostać po cichu zignorowany w Gemini lub Claude. Przeprowadź szybki test poprawności (sanity check) na każdej docelowej platformie przed wdrożeniem kodu.

Kontrargumenty dostawców

Niektórzy dostawcy argumentują, że tryb „myślenia” jest wyborem dewelopera, przeznaczonym dla zadań, w których wyjaśnienie jest ważniejsze niż surowa dokładność ekstrakcji. Claude ignoruje flagę response_format i sugeruje zamiast tego użycie natywnych wywołań narzędzi (tool calls) Anthropic. Wyjaśnienia te są technicznie poprawne, ale przerzucają ciężar na deweloperów, którzy muszą wiedzieć, który tryb wybrać i jak zaplanować budżet na ukryte opłaty za tokeny.

Podsumowanie

Schemat JSON nie jest już siatką bezpieczeństwa; to tylko kształt. Upewnij się, że dane wewnątrz odpowiadają rzeczywistości, pilnuj ukrytych kosztów tokenów i pamiętaj, że „myślenie” modelu może zepsuć nawet najlepiej wyglądający wynik.