Strona główna / Rozdział 5 · Agenci
    Ostatnia zmiana · 5 min czytania

    Użyj z AI

    Wymuszanie formatu

    Structured output w trybie ścisłym nie prosi modelu o format, tylko go wymusza: w każdym kroku sampler zeruje prawdopodobieństwo tokenów, które złamałyby schemat. Dostajesz gwarancję składni, nie poprawności treści.

    Po ludzkuFormularz z polami wyboru zamiast pustej kartki. Nie da się wpisać nic spoza dozwolonych opcji, ale zaznaczyć złą kratkę nadal można. A gdy brakuje kratki na właściwą odpowiedź, zaznaczysz najbliższą.

    Przejdź krok po kroku przez generowanie. Zobacz, które tokeny maska wycina, i zatrzymaj się przy tokenie 4

    Schemat: {"label": "spam" | "ham"}

    Prawdopodobieństwa poglądowe. Przekreślone tokeny łamią schemat i dostają zero, a szanse pozostałych są przeskalowane do 100%.

    Jak działa maskowanie (constrained decoding)

    JSON mode, structured output i tool calling

    Czego gwarancja nie obejmuje

    Sprawdź się

    Jak zagwarantować, że model zwróci JSON zgodny ze schematem, i czego ta gwarancja nie obejmuje?

    W trybie ścisłym schemat kompiluje się do gramatyki, a w każdym kroku sampler zeruje prawdopodobieństwo tokenów, które by ją złamały. JSON pasuje do schematu, chyba że limit długości utnie odpowiedź albo model odmówi, co widać po powodzie zatrzymania. U Anthropic wartości enum mogą też wrócić z inną wielkością liter, więc porównuje się je bez jej rozróżniania. Gwarancja dotyczy składni, nie treści: wartości waliduje kod. Schemat dostaje wyjście awaryjne, bo ciasny enum wpycha model w najbliższą opcję, a pole z uzasadnieniem stoi przed decyzją, bo model pisze od lewej do prawej. Tool calling w trybie strict działa tak samo.

    In English

    In strict mode the schema is compiled into a grammar, and at every step the sampler zeroes out tokens that would break it. The JSON matches the schema unless the length limit cuts it off or the model refuses, which the stop reason shows. At Anthropic, enum values can also come back in a different letter case, so compare them case-insensitively. The guarantee covers syntax, not content: values are validated in code. The schema gets an escape hatch, because a tight enum pushes the model into the nearest option, and the reasoning field goes before the decision, because the model writes left to right. Strict tool calling works the same way.

    Pytania pogłębiające (4)
    Czy wymuszanie formatu może obniżyć jakość?
    Tak, gdy schemat każe podać decyzję przed uzasadnieniem albo nie ma opcji „inne”. Pomaga pole na rozumowanie przed decyzją, myślenie modelu rozumującego, którego maska nie obejmuje, albo dwa kroki: swobodna odpowiedź, potem ekstrakcja.
    JSON mode, structured output czy tool calling: kiedy co?
    Structured output, gdy odpowiedź ma zasilić kod. Tool calling, gdy model ma wybrać akcję spośród kilku, z trybem strict dla argumentów. JSON mode tylko tam, gdzie nie ma trybu ścisłego.
    Jak wymusić format na własnym modelu?
    vLLM i SGLang mają wbudowane silniki constrained decoding (m.in. XGrammar i llguidance): schemat zamienia się w automat, a ten w maskę tokenów na każdym kroku. Narzut na token jest mały, kosztem jest kompilacja każdego nowego schematu. Przy modelu rozumującym uruchom serwer z parserem rozumowania (np. --reasoning-parser w vLLM), inaczej gramatyka obowiązuje od pierwszego tokena i odcina myślenie.
    JSON się parsuje, ale dane są złe. Co dalej?
    Walidacja w kodzie (typy z ograniczeniami, reguły biznesowe) i ponowienie z konkretnym komunikatem błędu, z limitem prób. Powtarzający się błąd to sygnał do zmiany schematu albo promptu, a przypadek trafia do zestawu ewaluacyjnego.

    Źródła

    Zgłoś błąd · Zaproponuj poprawkę