Preskočiť na obsah
2.13Pokročilý7 min

Štruktúrované výstupy s JSON Schema: Ako vynútiť spoľahlivé odpovede agentov

Blck Alpaca·
Definition

Štruktúrované výstupy s JSON Schema sú technika, pri ktorej je LLM nútený vydať svoju odpoveď presne podľa zadanej JSON schémy. Namiesto voľného textu model dodá strojovo čitateľný, validovateľný objekt. To robí agentové pipeline spoľahlivými, pretože nadväzujúce programové kroky sa môžu spoľahnúť na garantovanú dátovú štruktúru.

Key Takeaways

  • Štruktúrované výstupy vynucujú pevnú JSON schému a nahrádzajú chybové parsovanie voľného textu garantovanou, validovateľnou dátovou štruktúrou.
  • Existujú tri úrovne garancie: prompt-only (žiadna garancia), JSON-Mode (platný JSON, ale nie vaša schéma) a constrained decoding, resp. Structured Outputs (schéma striktne vynútená).
  • Constrained decoding garantuje syntax a súlad so schémou, ale nie obsahovú správnosť. Odborná validácia a stratégia opakovania (retry) zostávajú povinnosťou.
  • Pri Anthropic Claude prebieha štruktúrovaný výstup cez Tool-Use s JSON schémou, pri OpenAI cez Structured Outputs v strict režime. Oba sú k stavu 2026 produkčne použiteľné.
  • Pre multi-step agentov je to esenciálne: každý nespoľahlivý krok sa cez reťazec znásobuje a spôsobuje prepad end-to-end úspešnosti.
  • Validácia s Pydantic alebo Zod plus bounded retries so spätnou väzbou o chybách je praktický štandard pre robustné pipeline.

Štruktúrované výstupy s JSON Schema sú technika, pri ktorej je LLM nútený vydať svoju odpoveď presne podľa vopred definovanej JSON schémy. Namiesto voľného textu model dodá strojovo čitateľný, validovateľný objekt. To robí agentové pipeline spoľahlivými, pretože následné programové kroky sa môžu spoľahnúť na garantovanú dátovú štruktúru namiesto parsovania náchylného na chyby voľného textu.

  • Čo? Model vydáva JSON podľa pevnej schémy, nie voľný text. Polia, typy a povolené hodnoty sú definované.
  • Prečo? Programy môžu výsledok priamo ďalej spracovávať bez krehkej regex alebo string logiky. To je základ spoľahlivých agentov.
  • Ako? Prostredníctvom funkcií poskytovateľov ako OpenAI Structured Outputs, Anthropic Tool-Use-Schema alebo constrained decoding pri open-weight modeloch, doplnené o validáciu a retry.

Prečo parsovanie voľného textu v agentových pipeline zlyháva

Jazykový model štandardne generuje text pre ľudských čitateľov. To je ideálne pre chatbot, ale pre automatizovanú pipeline je to problém. Akonáhle musí program z odpovede extrahovať hodnotu, napríklad kategóriu, dátum, sumu alebo zoznam, začína krehký proces parsovania. Model raz napíše"Kategória je faktúra.", inokedy"Kategória: faktúra", niekedy pred to pridá vysvetlenie. Každá z týchto variácií zlomí naivnú extrakčnú logiku.

V multi-step agentoch sa to dramaticky zhoršuje, pretože nespoľahlivosť sa cez reťazecnásobí. Príklad výpočtu: Ak má každý jednotlivý krok úspešnosť parsovania 95 percent, end-to-end úspešnosť reťazca z desiatich krokov je len 0,95 na 10, teda približne 60 percent. Ak sa každý krok zlepší štruktúrovanými výstupmi na 99,5 percenta, ten istý reťazec dosiahne približne 95 percent. Z tohto multiplikačného efektu vyplýva centrálna téza tohto článku: Štruktúrované výstupy nie sú komfortná funkcia, ale predpoklad toho, aby sa agentové pipeline vôbec stali produkčne pripravenými.

Tri úrovne záruky v prehľade

Nie každá metóda, ktorá sľubuje JSON, poskytuje rovnakú záruku. Treba rozlišovať tri úrovne a rozdiel rozhoduje o spoľahlivosti.

