Prompt engineering: Jak efektivně komunikovat s umělou inteligencí

Prompt engineering: definice, cíle a kontext

Prompt engineering je disciplína navrhování vstupů pro generativní modely (zejména velké jazykové modely, LLM) s cílem maximalizovat kvalitu, konzistenci a bezpečnost výstupů. Zahrnuje pochopení omezení modelů (tokenizace, kontextové okno, stochastičnost), kompozici instrukcí, kontrolu formátování výstupů, využití nástrojů (retrieval, funkční volání) a systematické testování. Výsledkem je spolehlivý systém, v němž prompt není jen text, ale součást architektury.

Mentalní model LLM: jak model „čte“ prompt

  • Pravděpodobnostní predikce tokenů: model generuje další token na základě předchozích. Z konstrukce nezná pravdu, ale vzory a pravděpodobnosti.
  • Kontextové okno: pouze obsah v rámci okna (system, developer, user, historie, dokumenty) může ovlivnit odpověď. Starší části mohou být zkracovány.
  • Instrukční hierarchie: obvykle platí priorita system > developer > user > content. Konflikty je třeba řešit explicitně.
  • Tokenizace a délka: počet tokenů ovlivňuje cenu, latenci a riziko ořezání kontextu; krátké, přesné formulace jsou výhodou.

Struktura kvalitního promptu

  1. Úkol: co má model vykonat (např. shrnout, klasifikovat, napsat kód).
  2. Kontext: doména, publikum, účel, omezení.
  3. Formát výstupu: požadovaná struktura (JSON schéma, tabulka, Markdown/HTML, kódové bloky, sekce).
  4. Příklady (few-shot): ukázky vstup→výstup s variacemi a hraničními případy.
  5. Hodnotící kritéria: co je kvalitní; krátké kontrolní seznamy/heuristiky.
  6. Omezení a zákazy: co model nesmí dělat (např. spekulovat mimo zdroje, vymýšlet citace).

Vzory promptování (patterns) a kdy je použít

  • Role prompting: přiřaď modelu roli (např. Jsi daňový auditor…). Zvýší konzistenci tónu a detailů.
  • Few-shot demonstrace: 2–5 kvalitních příkladů usnadní generalizaci u specifického formátu nebo stylu.
  • Decompose & constrain: rozděl složitý úkol na kroky a stanov výstup každého kroku.
  • Retrieve & cite: vyžaduj práci pouze se zadanými zdroji a explicitní citace; minimalizuje halucinace.
  • Self-check / critique: nechej model zkontrolovat vlastní výstup vůči kritériím (projít checklist, najít chyby).
  • Function/tool calling: definuj JSON specifikaci nástroje; model navrhne volání, runtime dodá fakta.
  • Template prompting: opakovaně použitelné šablony s proměnnými (např. {{audience}}, {{tone}}, {{schema}}).

Formátová kontrola: od volného textu po strojově čitelné výstupy

Pro integraci do systémů je klíčová deterministická struktura:

  • JSON schéma: definuj přesný tvar, typy a enumy; vyžaduj pouze JSON bez komentářů.
  • Validace: po generování validuj proti schématu; při chybě vrať chybu a požaduj opravu.
  • Stop sekvence a delimiter: zamez prosakování mimo očekávaný blok.
  • Tabulky/CSV: při nutnosti exportu; uveď oddělovač a unikání speciálních znaků.

Kontrola stylu, tónu a délky

  • Publikum & tón: např. pro CFO stručně, bez žargonu vs. pro vývojáře s odkazy na API.
  • Verbosity budget: stanov limity (slova, sekce) nebo tl;dr verzi vedle plného výstupu.
  • Konzistentní terminologie: přilož slovník pojmů, zkratek a překladové preference.

Parametry generování a jejich vliv

  • Teplota/top-p: nižší → konzistentnější, vyšší → kreativnější; u kódu a faktů upřednostni nižší hodnoty.
  • Max tokens: chrání latenci a náklady; pozor na ořezání uprostřed JSON.
  • Frekvenční/presence penalizace: potlačují opakování; testuj na delších textech.

Retrieval-Augmented Generation (RAG) a grounding

RAG doplňuje prompt o externí fakta (dokumenty, databáze) a vyžaduje pracovat pouze s citovanými pasážemi. Klíčové komponenty:

  • Indexace: chunking s překrýváním, embeddingy, metadata filtry (autor, datum, jazyk).
  • Relevance & re-ranking: hybridní vyhledávání (BM25 + vektory), re-ranking přes cross-encoder.
  • Citování: reference s identifikátorem a přesnou pasáží; výstup bez zdrojů odmítnout.

Funkční volání a nástroje (toolformer pattern)

Urči specifikaci nástrojů (funkcí) v JSON (název, popis, parametry). Model rozhodne, kdy nástroj zavolat (vyhledávání, výpočty, transakce). Guardrails zajistí, že bez nástroje neodpoví na vysoce rizikové dotazy.

Bezpečnost a etika promptování

  • Jasné hranice: explicitně zakázat nebezpečné, nezákonné či citlivé výstupy; definovat přesměrování na bezpečné alternativy.
  • Dezinformace a halucinace: vyžadovat formulace vyjadřující nejistotu, odpověď „nevím“ a ověřování ze zdrojů.
  • Odolnost proti jailbreakům: nepoužívat tajné klíče v promptu; separovat systémové politiky; detekce a blokování prompt injection při RAG (filtrovat převzaté instrukce z dokumentů).
  • Ochrana dat: minimalizovat PII v promptech, maskovat, používat klasifikaci citlivosti a retenční politiky.

