Parametry generování

temperature, top-p, max tokens, stop, seed.

Co se naučíš: Budeš umět nastavit temperature, top-p a stop sekvence podle toho, co po modelu chceš.

5 min čtení + cvičeníNavazuje na:✍️ Prompting

Kromě promptu předáváš modelu i pár čísel, která řídí, jak bude odpovídat: jak moc riskuje při výběru tokenů, kdy přestane a co si nechá zakázat. Je jich jen hrstka a devadesát procent práce odvedou dva z nich, temperature a max_tokens. Zbytek si nastavíš jednou a zapomeneš.


temperature, jak moc model riskuje

Model má pro další token spočítané pravděpodobnosti. temperature určuje, jak věrně se jich drží:

temperature 0     → ber skoro vždy nejpravděpodobnější token
temperature 0.7   → obvyklý kompromis, občas sáhne po méně pravděpodobném
temperature 1.5   → hodně náhody, kreativní až zmatené
ChcešNastav
Extrakci dat, klasifikaci, JSON0 – 0.2
Odpovědi zákazníkům, shrnutí0.3 – 0.7
Nápady, texty, varianty0.8 – 1.2

⚠️ temperature: 0 nezaručí identický výstup při každém běhu. Zaručí jen, že model nebude losovat; drobné rozdíly ve výpočtu a verzích stejně existují. Nikdy nestav test na přesné shodě řetězců.


top_p, druhá páka na tutéž věc

top_p (nucleus sampling) říká: ber jen z tokenů, které dohromady tvoří p procent pravděpodobnosti. top_p = 0.9 odřízne dlouhý chvost nesmyslů.

Praktická rada: měň jen jedno z toho. Většina lidí nechá top_p na 1 a řídí jen temperature. Ladit obojí naráz vede k tomu, že nevíš, co ti co udělalo.


max_tokens, kde se odpověď utne

Strop na délku odpovědi. Dvě věci, které tě zaskočí:

  • Není to instrukce, je to sekáček. Když limit dojde uprostřed věty, dostaneš useknutý text (a u JSONu nevalidní výstup). Stručnost si vyžádej v promptu, max_tokens je jen pojistka.
  • Počítá se do okna. Vstup + výstup musí dohromady projít kontextovým oknem.

Odpověď má vždycky nějaký důvod ukončení (stop, length, tool_use…). Kontroluj ho, useknutá odpověď kvůli limitu je tichá chyba, která ti proteče do dat.


stop sekvence

Text, na kterém má generování skončit. Hodí se, když model rád pokračuje dál, než chceš:

stop: ["\n\nUživatel:", "```"]

Typicky u vlastních formátů nebo když si model začne sám vymýšlet další repliky konverzace.


seed a reprodukovatelnost

Některá API umí seed, stejný seed a stejný vstup by měly dát stejný výstup. Je to nejlepší snaha, ne záruka; při změně verze modelu padá. Používej to na ladění, ne jako základ testů.


🎯 Co se s logits děje krok za krokem a jak se formát vynutí maskováním, popisuje vzorkování a řízené dekódování.

Ostatní, které potkáš

  • frequency_penalty / presence_penalty: trestají opakování slov, respektive témat. Sáhneš po nich, jen když se model zacyklí. Většinou lepší opravit prompt.
  • n: kolik variant odpovědi vygenerovat naráz. Užitečné, když chceš vybrat nejlepší ze tří, ale platíš všechny.
  • response_format / json_schema: vynucení strukturovaného výstupu, viz strukturovaný výstup. Tohle je mnohem spolehlivější než prosba v promptu.

Rozumné výchozí nastavení

{
  "temperature": 0.2,
  "top_p": 1,
  "max_tokens": 1000,
  "response_format": { "type": "json_schema", "…": "…" }
}

Pro aplikaci, která něco extrahuje nebo klasifikuje, tohle sedne v devíti z deseti případů. Kreativní psaní si zvedni na 0.8.


Cvičení

  1. Ke každé úloze přiřaď rozumnou temperature a zdůvodni: extrakce částky z faktury, generování variant reklamního claimu, klasifikace tikety do kategorie, psaní pohádky.
  2. Nastavíš temperature 0 a stejný prompt přesto dvakrát vrátí jinou odpověď. Jak je to možné?
Náčrt řešení: rozbal, až si cvičení zkusíš sám
  1. Extrakce 0, klasifikace 0, claimy 0,9 až 1,0, pohádka 0,8 až 1,0. Pravidlo je jednoduché: když existuje jedna správná odpověď, chceš nulu, protože jakákoli náhoda může jen uškodit. Když chceš rozmanitost a správných odpovědí je mnoho, jdi nahoru. Střední hodnoty kolem 0,5 bývají nejhorší volba: pro data zbytečně riskantní, pro tvorbu zbytečně nudné.
  2. Protože „temperature 0“ neznamená deterministický systém. Výběr tokenu sice přestane být náhodný, ale výpočet samotný ano: dávkování požadavků mění pořadí operací v plovoucí čárce, běh může skončit na jiné kartě a poskytovatel může model tiše aktualizovat. Při shodě dvou logits na několika desetinných místech pak stačí drobná odchylka a vyhraje jiný token. Viz vzorkování.

Shrnutí

  • temperature řídí náhodu; nízká pro data a formáty, vyšší pro tvorbu.
  • top_p dělá podobnou věc, měň jen jedno z nich.
  • max_tokens je sekáček, ne instrukce; vždy kontroluj důvod ukončení.
  • Reprodukovatelnost je nejlepší snaha, nikdy záruka.
Aplikace vytahuje z faktur částky a občas dostaneš pokaždé jiné číslo. Co nastavíš?

Snížíš temperature k nule, aby model nelosoval, a výstup vynutíš strukturovaně (JSON schéma) plus zvalidíš v kódu. Extrakce dat je úloha, kde kreativita jen škodí.

Odpověď se občas utne uprostřed JSONu. Kde je chyba?

Nejspíš došel max_tokens, ten funguje jako tvrdý sekáček, ne jako pokyn ke stručnosti. Zvedni limit, zkrať požadovaný výstup a vždy kontroluj důvod ukončení, aby ti useknutá odpověď neprošla tiše dál.

Proč nestavět automatické testy na tom, že model vrátí přesně stejný text?

Protože ani při temperature: 0 není výstup zaručeně identický, hraje roli implementace výpočtu i verze modelu. Testuj strukturu, přítomnost klíčových údajů nebo významovou shodu, ne doslovný řetězec.