Prompt je zadání pro model a rozdíl mezi mizerným a dobrým zadáním bývá větší než rozdíl mezi dvěma modely. Není to zaklínadlo ani sbírka triků: je to jasné zadání práce, jaké bys dal šikovnému, ale zcela nezasvěcenému kolegovi, který od tebe nemůže nic doptat.
Čtyři stavební kameny
Dobrý prompt skoro vždycky obsahuje tohle:
- Úkol, co má vzniknout, jednou větou v rozkazovacím způsobu.
- Kontext, podklady, které k tomu potřebuje (a nic navíc).
- Formát, jak má výstup vypadat, ideálně na příkladu.
- Mantinely, co nedělat a co dělat, když si neví rady.
Z e-mailu níže vytáhni objednané položky. ← úkol
<email>
{{ text e-mailu }} ← kontext
</email>
Vrať JSON: {"polozky":[{"nazev":"…","pocet":1}]} ← formát
Když e-mail objednávku neobsahuje, vrať {"polozky":[]}. ← mantinel
Co funguje
Buď konkrétní v tom, co chceš. „Napiš to lépe“ modelu nic neříká. „Zkrať na tři věty, zachovej čísla, tón formální“ ano.
Ukaž příklad. Jeden dobrý příklad vstupu a výstupu (one-shot) zpravidla porazí odstavec vysvětlování. Dva až tři příklady (few-shot) srovnají i tvrdohlavé formáty.
Vstup: "Objednávám 2x tričko M a jednu čepici"
Výstup: {"polozky":[{"nazev":"tričko M","pocet":2},{"nazev":"čepice","pocet":1}]}
Vstup: "{{ nový e-mail }}"
Výstup:
Dej prostor na postup. U úloh, kde se přemýšlí (matematika, rozhodování, hledání chyby), zlepší kvalitu věta „Nejdřív rozeber, pak odpověz.“ Model si tím vytvoří mezikroky, na kterých staví (proč to funguje, viz predikce).
Řekni, co má dělat, když neví. Bez toho si model vymyslí, protože „nějak odpovědět“ je pro něj přirozenější než mlčet. Věta „Když to v podkladech není, napiš přesně: Nevím.“ umí ušetřit spoustu halucinací.
Předepiš začátek odpovědi. Když odpověď musí být JSON, nech ji začínat {. Formát se tím drží
mnohem spolehlivěji než prosbou.
💡 Proč příklady v promptu vůbec fungují, když se váhy nemění, vysvětluje učení v kontextu.
Co nefunguje
- Zdvořilostní vata. „Prosím, byl bys tak hodný…“ nezlepší výsledek, jen prodraží prompt.
- Vyhrožování a citové apely. „Je to moc důležité, dělám to pro babičku“ je folklor, ne metoda.
- Nekonečné hromadění pravidel. Dvacet zákazů si model po pár odstavcích přestane hlídat. Míň pravidel, zato jasných a zbytek zkontroluj kódem.
- Slepené role. Jedním promptem chtít analýzu, shrnutí i překlad znamená všechno napůl. Radši tři volání za sebou, každé s jedním úkolem.
⚠️ Nedůvěřuj sbírkám „magických promptů“. Co fungovalo na jednom modelu, na jiném nemusí; a co fungovalo loni, může být dnes zbytečné, protože modely dostaly lepší instrukční ladění.
Jak prompt ladit, aby to nebyla loterie
- Posbírej deset až dvacet reálných vstupů včetně těch ošklivých (prázdný text, cizí jazyk, nesmysl).
- Napiš, jak má vypadat správný výstup u každého z nich.
- Změň v promptu jednu věc a projeď celou sadu.
- Porovnej výsledky, ne dojem z jednoho příkladu.
Bez takové sady si budeš myslet, že se prompt zlepšil, protože poslední pokus vyšel hezky. Tomuhle se věnuje celá kapitola o evaluaci.
Šablona, ze které se dá vyjít
[SYSTEM]
Jsi {role}. Odpovídáš {jazyk, tón}.
Pravidla:
- Vycházej výhradně z podkladů v <data>.
- Když odpověď v podkladech není, napiš: "Nevím."
- Formát výstupu: {popis nebo schéma}.
[USER]
Úkol: {jedna věta}
<data>
{podklady}
</data>
Cvičení
- Vezmi prompt „Shrň tenhle článek.“ a přepiš ho tak, aby obsahoval všechny čtyři části z kapitoly. Co všechno jsi musel doplnit?
- Model ti u jedné z deseti odpovědí vrátí text navíc před JSONem. Je to problém promptu, nebo něčeho jiného?
Náčrt řešení: rozbal, až si cvičení zkusíš sám
- Musel jsi doplnit úkol, kontext, formát a mantinely. Například: „Shrň následující článek pro čtenáře, který ho nečetl (kontext). Napiš pět odrážek, každou do 20 slov (formát). Drž se výhradně informací z článku, nic nedoplňuj (mantinely).“ Původní verze zadává jen úkol a všechno ostatní nechává na modelu, takže dostaneš pokaždé jinou délku i styl. Většina „nefunkčních promptů“ jsou ve skutečnosti chybějící mantinely a formát.
- Je to problém způsobu vynucení formátu, ne promptu. Devět z deseti správně znamená, že prompt je dobrý; ta desátá je připomínka, že prompt je prosba, ne záruka. Když formát musí platit vždy, vynuť ho přes JSON schema nebo řízené dekódování a doplň validaci s opakováním. Viz strukturovaný výstup.
Shrnutí
- Prompt = úkol + kontext + formát + mantinely. Nic tajemného.
- Příklady fungují líp než vysvětlování; prostor na postup pomáhá u složitých úloh.
- Vždy řekni, co dělat při nejistotě, jinak si model vymyslí.
- Prompt lze zlepšovat jen proti testovací sadě, jinak se hádáš s dojmem.
Model si u chybějících údajů vymýšlí. Co v promptu chybí?
Explicitní pokyn, co dělat při nejistotě, třeba „když to v podkladech není, napiš Nevím“. Bez něj je pro model přirozenější odpověď dopsat než přiznat, že chybí. Doplnit se to dá i kontrolou výstupu proti podkladům.
Kdy pomůže do promptu přidat příklady (few-shot) a kdy je to jen ztráta tokenů?
Pomůžou, když má výstup držet konkrétní formát nebo styl, který se špatně popisuje slovy. Zbytečné jsou u jednoduchých úloh, kde stačí jasná instrukce, a u úloh, kde stejně vynucuješ formát strojově (JSON schéma, validace).
Jak poznáš, že je nová verze promptu opravdu lepší?
Jen proti testovací sadě reálných vstupů s očekávanými výstupy. Porovnáváš úspěšnost na celé sadě, ne dojem z jednoho pokusu, jinak se necháš zmást náhodou, protože generování není deterministické.
