DeepSeek přidal k V4.1 Flash šablonu chatu, kterou napsal vývojář z Hugging Face
Tři týdny po vydání má DeepSeek V4.1 Flash šablonu chatu ve formátu Jinja, takže vstup pro model složí i nástroje bez vlastního kódu pro DeepSeek. Na pěti vzorových konverzacích dala v našem měření stejný výsledek jako referenční kód DeepSeeku. Jinak se chová u argumentů nástrojů zapsaných jako řetězec a u úrovně uvažování „medium“, kterou referenční kód odmítá.

Repozitář modelu DeepSeek-V4.1-Flash na Hugging Face má od 1. října 2026 soubor chat_template.jinja. Je to šablona chatu, tedy předpis, podle kterého se zprávy systému, uživatele a modelu i volání nástrojů složí do jediného řetězce na vstupu modelu. Model vyšel 10. září bez ní. DeepSeek místo šablony přibalil adresář encoding s referenčním kódem v Pythonu, stejně jako v červenci u V4-Flash.
Šablonu napsal vývojář z Hugging Face
Návrh změny #68 otevřel 29. září Matthew Carrigan, vývojář z Hugging Face. Popis má jednu větu: šablona odpovídá souboru encoding/encoding.py. O osm minut později přidal druhou úpravu, podle jejího názvu šablona přijímá i parametry enable_thinking a thinking a úroveň uvažování „medium“. Do repozitáře návrh 1. října v 7.56 našeho času začlenil Xingkai Yu z organizace deepseek-ai.
Co se tím mění: knihovna Transformers a nástroje, které čtou šablony Jinja, si vstup pro V4.1 Flash složí samy, bez kopie kódu DeepSeeku. Velké servery si do té doby poradily jinak. vLLM má pro modely V4 a V4.1 vlastní režim tokenizéru (deepseek_v4 a deepseek_v41), který podle popisu návrhu #56520 skládá vstup kodérem bez šablony. Projekt oMLX pro Macy si kodér přibalil jako vlastní soubor. V hlášení #3591 z 11. září uživatelé nejdřív tipovali, že chybu dělá chybějící šablona; příčinu pak jeden z nich našel v té přibalené kopii kodéru.
Pět vzorových konverzací sedí do znaku
K referenčnímu kódu dodal DeepSeek pět vzorových vstupů a k nim očekávané výstupy. Je v nich vícekolový rozhovor, volání nástrojů, režim uvažování, systémová zpráva uprostřed konverzace a obrázky. Šablonu jsme pustili funkcí apply_chat_template z Transformers 5.8.0 nad tokenizérem z repozitáře a výstup porovnali s těmi soubory znak po znaku.
Když jsou argumenty volání nástroje zapsané jako slovník, shoduje se všech pět výstupů. Výchozí úroveň uvažování mají šablona i referenční kód stejnou: bez zadání vloží na začátek „Reasoning Effort: 75“. Jediný rozdíl v ovládání je, že referenční funkce za poslední zprávu uživatele doplní značku pro odpověď asistenta sama. Šablona to udělá až s parametrem add_generation_prompt, což je u šablon běžné a servery ho posílají.
Argumenty zapsané řetězcem dopadnou jinak
Dva z pěti vzorů obsahují volání nástroje a DeepSeek v nich zapisuje argumenty tak, jak je posílá rozhraní OpenAI: jako řetězec s JSON uvnitř. Referenční kód si takový řetězec rozbalí, i když je zabalený dvakrát. Šablona ne. Celý řetězec vloží jako jediný parametr pojmenovaný arguments, takže model v historii konverzace uvidí volání, jaké by sám nenapsal:
<|DSML| parameter name="arguments" string="true">{"location": "Beijing", "unit": "celsius"}</|DSML| parameter>Referenční kód z téhož vstupu udělá dva parametry, location a unit. V našem měření proto bez převodu prošly jen tři vzory z pěti, totiž ty bez volání nástroje.
Dokumentace Transformers na to upozorňuje obecně: rozhraní OpenAI používá řetězec, Transformers čekají slovník a řetězec může vést k chybám nebo podivnému chování modelu. Kdo předává historii z klienta pro OpenAI rovnou do apply_chat_template, musí argumenty převést sám. Šablona chybu nevyhlásí, výstup se jen tiše liší.
Úroveň „medium“ zná jen šablona
Referenční kód přijímá úroveň uvažování jako celé číslo od 1 do 100 nebo jako jedno ze tří slov: low (50), high (75) a max (100). Na „medium“ skončí chybou. Šablona to slovo přijme a vloží do vstupu „Reasoning Effort: 62“. Číslo leží mezi low a high, ale odkud se vzalo, popis změny neuvádí a README ani dokumentace kodéru ho nezmiňují.
Model se tím nerozbije. Karta modelu popisuje úsilí jako plynulou stupnici od 1 do 100, takže 62 je platná hodnota. Kdo ale přejde ze šablony na referenční kód nebo na server s vlastním kodérem, dostane na stejný požadavek chybu místo odpovědi.
README o šabloně pořád nic neví
Hlavní README modelu v oddílu Prompt Encoding k 1. říjnu dál uvádí, že vydání šablonu ve formátu Jinja neobsahuje. Šablonu dostal jen V4.1 Flash; repozitáře V4-Flash-0731, V4-Pro-0813, V4-Pro-DSpark a V4-Flash-Vision-Exp mají pořád jen adresář encoding.
Do kopií šablona sama nedoteče. Hugging Face k 1. říjnu vede 111 modelů, které uvádějí V4.1 Flash jako svůj základ, z toho 93 kvantizací. Soubor chat_template.jinja má osm z nich. Všech osm vzniklo mezi 10. a 17. zářím, tedy dřív než oficiální šablona, a ani jedna z jejich šablon se s ní neshoduje; mají od 5,7 do 37 kB proti 15,3 kB originálu. Kdo si stáhl kvantizaci, má šablonu od jejího autora, nebo žádnou. Velikost KV cache, kterou model v provozu potřebuje, jsme rozebrali v září.