Prompt-only. Model sa zdvorilo požiada, aby vydal JSON. To často funguje, ale nie vždy. Model môže pridať Markdown codefences, vynechať polia alebo pri neistote predsa len spadnúť späť do plynulého textu. Žiadna záruka.

JSON-Mode. Poskytovateľ garantuje, že výstup je syntakticky platný JSON. To odstráni syntaktické chyby, ale nehovorí nič o štruktúre: polia môžu chýbať, mať nesprávne typy alebo sa objaviť navyše. Čiastočná záruka.

Constrained decoding / Structured Outputs. Tu je proces generovania na úrovni tokenov obmedzený tak, že môžu byť generované len tokeny, ktoré zodpovedajú schéme. Model už nemôže opustiť výsledok konformný so schémou. Povinné polia, typy a povolené enum hodnoty sú garantované. Táto technika je základom OpenAI Structured Outputs (strict režim) a Tool-Use s input_schema pri Anthropic Claude; pri open-weight modeloch preberajú tú istú úlohu knižnice a inference stacky pomocou grammar-constraints.

Metóda, záruka, tradeoff v porovnaní

Metóda

Záruka

Tradeoff

Prompt-only ("odpovedz ako JSON")

Žiadna. Model môže odbočiť alebo dodať plynulý text

Nulové implementačné úsilie, ale nespoľahlivé v produkcii

JSON-Mode

Syntakticky platný JSON, ale nie vaša schéma

Odstráni syntaktické chyby, nie však chýbajúce alebo nesprávne typizované polia

Structured Outputs / strict (OpenAI)

Schéma striktne vynútená (polia, typy, enumy)

Prvá požiadavka na schému môže stáť latenciu pre kompiláciu schémy; limity podmnožiny schémy

Tool-Use s input_schema (Anthropic Claude)

Argumenty nástroja nasledujú JSON-Schema

Odpoveď prichádza ako Tool-Call, nie ako text; voľba nástroja musí byť vynútená

Constrained decoding (Open-Weight, lokálne stacky)

Grammar vynucuje konformitu so schémou na úrovni tokenov

Vyžaduje kontrolu nad inference stackom; zložitosť schémy ovplyvňuje rýchlosť

Schema + validácia + Retry (Pydantic/Zod)

Forma garantovaná plus sémantická kontrola

Více kódu a logiky, zato najrobustnejšia varianta pre kritické pipeline

Rozhodujúce poznanie z tejto tabuľky: Constrained decoding garantujeformu, nieobsah. Model garantovane dodá platný objekt s poľomrechnungsdatum, ale či tam zapísaná hodnota skutočne zodpovedá dátumu na dokumente, nemôže žiadny decoding postup zabezpečiť. Preto zostáva odborná validácia a retry stratégia nevyhnutná.

Realita poskytovateľov stav 2026

Poprední poskytovatelia podporujú štruktúrované výstupy s rôznymi, ale konvergujúcimi prístupmi. Podľa research zdroja (stav 2026) je Claude Opus 4.7 (Pricing 5 US dolárov Input / 25 US dolárov Output na milión tokenov) explicitne pozicionovaný pre agentické workloady a orchestráciu nástrojov; pri Claude beží štruktúrovaný výstup primárne cez Tool-Use s JSON-Schema. OpenAI GPT-5.5 je v tom istom zdroji opísaný ako silno orientovaný na terminálové a agentové workloady. Google Gemini 3.1 Pro (2 US doláre / 12 US dolárov na milión tokenov, stav 2026) dopĺňa pole s veľmi veľkým kontextovým oknom.

Na open-weight strane sú podľa toho istého zdroja (stav 2026) dostupné Mistral Large 3 (Apache 2.0, 0,50 / 1,50 US dolára), DeepSeek V4 ako aj Kimi K2.6, ktoré na agentických a coding benchmarkoch dosahujú blízko k frontier modelom. Praktická výhoda pri open-weight: Kto kontroluje inference stack sám, môže constrained decoding cez grammar-constraints voľne konfigurovať, nezávisle od API poskytovateľa. Tieto modely sú podľa zdroja dodávané cez inference providerov ako Together AI, Fireworks AI, DeepInfra (s Frankfurt regiónmi pre GDPR relevantné workloady) alebo Groq.

