Prompt engineering: definícia, ciele a kontext
Prompt engineering je disciplína navrhovania vstupov pre generatívne modely (najmä veľké jazykové modely, LLM) s cieľom maximalizovať kvalitu, konzistentnosť a bezpečnosť výstupov. Zahŕňa pochopenie obmedzení modelov (tokenizácia, kontextové okno, stochastika), kompozíciu inštrukcií, kontrolu formátovania výstupov, využitie nástrojov (retrieval, funkčné volania) a systematické testovanie. Výsledkom je spoľahlivý systém, v ktorom prompt nie je len text, ale časť architektúry.
Mentalný model LLM: ako číta prompt
- Pravdepodobnostná predikcia tokenov: model generuje ďalší token na základe predchádzajúcich. Z konštrukcie nepozná pravdu, ale vzory a pravdepodobnosti.
- Kontextové okno: len obsah v okne (system, developer, user, história, dokumenty) môže ovplyvniť odpoveď. Staršie časti môžu byť skrátené.
- Inštrukčná hierarchia: spravidla platí priorita system > developer > user > content. Konflikty riešiť explicitne.
- Tokenizácia a dĺžka: počet tokenov ovplyvňuje cenu, latenciu a riziko orezania kontextu; krátke, presné formulácie sú výhodou.
Štruktúra dobrého promptu
- Úloha: čo má model spraviť (napr. zhrň, klasifikuj, napíš kód).
- Kontext: doména, publikum, účel, obmedzenia.
- Formát výstupu: požadovaná štruktúra (JSON schema, tabuľka, Markdown/HTML, kódové bloky, sekcie).
- Príklady (few-shot): demonštrácie vstup→výstup s variáciami a boundary prípadmi.
- Hodnotiace kritériá: čo je dobré; krátke checklisty/heuristiky.
- Obmedzenia a zákazy: čo nesmie model robiť (napr. špekulovať mimo zdrojov, vymýšľať citácie).
Promptovacie vzory (patterns) a kedy ich použiť
- Role prompting: priraď modelu úlohu (napr. Si daňový auditor…). Zvyšuje konzistenciu tónu a detailu.
- Few-shot demonstrácie: 2–5 kvalitných príkladov uľahčí generalizáciu pri špecifickom formáte alebo štýle.
- Decompose & constrain: rozdeľ zložitú úlohu na kroky a stanov výstup každého kroku.
- Retrieve & cite: vyžaduj prácu len so zadanými zdrojmi a explicitné citácie; minimalizuje halucinácie.
- Self-check / critique: nech model skontroluje vlastný výstup voči kritériám (over checklist, nájdi chyby).
- Function/tool calling: definuj JSON špecifikáciu nástroja; model navrhne volanie, runtime dodá fakty.
- Template prompting: opakovane použiteľné šablóny s premennými (napr. {{audience}}, {{tone}}, {{schema}}).
Formátová kontrola: od voľného textu po strojovo čitateľné výstupy
Pre integráciu do systémov je kľúčová deterministická štruktúra:
- JSON schema: definuj presný tvar, typy a enumy; vyžiadaj len JSON bez komentárov.
- Validácia: po generovaní validuj proti schéme; pri chybe pošli späť chybu a žiadaj opravu.
- Stop sekvencie a delimitery: zabráň presiaknutiu mimo očakávaného bloku.
- Tabuľky/CSV: keď je potrebný export; uveď oddelovač a únik špeciálnych znakov.
Kontrola štýlu, tónu a dĺžky
- Audience & tone: napr. pre CFO, stručne, bez žargónu vs. pre vývojárov, s odkazmi na API.
- Verbosity budget: stanov limity (slová, sekcie) alebo tl;dr verziu popri plnom výstupe.
- Konzekventná terminológia: prilož slovník pojmov, skratiek a prekladové preferencie.
Parametre generovania a ich vplyv
- Teplota/top-p: nižšie → konzistentnejšie, vyššie → kreatívnejšie; pri kóde a faktoch uprednostni nižšie.
- Max tokens: chráni latenciu a náklady; pozor na orezanie uprostred JSON.
- Frekvenčné/presence penalty: potláčajú opakovania; testuj na dlhších textoch.
Retrieval-Augmented Generation (RAG) a grounding
RAG dopĺňa prompt o externé fakty (dokumenty, databázy) a vyžaduje pracovať len s citovanými pasážami. Kľúčové komponenty:
- Indexácia: chunking s prekrývaním, embeddings, metadátové filtre (autor, dátum, jazyk).
- Relevance & re-ranking: hybridné vyhľadávanie (BM25 + vektory), re-ranking cez cross-encoder.
- Citovanie: referencie s identifikátorom a presnou pasážou; výstup bez zdrojov odmietni.
Funkčné volania a nástroje (toolformer pattern)
Urči špecifikáciu nástrojov (funkcií) v JSON (názov, popis, parametre). Model rozhodne, kedy zavolať nástroj (vyhľadanie, výpočty, transakcie). Guardrails zabezpečia, že bez nástroja neodpovie na vysokorizikové otázky.
Bezpečnosť a etika promptovania
- Jasné hranice: explicitne zakáž nebezpečné, nezákonné či citlivé výstupy; definuj redirekciu na bezpečné alternatívy.
- Dezinfo a halucinácie: vyžaduj neistotné formulácie, neviem odpoveď a overovanie zo zdrojov.
- Jailbreak odolnosť: nepoužívaj do promptu tajné kľúče; separuj systémové politiky; detekcia a blokovanie prompt injection pri RAG (filtruj prevzaté pokyny z dokumentov).
- Ochrana údajov: minimalizuj PII v promptoch, maskuj, používaj klasifikáciu citlivosti a retenčné politiky.
Antipatterny a časté chyby
- Nejednoznačné zadanie: bez kritérií kvality a formátu rastie variabilita.
- Príliš mnoho cieľov naraz: radšej viac menších krokov v orchestrácii ako všetko v jednom.
- Chýbajúce príklady hraničných prípadov: model sa učí z demonštrácií; ukáž, čo je zlé.
- Nedeterministické výstupy pre stroje: JSON bez schémy, chýbajúce kľúče, voľné komentáre.
Prompting pre špecifické triedy úloh
- Zhrnutie: definuj publikum, dĺžku, zachovanie čísel a citácií; zachovaj technické pojmy.
- Extrahovanie údajov: presná schéma (typy, enum), pravidlá pri chýbajúcej hodnote (
null
vs. prázdny reťazec), no guess politika. - Transformácie textu: štýl, tón, jazyk, terminologické tabuľky, zákaz vymýšľať fakty.
- Kód a testy: požaduj kompilovateľný súbor, verziu jazyka, jednotkové testy a časovú/priestorovú zložitosť.
- Analýzy a kalkulácie: nech model vysvetlí postup stručným odôvodnením a skontroluje výsledok alternatívnou metódou.
Programovateľné promptovanie: šablóny, knižnice, verziovanie
- Šablóny: parametrizácia (napr. Jinja/Liquid) s kontrolou úniku premenných a escapovaním.
- Verziovanie: spravuj prompt ako kód (Git), s CI testami a zmenovými logmi.
- Prompt registries: centrálna knižnica s metadátami (účel, metriky, riziká, závislosti).
Testovanie a hodnotenie (EvalOps)
- Gold sety: reprezentatívne scenáre vrátane toxických/edge prípadov.
- Automatické metriky: presnosť extrakcie, validita JSON, faktická zhoda (n-gram/semantic), latencia, cena.
- Human-in-the-loop: rubriky pre kvalitu, užitočnosť, bezpečnosť; slepé porovnávanie variantov.
- A/B a canary: postupné nasadenie, monitorovanie regresií a error budgetov.
Práca s neistotou a citáciami
- Vyžaduj stupnicu neistoty: nízka/stredná/vysoká, s dôvodom.
- Answer or abstain: ak chýba zdroj v kontexte, model má odmietnuť alebo požiadať o retrieval.
- Citačný štýl: identifikátory zdrojov (ID, url hash, strana), nie len názvy.
Latencia, náklady a škálovanie
- Prompt kompresia: skracuj inštrukcie, normalizuj príklady, zdieľaj systémové konštanty cez context cache.
- Chunking & map-reduce: spracuj veľké korpusy po častiach, potom agreguj.
- Streaming a prerušenia: pre UX zobrazuj stream; definuj idempotentné retry pri timeoutoch.
Multilingválny prompting a lokalizácia
- Jazyková preferencia: explicitne uveď jazyk vstupu a výstupu (napr. odpovedaj po slovensky).
- Terminologické glosáre: záväzné preklady odborných termínov.
- Regionálne normy: dátumy, čísla, menové jednotky, legislatívne kontexty.
Prompt engineering pre agentné systémy
- Planning: explicitná výzva na plán krokov a výber nástrojov.
- Memory: súhrny namiesto plného logu; rotácia kontextu; ochrana pred prompt injection z externých textov.
- Critique loop: sekundárny kritik s inou rolou a metrikou; povinné schválenie pred publikovaním.
Právne a compliance aspekty
- Autorské práva a citácie: vyžaduj parafrázu a citácie; nepýtaj sa na reprodukciu chránených textov.
- PII a citlivé údaje: maskovanie, minimalizácia, súhlas; definuj redaction rules v system promte.
- Auditovateľnosť: logovanie verzie promptu, parametrov, zdrojov a rozhodnutí nástrojov.
Praktické šablóny (minivzorky)
<!-- Extrakcia do JSON s prísnou validáciou --> Úloha: Extrahuj polia z textu. Ak pole chýba, vráť null. Nevymýšľaj. Kontext: <vložený text> Výstup: Vráť LEN JSON zodpovedajúci schéme: { invoice_number: string|null, issue_date: YYYY-MM-DD|null, total_amount: number|null, currency: EUR|USD|GBP|null } Kontroly: over formát dátumu; žiadne komentáre mimo JSON.
<!-- RAG s citáciami --> Úloha: Odpovedaj len na základe priložených pasáží. Ak nie je odpoveď, napíš Nedostatočné zdroje. Formát: - Odpoveď (max 150 slov) - Zdroje: [<ID: strana/riadok>, ...]
<!-- Kritický self-check --> Po vytvorení návrhu: 1) Skontroluj konzistenciu s požiadavkami. 2) Uveď 3 najväčšie riziká alebo nejasnosti. 3) Navrhni korekcie.
Optimalizačný cyklus: od návrhu k produkcii
- Hypotéza: navrhni dva konkurenčné prompty (A/B) s odlišnou štruktúrou.
- Offline eval: spusti na reprezentatívnom sete; meraj presnosť/validitu/latenciu.
- Pilot: nasad canary (1–5 % prevádzky); monitoruj chybovosť a eskalácie.
- Rollout + monitoring: alerty na validačné chyby JSON, halucinácie (bez citácií), toxicitu.
- Iterácia: verziuj, dokumentuj, archivuj rozhodnutia.
Checklist pre kvalitný prompt
- Je úloha jednoznačná a merateľná?
- Je formát výstupu striktne definovaný a validovateľný?
- Sú priložené vhodné a stručné príklady, vrátane hraničných?
- Existujú explicitné zákazy (no-guess, no-opinion bez zdrojov)?
- Sú nastavené parametre generovania primerané cieľu?
- Je prompt krátky vzhľadom na kontextové okno?
- Je zahrnutá bezpečnostná a právna klauzula primeraná doméne?
Zhrnutie
Prompt engineering sa zmenil z umetého písania dopytov na inžiniersku disciplínu s vlastnými vzormi, testami a prevádzkovými zásadami. Spoľahlivé systémy vznikajú kombináciou: jasné inštrukcie, štruktúrované výstupy, grounding cez RAG a nástroje, bezpečnostné guardrails a neustála evalvácia. Organizácie, ktoré s promptmi narábajú ako s kódom—verziujú, testujú, merajú—dosahujú vyššiu kvalitu, nižšiu chybovosť a lepší pomer cena/výkon.