Chceš vědět, jak získat JSON z AI spolehlivě? Praktický návod na structured outputs a function calling u OpenAI i Claude – bez lámání automatizace.
Kompletní návod
Jak získat JSON z AI: structured outputs v praxi
Postavíš automatizaci, která má z e-mailu vytáhnout jméno klienta, částku a termín — a výsledek poslat rovnou do n8n nebo do tabulky. Do promptu napíšeš „vrať mi JSON". Model ti odpoví. Jenže jednou přidá „Tady je výsledek:", podruhé zabalí data do bloku ```json, potřetí zapomene čárku nebo vymyslí jiné jméno pole. Tvůj parser spadne a celá linka se zastaví. Pokud řešíš, jak získat JSON z AI tak, aby to fungovalo při každém běhu, mám pro tebe dobrou zprávu: v roce 2026 už na to existuje spolehlivá cesta a není ní preciznější regulární výraz.
V tomto návodu ti ukážu tři způsoby, jak z modelu dostat strukturovaná data (JSON mode, function calling a structured outputs), kde se který hodí, a konkrétní postup nasazení structured outputs u OpenAI i Claude. Nakonec si to ukážeme na reálném příkladu — extrakci dat z e-mailu přímo do automatizace.
Proč prompt „vrať mi JSON" nestačí a tvá automatizace padá
Nejčastější chyba je domnívat se, že jde o problém špatného promptu. Není. Jazykové modely jsou pravděpodobnostní — generují tokeny, které se statisticky hodí. Když napíšeš „vrať JSON", model většinou poslechne, ale nikdy na 100 %. Občas přidá zdvořilou větu, občas markdownové opodmínkování, občas uvozovky, které se špatně escapují, a u složitějších dat ti klidně přejmenuje pole nebo přidá pole navíc.
Důsledek: když AI řetězíš do business procesu — třeba do lead nurturingu přes Make nebo do self-hosted pipeline — jeden rozbitý běh zablokuje celou linku. Běžná praxe je pak napsat try/catch, doplnit regex na odstranění markdownu, přidat retry a doufat. Funguje to, dokud objem nezroste.
Skutečná oprava není lepší prompt ani přísnější parser. Je to omezit model už při dekódování tak, aby neplatný výstup prostě nemohl vygenerovat. Přesně to dělají structured outputs.
Tři cesty k datům z AI: JSON mode, function calling a structured outputs
Než se pustíme do krokování, pojďme si rozebrat tři přístupy, které se často pletou. Podle srovnání z roku 2026 se liší hlavně tím, jak moc tě zaručí, že výstup bude odpovídat tvé schématu (Build MVP Fast, 2026).
JSON mode — model odpoví platným JSONem, ale negarantuje konkrétní strukturu. Pole se můžou jmenovat pokaždé jinak nebo chybět. Hodí se, když ti jde jen o to, aby to šlo naparsovat, a nepotřebuješ pevná pole.
Function calling (tool use) — nadefinuješ nástroj (funkci) s JSON schématem parametrů a model vyplní argumenty. Historicky takhle strukturovaná data řešil Claude a pořád to je jeho přirozená cesta. Schéma se vynucuje už definicí nástroje.
Structured outputs (strict) — model se dekóduje přímo proti tvému JSON schématu (tzv. constrained decoding). Výsledek je garantovaně validní a pole-pole odpovídá schématu. U OpenAI zapneš response_format s json_schema a strict: true, u Claude nově output_config.format případně přes tool use (OpenAI, 2026; Anthropic, 2026).
Rozdíl v spolehlivosti je drastický. Zatímco prompt-based JSON zvládne správný formát zhruba v 70–90 % případů (a zbytek ti rozbije pipeline), strict structured outputs dosahují v podstatě 100% shody se schématem (Technspire, 2026). To není marketingový slib — je to matematický důsledek toho, že model při dekódování dostává povolené jen ty tokeny, které vedou k validnímu JSONu.
Kdy co zvolit? Pravidlo je jednoduché. Pokud data z AI nikam dál neposíláš a jen si je přečteš, bohatě stačí obyčejný text. Jakmile ale výstup řetězíš do dalšího kroku automatizace — e-mail do CRM, recenze do dashboardu, lead do databáze — vždy sáhni po structured outputs. Function calling si nech na situace, kdy má model nejen vrátit data, ale rovnou rozhodnout, kterou akci spustit. A JSON mode ber jako kompromis, když tvůj nástroj strict mód nepodporuje nebo když strukturu opravdu nepotřebuješ fixovat.
Jak získat JSON z AI krok za krokem: structured outputs
Tady je konkrétní postup. Bude ti známý, ať už voláš OpenAI, Claude nebo Gemini — liší se jen názvy parametrů, myšlenka je stejná.
1. Nadefinuj JSON schéma toho, co chceš
Nejprve popiš data, která potřebuješ, jako JSON Schema. Buď konkrétní: udej typy polí, co je povinné (required), a kde to dává smysl použij enum pro omezené množiny hodnot. Například pro extrakci leadu z e-mailu:
Klíčový je "additionalProperties": false — říká modelu, že nesmí vymyslet žádná pole navíc. Právě tohle chce strict mód vyžadovat.
2. Zapni striktní mód (constrained decoding)
Teď schéma připoj k volání modelu. U OpenAI použiješ response_format s typem json_schema a strict: true. U Claude nadefinuješ nástroj s input_schema (klasický tool use) nebo použiješ novější output_config.format — obojí zapne constrained decoding (Anthropic, 2026). U Gemini nastavíš responseSchema a responseMimeType: "application/json".
V tento moment se mění způsob, jakým model generuje výstup. Už nevolí libovolné tokeny — volí jen ty, které vedou k JSONu odpovídajícímu tvému schématu. Proto výsledkem nemůže být „Tady je JSON:" s prose okolo. Prostě dostaneš objekt.
3. Naparsovat a napojit na automatizaci
Protože je výstup garantovaně validní, parsování se smrskne na jedno json.loads (nebo JSON.parse). Žádný odstraňovač markdownu, žádné zachraňování chybějících čárek. Pole rovnou pošleš dál — do databáze, do n8n pipeline v produkci, do CRM nebo do Google Sheets.
Když AI potřebuje nejen vrátit data, ale i zavolat další nástroje (dohledat v databázi, odeslat e-mail), kombinuj structured outputs s MCP servery — schéma určuje, jak vypadá výstup, tool use určuje, co se s ním děje dál.
4. Retry jen pro obsah, ne pro formát
Tím, že formát padá prakticky na nulu, se retry logika přesune z „oprav rozbitý JSON" na „oprav obsah". Model sice vrátí validní objekt, ale třeba špatně odhadne prioritu nebo datum. To řešíš klasicky — validačními pravidly na obsah, ne na syntaxi. Šetří to tokeny, nervy i peníze za API, protože odpadá spousta zbytečných retry kol.
Praktický příklad: extrakce dat z e-mailu do n8n
Ať to není jen teorie, tady je stejný úkol dvěma způsoby. Máš e-mail od klienta a chceš z něj dostat strukturovaný záznam do n8n.
Předtím (prompt + regex): Do promptu napíšeš „vrať JSON s poli jmeno, castka, termin". Model odpoví „Jistě, tady je výsledek: json { ... } ". V n8n si napíšeš regex na vytažení bloku, ošetříš výjimky, nastavíš retry. Přesto ti průměrně zhruba 10–15 % běhů spadne na okrajových případech — chybějící čárka, jiný formát data, česká diakritika v názvu pole. Ruční opravy se stanou rutinou.
Potom (structured outputs): Nadefinuješ schéma jako v kroku 1, zapneš strict mód. Model vrátí čistý objekt odpovídající schématu. V n8n použiješ uzel AI Agent nebo Structured Output Parser, který schéma zná vizuálně — žádný kód na parsování. Formátových selhání je nula, ty pár případů, kdy se opravuje, jsou čistě obsahové (např. špatně vyčtená částka). Celá linka začne fungovat spolehlivě i při desetinásobném objemu.
Tip z praxe: drž schémata malá a účelová. Čím víc polí model musí vyplnit, tím spíš u obsahu tápe. Pro omezené hodnoty jako priorita nebo stav vždy použij enum. A pokud voláš často se stejným schématem, zapni prompt caching — schéma se uloží do mezipaměti a výrazně se sníží náklady na vstupní tokeny.
Časté otázky
Funguje structured outputs u Claude i OpenAI?
Ano. U OpenAI zapneš response_format s json_schema a strict: true. U Claude použiješ buď klasický tool use (nástroj se schématem), nebo novější output_config.format — obojí aktivuje constrained decoding. U Gemini nastavíš responseSchema. Všechny tři v roce 2026 garantují shodu se schématem.
Jaký je rozdíl mezi JSON mode a structured outputs?
JSON mode ti zaručí, že dostaneš platný JSON, ale nepovinnuje model konkrétní struktuře — pole se můžou jmenovat pokaždé jinak. Structured outputs garantují, že výstup bude pole-pole odpovídat tvému schématu, protože se model dekóduje přímo proti němu.
Musím přesto ošetřovat výjimky?
Formátové výjimky v podstatě zmizí. Pořád ale validuj obsah — třeba rozsahy dat, správné hodnoty enumu nebo to, jestli model správně pochopil částku. Retry logika se přesune z opravy syntaxe na opravu obsahu.
Stojí structured outputs víc?
Náklady většinou nejsou o moc vyšší — a protože se schéma dá cachovat (prompt caching), bývá výsledek často levnější. Výhra ve spolehlivosti běžně převýší jakoukoli cenovou diferenci, obzvlášť u pipeline s vyšším objemem. Pro srovnání cen jednotlivých modelů máme přehled tarifů.
Dá se to použít v n8n bez kódování?
Ano. n8n má uzly AI Agent a Structured Output Parser, kam schéma připojíš vizuálně — nemusíš psát žádné parsování ručně. Podobně to jde v Make i v dalších automatizačních nástrojích.
Shrnutí: přestaň parsovat, začni schémovat
Structured outputs posouvají AI z „odpovídá prózou, kterou snad dostaneš do dat" na „vrací data, kterým tvé automatizace můžou věřit". Recept je krátký: nadefinuj JSON schéma, zapni strict mód a přestaň zachraňovat výstup regulárními výrazy. Výsledek je pipeline, která běží spolehlivě i tehdy, když si model vymyslí vtipnou hlavičku e-mailu.
Nejjednodušší začátek: vyber jednu automatizaci, která ti dnes občas padá na rozbitém výstupu z AI, a přepiš ji se schématem. Rozdíl uvidíš během párka běhů. A jakmile ti tohle sedí, máš solidní základ pro složitější věci — orchestraci týmu agentů nebo analýzu dat v ChatGPT bez kódu.
Open-source nástroj QM (yc-software) ti umožní nasadit AI agenta, kterého používá celá firma najednou. Každý zaměstnanec má vlastní prostor, ale agent sdílí paměť, skills i Slack. Návod, jak ho rozchodit, co umí a kdy je zbytečný.
Aktuální srovnání Make.com a Zapier v roce 2026. Ceny včetně nového Zapier per-seat modelu, funkce, české integrace a jasné doporučení pro váš business.