Dôležité pre prax: Aj keď väčšina providerov ponúka OpenAI-kompatibilné endpointy, podpora pre štruktúrované výstupy nie je identická naprieč všetkými providermi. Pred rozhodnutím treba overiť, či konkrétny provider skutočne presadzuje strict režim alebo schema-constraints, alebo ponúka len JSON-Mode.

Príklad schémy a retry stratégie

Konkrétny príklad robí princíp hmatateľným. Agent má klasifikovať prichádzajúce support požiadavky a extrahovať najdôležitejšie polia. JSON-Schema (zjednodušená) vyzerá takto:

```json
{
"type": "object",
"properties": {
"kategoria": {
"type": "string",
"enum": ["faktura", "technika", "zmluva", "ostatne"],
"description": "Hlavná kategória požiadavky"
},
"naliehavost": {
"type": "string",
"enum": ["nizka", "stredna", "vysoka"]
},
"cislo_zakaznika": {
"type": ["string", "null"],
"description": "Číslo zákazníka ak je uvedené v texte, inak null"
},
"zhrnutie": {
"type": "string",
"description": "Jedna veta, maximálne 200 znakov"
}
},
"required": ["kategoria", "naliehavost", "cislo_zakaznika", "zhrnutie"],
"additionalProperties": false
}
```

Dve dizajnové rozhodnutia sú tu centrálne. Po prvéEnumy namiesto voľného textu prekategoria analiehavost: Tým je vylúčené, že model vymyslí"Fakturačné oddelenie" alebo"veľmi vysoká", čo by zlomilo následnú logiku smerovania. Po druhéadditionalProperties: false, aby sa neobjavili nechcené dodatočné polia.description-polia pôsobia pritom ako implicitná inštrukcia pre model.

Na túto schému nadväzuje bounded retry stratégia. Pseudokód:

```
pokus = 0
while pokus < 3:
odpoved = llm.call(prompt, schema=support_schema) # štruktúrovaný výstup
objekt = parse_json(odpoved) # forma je garantovaná
chyby = validuj(objekt) # sémantická kontrola
if not chyby:
return objekt
prompt += f"\nOprav: {chyby}" # chybová spätná väzba
pokus += 1
eskaluj_na_cloveka(odpoved) # fallback po 3 pokusoch
```

Podstata: Aj s garantovane schéme-konformnou formou kontrolujevaliduj() sémantiku, napríklad čicislo_zakaznika zodpovedá očakávanému formátu alebo čizhrnutie dodržiava limit dĺžky. Ak to zlyhá, konkrétna chyba ide ako feedback späť do modelu. Tri pokusy sú rozumný horný limit; potom sa eskaluje na človeka, namiesto nekonečného cyklovania a spaľovania nákladov.

Validácia s Pydantic a Zod ako praktický štandard

V praxi nikto nepíše JSON-Schemas ručne. V Pythone sa definujePydantic-model, v TypeScripteZod-schéma; obe generujú JSON-Schema pre LLM požiadavku a priamo preberajú validáciu odpovede. To má dvojitý úžitok: Tá istá definícia riadi generovanie a kontroluje výsledok, čo zabraňuje nekonzistenciám. Chyby typov, chýbajúce povinné polia alebo porušené rozsahy hodnôt sa pri parsovaní okamžite objavia ako jasná chybová správa, ktorá sa dá znovu použiť ako retry feedback.

Pre agentové frameworky a multi-provider routing uvádza research zdroj (stav 2026) nástroje ako LiteLLM a OpenRouter. Umožňujú smerovať tú istú štruktúrovanú požiadavku proti rôznym modelom, čo znižuje závislosť od poskytovateľa a umožňuje fallback na druhý model, ak provider nedodá štruktúrovaný výstup spoľahlivo.

