JSON Schema → Pydantic
Převeď JSON Schema na kód modelu Pydantic v2 přímo v prohlížeči. Vlož schéma, dostaneš připravenou Python třídu. Užitečné pro LLM workflow se strukturovaným výstupem.
Zadej vstup nahoře, aby ses dostal k výsledku.
K čemu to slouží?
JSON Schema a Pydantic jsou dva hlavní způsoby, jak popsat strukturovaný objekt — JSON Schema je lingua franca pro OpenAPI specifikace, LLM function-calling a strukturované výstupy; Pydantic je de-facto knihovna na validaci dat v Pythonu. Docela často máš jedno a potřebuješ druhé. Tento nástroj dělá konverzi jedním směrem: vlož JSON Schema, dostaneš třídu Pydantic, kterou můžeš vložit do Python souboru.
Kdy to použít
- Strukturované výstupy LLM. OpenAI
response_formati Anthropic tool-use přijímají JSON Schema. Po návrhu a otestování schématu obvykle chceš Pydantic model na validaci a přístup k polím v Pythonu. - Generování OpenAPI klienta. OpenAPI specifikace ti dává JSON Schema pro každé tělo požadavku/odpovědi; tohle je rychlý způsob, jak získat odpovídající Pydantic modely bez stahování plného code generátoru.
- Migrace Schema → Python. Zdědil jsi systém, který používá JSON Schema na validaci a chceš ho přesunout na Pydantic. Vlož každé schéma, dostaneš počáteční třídu, dolaď.
- Rychlé scaffolding. Tvar jsi načrtl v JSONu v notebooku; přeměň ho na skutečný model jedním vložením.
Co nástroj zvládá
type: objectsproperties+required— generuje vnořenou třídu BaseModel.type: arraysitems— generujeList[X].- Primitivy:
string→str,integer→int,number→float,boolean→bool,null→None. formatna stringu:date-time→datetime,email→EmailStr,uri/url→HttpUrl,uuid→UUID.enum→Literal[...];const→Literal[X].oneOf/anyOf→Union[...]; null varianta se složí doOptional[...].type: ["string", "null"]pole →Optional[str].description→Field(..., description=...).default→ výchozí hodnota pole.minimum/maximum/minLength/maxLength→Field(ge=..., le=..., min_length=..., max_length=...).- Názvy polí, které nejsou platné Python identifikátory, se sanitizují a přidává se
alias=na zachování původního jména. Model je konfigurován spopulate_by_name=True. - Vnořené objekty se stávají vnořenými třídami, pojmenované podle pole, pokud není poskytnutý
title. $defs/definitionsse emitují jako samostatné třídy.
Co zatím nezvládá
- Externí
$ref(URL refs). Lokální refs na$defsfungují. patternProperties. Emituje TODO komentář.additionalPropertiesse schématem. Emituje TODO komentář.- Vícebázová
allOfkompozice. JednoprvkovéallOfje rozbalené. - Vlastní validátory na
pattern— pole vypustí, regex přeskočí. Po vložení přidej@field_validator, pokud potřebuješ.
Časté pasti
- Pydantic v2 vs v1. Výchozí výstup je v2 (aktuální). Přepni přes dropdown, pokud jsi na v1 kódové bázi.
- Výstup je výchozí bod, ne poslední slovo. Zkontroluj. Zvláště pro složité unie, rekurzivní typy a cokoli s vlastními validačními pravidly.
- Jména jsou důležitá. Pole „Root class name" kontroluje název třídy nejvyšší úrovně. Podtřídy jsou pojmenované podle jejich
titlevlastnosti, pokud je přítomna, jinak podle pole, které je obsahuje. - Required vs Optional ve v2. Povinné pole bez defaultu používá
.... Optional pole mají defaultNonea jsou zabalené vOptional[T].