Pydantic AI 2.41 umí vytvářet obrázky přímo, bez běhu agenta
Pydantic AI 2.41 přidala samostatné rozhraní ImageGenerator pro tvorbu a úpravy obrázků. Aplikace už nemusí kvůli obrazovému modelu spouštět agenta; společné volání ale zakrývá rozdíly v rozměrech, vstupních souborech a moderaci.
Pydantic AI vydala 8. září 2026 verzi 2.41.0. Její nová třída ImageGenerator volá samostatné obrazové modely bez toho, aby kvůli nim aplikace rozbíhala agenta. Rozhodnutí, kdy se má obrázek vytvořit, tak zůstává v běžném kódu aplikace.

Vydání se na PyPI objevilo v 04:25 UTC, deset minut po poznámkách k verzi na GitHubu. Balíček pydantic-ai-slim 2.41.0 má licenci MIT, vyžaduje Python 3.10 nebo novější a jeho univerzální wheel měří 1 703 223 bajtů. Právě v něm je nové rozhraní; devítikilobajtový balíček pydantic-ai je jen obal, který si slim variantu přitáhne jako závislost.
Obrazový model už nepotřebuje agenta
Dosavadní schopnost ImageGeneration patří agentovi: jazykový model rozhodne, zda obrazový nástroj zavolá. Přímé rozhraní obrací řízení. Aplikace vytvoří ImageGenerator, předá mu jméno ve tvaru poskytovatel:model a zavolá asynchronní generate() nebo synchronní generate_sync(). Výsledkem je seznam obrázků a zkratka result.image pro první z nich.
Návrh změny číslo 5357 se dostal do hlavní větve 8. září ve 02:45 UTC. Vysvětluje i důvod oddělení: model určený jen pro obrázky se nevejde do konverzační cesty požadavek–odpověď. Nové rozhraní proto stojí vedle agenta podobně jako dřívější pomocník pro vektorové reprezentace textu.
Výstup se nevrací jako dočasná adresa u poskytovatele. Adaptéry převádějí každý výsledek na BinaryImage, tedy na bajty a typ média. To usnadní uložení souboru a zabrání závislosti na životnosti cizí adresy, zároveň ale aplikace musí celý obrázek držet v paměti. K výsledku patří spotřeba, jméno modelu a podrobnosti poskytovatele; metoda pro odhad ceny může skončit chybou, když ceník daný obrazový model nezná.
Patnáct známých jmen není hranice podpory
Seznam známých modelů ve zdrojovém kódu obsahuje patnáct položek: čtyři pro OpenAI, po čtyřech pro rozhraní Gemini a Vertex AI a tři pro xAI. Číslo slouží hlavně našeptávání v editoru. Neznámé jméno se u podporované rodiny předá poskytovateli, takže kvůli každému novému modelu nemusí vyjít další verze knihovny.
Předpony openai:, google:, google-cloud: a xai: vybírají příslušný adaptér. Přes bránu Pydantic AI prochází jen gateway/google:, protože brána obslouží obrazové požadavky přes Vertex AI. Pokus o gateway/openai: nebo gateway/xai: skončí chybou ještě před požadavkem. Starší DALL-E 2 a DALL-E 3 knihovna odmítá také; nové rozhraní je stavěné pro rodinu GPT Image.
Stejný poměr stran neznamená stejné rozměry
Společná nastavení mají jen čtyři položky: přesné rozměry, poměr stran, další hlavičky a další pole těla požadavku. Všechno ostatní zůstává pod názvem konkrétního poskytovatele. Nastavení modelu, generátoru a jednotlivého volání se skládají v tomto pořadí; pozdější hodnota má přednost.
Slovník poměrů stran má dvacet hodnot, ale žádný model neumí všechny stejným způsobem. Poměr 16:9 vede u GPT Image 2 a Grok Imagine na 1 280 × 720 bodů, kdežto Gemini 3.1 Flash vrací 1 376 × 768. Extrémní 1:8 umí z uvedených rodin jen Gemini 3.1, a to jako 352 × 2 928 bodů v úrovni označené 1K. Tabulky v dokumentaci k přímému generování proto nejsou jen seznamem povolených hodnot; jsou překladačem mezi odlišnými rozhraními.
Rozdíl se projeví i při chybě. Gemini dostane poměr stran přímo a o jeho platnosti rozhodne server. OpenAI pole pro poměr nemá, takže Pydantic AI nejdřív vybere odpovídající rozměry. U xAI omezuje výběr výčet hodnot v jeho gRPC rozhraní. Když převod nejde, OpenAI a xAI vrátí chybu z knihovny ještě před účtovaným požadavkem.
Úpravy obrázků mají čtyři různé sady omezení
Parametr images přepne volání na úpravu předlohy. Vstupem může být obrázek v paměti, adresa nebo dříve nahraný soubor, jenže poslední možnost nefunguje všude. OpenAI potřebuje přímo obsah souboru. Gemini ho přijme ze své služby Files API, Vertex AI nikoli a xAI požaduje, aby nahrané soubory stály před adresami a bajtovými obrázky. Obrázek stažený z adresy má v knihovně strop 50 MiB.
Maskovaná úprava, která dovolí měnit jen vybranou část obrazu, ve společném rozhraní chybí. Podle dokumentace ji z trojice poskytovatelů nabízí jen Images API OpenAI; společné nastavení by proto nemělo protějšek u Googlu ani xAI. Uživatel, který masku potřebuje, musí dál volat rozhraní poskytovatele přímo.
Moderace se nesjednotila
Když OpenAI nebo Google obraz odmítne, přímé volání vyhodí ContentFilterError. xAI zachází s dávkou jinak: z částečně odmítnuté dávky vrátí čisté obrázky a indexy odmítnutých pozic uloží do podrobností poskytovatele. Chyba přijde až tehdy, když neprojde ani jeden. Jednotný návratový typ tedy neznamená jednotnou moderaci.
Novinka zkracuje cestu tam, kde o vytvoření obrázku rozhoduje program. Přenositelnost končí u nejjednodušších voleb. Rozměry, předlohy, dávky a odmítnutý obsah se dál řídí možnostmi každého modelu. Kdo mezi poskytovateli přepíná, musí ověřit výsledný obraz a chybové stavy u každého z nich zvlášť.
Zdroje
- Pydantic AI 2.41.0 – datum vydání a seznam změn
- Návrh ImageGenerator #5357 – veřejné rozhraní, adaptéry a testy
- Dokumentace Image Generation – tabulky rozměrů a rozdíly poskytovatelů
- pydantic-ai-slim 2.41.0 na PyPI – vydaný balíček, licence a závislosti
- Gemini image generation a xAI image generation – rozhraní dalších poskytovatelů