Časté úskalia

  • Príliš zložité schémy. Hlboko vnorené štruktúry s mnohými voliteľnými poľami zvyšujú mieru chýb a latenciu. Tak prísne ako potrebné, tak jednoduché ako možné.
  • Zámena formy s obsahom. Objekt konformný so schémou nie je automaticky odborne správny. Halucinované, ale platne typizované hodnoty sú najnebezpečnejšia trieda chýb, pretože nenápadne preklznú.
  • Neobmedzené retry. Bez horného limitu hrozia nekonečné cykly a explózia nákladov. Vždy bounded retries s eskalačným fallbackom.
  • Ignorovanie rozdielov medzi providermi. Nie každý OpenAI-kompatibilný endpoint skutočne striktne vynucuje schému. Pred spustením otestovať.

Pre agentúry a B2B rozhodovacie osoby

Kto vo Viedni alebo v DACH regióne plánuje produktívneho agenta alebo RAG aplikáciu, mal by štruktúrované výstupy od začiatku zakotviť ako architektonický princíp, nie ako následnú opravu. Presne tu sa rozhoduje, či sa AI projekt stane spoľahlivým nástrojom alebo nepredvídateľným demom. Ako agentúra vo Viedni sprevádza Blck Alpaca DACH podniky pri budovaní robustných RAG a agentových pipeline, od definície schémy cez validáciu a retry logiku až po rozhodnutie o poskytovateľovi a suverenite. Oslovte nás, ak váš RAG alebo agentový projekt potrebuje spoľahlivé, strojovo čitateľné výstupy namiesto hádaného voľného textu.

Často kladené otázky

Aký je rozdiel medzi JSON-Mode a Structured Outputs?
JSON-Mode garantuje len to, že odpoveď je syntakticky platný JSON, ale nie to, že zodpovedá vašej schéme. Polia môžu chýbať, mať nesprávne typy alebo sa objaviť navyše. Structured Outputs (s constrained decoding a strict režimom) navyše vynucujú presnú štruktúru schémy: predpísané polia, typy a povolené enum hodnoty sú garantované. Pre agentové pipeline je skutočne spoľahlivý len druhý variant.
Garantuje constrained decoding správny obsah?
Nie. Constrained decoding garantuje výhradne formu: výstup je platný JSON a zodpovedá schéme. Či sú hodnoty odborne správne, teda či napríklad extrahovaný dátum faktúry je aj skutočným dátumom, tento postup zabezpečiť nedokáže. Preto každá produkčná pipeline potrebuje navyše sémantickú validáciu (kontroly plauzibility, rozsahy hodnôt, cross-checks) a retry logiku.
Ako funguje štruktúrovaný výstup pri Anthropic Claude?
Pri Claude prebieha štruktúrovaný výstup primárne cez Tool-Use. Definujete tool s input_schema vo formáte JSON Schema a poveriete model, aby tento tool vyvolal. Argumenty tool-callu sú potom váš štruktúrovaný objekt. Claude Opus 4.7 je podľa výskumného zdroja (k stavu 2026) explicitne pozicionovaný pre agentické workloady a orchestráciu toolov.
Potrebujem štruktúrované výstupy aj pri jednoduchých aplikáciách?
Akonáhle je výstup LLM ďalej spracovávaný programom namiesto toho, aby ho len čítal človek, oplatí sa schéma. Pri jednotlivom klasifikačnom alebo extrakčnom kroku šetrí parsovacie chyby. Pri viacstupňových agentoch je prakticky nepostrádateľná, pretože sa chybovosť cez reťazec znásobuje. Čisto chatové alebo textotvorné aplikácie pre ľudských čitateľov ju nepotrebujú.
Akú úlohu zohráva návrh schémy pre spoľahlivosť?
Veľkú. Úzke, jednoznačné schémy s enumami namiesto voľného textu, jasnými popismi polí a zmysluplnými povinnými poľami výrazne znižujú chyby. Príliš komplexné, hlboko zanorené alebo nejednoznačné schémy zvyšujú chybovosť a latenciu. Dobrá schéma je tak striktná, ako je potrebné, a tak jednoduchá, ako je možné, a využíva popisy ako implicitnú inštrukciu pre model.

Related Articles

Ísť hlbšie?

Získajte nové analýzy priamo do schránky, alebo sa pozrite, ako tieto poznatky nasadzujeme pre firmy.