Antipatterny a časté chyby

  • Nejednoznačné zadání: bez kritérií kvality a formátu roste variabilita výstupů.
  • Příliš mnoho cílů najednou: raději více menších kroků v orchestraci než všechno v jednom.
  • Chybějící příklady hraničních případů: model se učí z demonstrací; ukaž, co je špatné.
  • Nedeterministické výstupy pro stroje: JSON bez schématu, chybějící klíče, volné komentáře.

Prompting pro specifické třídy úloh

  • Shrnutí: definuj publikum, délku, zachování čísel a citací; zachovej technické termíny.
  • Extrahování dat: přesná schéma (typy, enum), pravidla při chybějící hodnotě (null vs. prázdný řetězec), no guess politika.
  • Transformace textu: styl, tón, jazyk, terminologické tabulky, zákaz vymýšlet fakta.
  • Kód a testy: požaduj kompilovatelný soubor, verzi jazyka, jednotkové testy a časovou/prostorovou složitost.
  • Analýzy a kalkulace: model nech vysvětlit postup stručným odůvodněním a zkontrolovat výsledek alternativní metodou.

Programovatelné promptování: šablony, knihovny, verzování

  • Šablony: parametrizace (např. Jinja/Liquid) s kontrolou úniku proměnných a escapováním.
  • Verzování: spravuj prompt jako kód (Git), s CI testy a changelogy.
  • Prompt registries: centrální knihovna s metadaty (účel, metriky, rizika, závislosti).

Testování a hodnocení (EvalOps)

  1. Gold sety: reprezentativní scénáře včetně toxických/hraničních případů.
  2. Automatické metriky: přesnost extrakce, validita JSON, faktická shoda (n-gram/semantická), latence, cena.
  3. Human-in-the-loop: rubriky pro kvalitu, užitečnost, bezpečnost; slepé porovnání variant.
  4. A/B a canary: postupné nasazení, monitorování regresí a error budgetů.

Práce s nejistotou a citacemi

  • Vyžaduj stupnici nejistoty: nízká/střední/vysoká s odůvodněním.
  • Answer or abstain: chybí-li zdroj v kontextu, model má odmítnout odpověď nebo požádat o retrieval.
  • Citační styl: identifikátory zdrojů (ID, url hash, strana), nikoli pouze názvy.

Latence, náklady a škálování

  • Prompt komprese: zkracuj instrukce, normalizuj příklady, sdílej systémové konstanty přes context cache.
  • Chunking & map-reduce: zpracuj velké korpusy po částech, následně agreguj.
  • Streaming a přerušení: pro UX zobrazuj stream; definuj idempotentní retry při timeoutu.

Multijazyčné promptování a lokalizace

  • Jazyková preference: explicitně stanov jazyk vstupu a výstupu (např. odpovídej česky).
  • Terminologické glosáře: závazné překlady odborných termínů.
  • Regionální normy: datumy, čísla, měnové jednotky, legislativní kontexty.

Prompt engineering pro agentní systémy

  • Plánování: explicitní výzva k plánování kroků a výběru nástrojů.
  • Paměť: souhrny místo plného logu; rotace kontextu; ochrana před prompt injection z externích textů.
  • Critique loop: sekundární kritik s jinou rolí a metrikou; povinné schválení před publikováním.

Právní a compliance aspekty

  • Autorská práva a citace: vyžaduj parafrázi a citace; nevyžaduj reprodukci chráněných textů.
  • PII a citlivé údaje: maskování, minimalizace, souhlas; definuj redakční pravidla v system promptu.
  • Auditovatelnost: logování verze promptu, parametrů, zdrojů a rozhodnutí nástrojů.

Praktické šablony (minivzorky)

<!-- Extrakce do JSON s přísnou validací --> Úkol: Extrahuj pole z textu. Pokud pole chybí, vrať null. Nevymýšlej. Kontext: <vložený text> Výstup: Vrať POUZE JSON odpovídající schématu: { invoice_number: string|null, issue_date: YYYY-MM-DD|null, total_amount: number|null, currency: EUR|USD|GBP|null } Kontroly: ověř formát data; žádné komentáře mimo JSON. 
<!-- RAG s citacemi --> Úkol: Odpovídej pouze na základě přiložených pasáží. Pokud není odpověď, napiš Nedostatečné zdroje. Formát: - Odpověď (max 150 slov) - Zdroje: [<ID: strana/řádek>, ...] 
<!-- Kritický self-check --> Po vytvoření návrhu: 1) Zkontroluj konzistenci s požadavky. 2) Uveď 3 největší rizika nebo nejasnosti. 3) Navrhni opravy. 

Optimalizační cyklus: od návrhu k produkci

  1. Hypotéza: navrhni dva konkurenční prompty (A/B) s odlišnou strukturou.
  2. Offline eval: spusť na reprezentativním setu; měř přesnost/validitu/latenci.
  3. Pilot: nasaď canary (1–5 % provozu); monitoruj chybovost a eskalace.
  4. Rollout + monitoring: alarmy na validační chyby JSON, halucinace (bez citací), toxicitu.
  5. Iterace: verzuj, dokumentuj, archivuj rozhodnutí.

Kontrolní seznam pro kvalitní prompt

  • Je úkol jednoznačný a měřitelný?
  • Je formát výstupu striktně definovaný a validovatelný?
  • Jsou přiloženy vhodné a stručné příklady, včetně hraničních?
  • Existují explicitní zákazy (no-guess, no-opinion bez zdrojů)?
  • Jsou nastaveny parametry generování přiměřené cíli?
  • Je prompt krátký vzhledem ke kontextovému oknu?
  • Je zahrnuta bezpečnostní a právní klauzule přiměřená doméně?

Shrnutí