promptTakéZadání pro AI, Vstupní instrukce, Dotaz pro modelZákladní
Definice
Prompt je textový (případně obrazový či zvukový) vstup, kterým člověk nebo program zadá jazykovému modelu úkol a kontext pro odpověď. Model prompt převede na tokeny a na jeho základě predikuje pokračování. Kvalita a struktura promptu přímo určuje, jak přesný, konzistentní a použitelný výstup modelu bude.
Nezaměňujte: V příkazové řádce znamená prompt výzvu k zadání příkazu (například znak $ nebo C:\>), zatímco v kontextu umělé inteligence jde o vstupní zadání pro model.
Z čeho se prompt skládá
Prompt se v praxi rozpadá na několik funkčních částí, i když navenek jde o jeden souvislý text. Systémová část definuje roli a pravidla chování modelu, uživatelská část nese konkrétní zadání, k tomu se přidává kontext (vložená dokumentace, data, historie konverzace) a popis požadovaného formátu výstupu. U konverzačních rozhraní se tyto vrstvy posílají jako pole zpráv s rolemi system, user a assistant.
Rozdělení není kosmetické. Modely mají různé role různě váhované a instrukce v systémové zprávě obvykle přežijí déle než pokyn schovaný uprostřed dlouhého uživatelského textu.
Proč na formulaci tak záleží
Jazykový model nerozumí záměru, počítá pravděpodobné pokračování posloupnosti tokenů. Prompt tedy nefunguje jako příkaz, ale jako nastavení podmínek: čím jednoznačněji vymezí doménu, formát a rozsah, tím užší je prostor pravděpodobných pokračování a tím stabilnější je výstup. Vágní zadání nechává modelu příliš mnoho stejně pravděpodobných cest, a proto při opakování dostanete pokaždé jinou odpověď.
Z toho plyne i praktické pravidlo: pozitivní instrukce („odpověz jednou větou“) funguje spolehlivěji než zákaz („nepiš dlouze“), protože zákaz sám o sobě neurčuje, co má model udělat místo toho.
Co prompt stojí a kde končí
Prompt spotřebovává kontextové okno, které je konečné a účtované po tokenech. Delší prompt znamená vyšší cenu a vyšší latenci každého volání, a u velmi dlouhých vstupů navíc klesá spolehlivost práce s informacemi uprostřed textu. Dlouhý kontext proto není náhrada za výběr relevantních dat: většina produkčních aplikací proto vkládá jen vybrané úryvky přes RAG, místo aby modelu nasypala celou databázi.
Prompt také není bezpečnostní hranice. Vše, co v něm stojí, může uživatel nepřímo ovlivnit vloženými daty (prompt injection), takže autorizaci, filtrování a kontrolu vstupů je nutné řešit v aplikační vrstvě, ne instrukcí v textu.
Typické vzory zadání
- Zero-shot: samotná instrukce bez ukázek, vhodné pro běžné úlohy.
- Few-shot: k instrukci se přidá dva až pět příkladů dvojice vstup a výstup, což silně sjednotí formát.
- Řetězec úvah: model dostane pokyn postupovat po krocích, což zlepšuje přesnost u výpočtů a logiky za cenu delšího výstupu.
- Strukturovaný výstup: prompt předepíše JSON schéma, aby výsledek šel strojově zpracovat.
Systematické ladění těchto vzorů, jejich verzování a měření úspěšnosti je náplní disciplíny prompt engineering. U produkčního nasazení se prompt chová jako zdrojový kód: patří do repozitáře, má verze a testovací sadu vstupů, na kterých se ověřuje, že změna formulace nezhoršila výsledky jinde. Bez takové sady se úpravy dělají poslepu, protože jazykový model reaguje i na zdánlivě nevinné přeformulování.
Příklady z praxe
Vágní versus vymezené zadání
Zadání „napiš něco o našem produktu“ vrátí pokaždé jinak dlouhý a jinak laděný text. Doplnění role, publika, délky a formátu zúží prostor odpovědí natolik, že výstup jde použít bez přepisování. Rozdíl je patrný hlavně při opakovaném volání v aplikaci, kde potřebujete konzistenci.
Role: copywriter e-shopu s outdoorovým vybavením. Úkol: napiš popis produktu pro kategorii spacáky. Publikum: začínající turisté. Rozsah: 3 věty, max. 60 slov. Formát: prostý text, bez superlativů a bez emoji. Vstupní data: {nazev}, {teplotni_rozsah}, {hmotnost}Vynucení strojově zpracovatelného výstupu
Při klasifikaci příchozích ticketů potřebuje backend jistotu, že odpověď půjde parsovat. Prompt proto předepíše přesné schéma a povolené hodnoty a zakáže doprovodný text. Zbytek validace stejně patří do kódu: aplikace odpověď ověří proti schématu a při neshodě volání zopakuje.
const messages = [ { role: "system", content: "Klasifikuješ tickety. Vrať POUZE JSON, žádný komentář." }, { role: "user", content: `Schéma: {"kategorie": "fakturace|technicke|reklamace", "urgence": 1-3}\n\nTicket: ${text}` } ];
Časté omyly
- MýtusČím delší prompt, tím lepší odpověď.
- Ve skutečnostiDélka pomáhá jen do chvíle, kdy přidává relevantní kontext. Nadbytečný text zdražuje volání, zvyšuje latenci a rozmělňuje klíčové instrukce, které se u dlouhých vstupů snadno ztratí uprostřed.
- MýtusKdyž do promptu napíšu, že model nesmí ignorovat pravidla, je aplikace zabezpečená.
- Ve skutečnostiPrompt není bezpečnostní hranice. Text vložený z e-mailu, webu nebo dokumentu může instrukce přebít (prompt injection), takže oprávnění a validace musí hlídat aplikační kód, ne věta v zadání.
- MýtusStejný prompt vrátí vždy stejný výstup.
- Ve skutečnostiGenerování je pravděpodobnostní a při nenulové teplotě se výstupy liší. Navíc stejný prompt dává jiné výsledky na jiném modelu nebo jeho novější verzi, proto se prompty testují na sadě vstupů.
Časté dotazy
- Jak dlouhý má prompt být?
- Prompt má být tak dlouhý, aby obsahoval roli, úkol, potřebná data a popis formátu, a nic navíc. Pro běžné úlohy stačí několik vět, u strukturovaného výstupu se vyplatí přidat dva až pět ukázkových párů vstup a výstup. Rozhodující není počet znaků, ale poměr užitečné informace k balastu: každý token se platí a zabírá místo v kontextovém okně. Praktický postup je začít krátce, změřit úspěšnost na sadě reálných vstupů a přidávat jen ty části, které chybu prokazatelně odstraní.
- Proč dostávám na stejný prompt pokaždé jinou odpověď?
- Generování textu je pravděpodobnostní proces. Model v každém kroku vybírá další token z rozdělení pravděpodobností a parametry jako teplota nebo top-p určují, jak moc se odchýlí od nejpravděpodobnější volby. Nastavením teploty blízko nule se výstupy výrazně stabilizují, úplná determinističnost ale zaručená není ani tak, protože roli hrají i detaily infrastruktury a verze modelu. Konzistenci nejvíc pomůže přesně předepsaný formát výstupu, ukázky a validace odpovědi v aplikačním kódu.
- Patří prompt do verzovacího systému?
- Prompt patří do repozitáře stejně jako zdrojový kód, protože se chová jako kód: jeho změna mění chování aplikace a je potřeba ji umět vrátit zpět. Doporučený postup je držet prompty v samostatných souborech nebo šablonách s parametry, označit je verzí a mít testovací sadu reprezentativních vstupů s očekávaným výsledkem. Bez takové sady nelze poznat, jestli přeformulování jedné věty nezhoršilo jiný scénář, protože jazykové modely reagují i na drobné úpravy zadání.
- Co je prompt injection a jak se mu bránit?
- Prompt injection je útok, při kterém se do dat zpracovávaných modelem vloží text, jenž se tváří jako instrukce a přepíše původní zadání. Typicky přijde v e-mailu, na načtené webové stránce nebo v nahraném dokumentu. Obrana spočívá v tom, že aplikace nepovažuje výstup modelu za důvěryhodný: nedává mu přímý přístup k citlivým operacím, validuje odpovědi proti schématu, odděluje data od instrukcí a autorizaci řeší v backendu. Samotná věta v systémové zprávě útok spolehlivě nezastaví.
Zdroje
- Attention Is All You Need(otevře se v novém okně)
- Language Models are Few-Shot Learners(otevře se v novém okně)
- Prompt engineering(otevře se v novém okně)
- OWASP Top 10 for Large Language Model Applications(otevře se v novém okně)
- Hugging Face Documentation(otevře se v novém okně)