Prompt Engineering
Prompt Engineering je disciplína zameraná na navrhovanie a optimalizáciu vstupov (promptov) pre veľké jazykové modely (LLM) s cieľom dosiahnuť čo najlepší výstup. Nejde len o „správne sa opýtať" — je to systematický prístup k formulácii inštrukcií, kontextu a obmedzení, ktorý výrazne ovplyvňuje kvalitu, presnosť a užitočnosť AI odpovede.
1. Prečo na prompte záleží
Rovnaký model môže na rovnakú otázku odpovedať diametrálne odlišne v závislosti od promptu:
❌ Slabý prompt:
"Napíš kód na triedenie."
✅ Dobrý prompt:
"Napíš funkciu v Pythone, ktorá zoradí zoznam slovníkov podľa kľúča 'date'
(formát ISO 8601) od najnovšieho po najstarší. Použi type hints. Ošetri
prázdny zoznam a neplatné dátumy (vráť ich na koniec). Napíš 3 unit testy."
Rozdiel nie je v „múdrosti" modelu, ale v kvalite inštrukcie. LLM nemá vlastný zámer — optimalizuje odpoveď na základe toho, čo dostane na vstupe.
2. Základné techniky
Zero-shot prompting
Model dostane úlohu bez príkladov. Funguje pri jednoduchých, jednoznačných úlohách.
Preklad do slovenčiny: "The quick brown fox jumps over the lazy dog."
Few-shot prompting
Model dostane 2-5 príkladov pred samotnou úlohou. Výrazne zlepšuje konzistentnosť formátu a kvality.
Preklad technických termínov:
- "machine learning" → "strojové učenie"
- "neural network" → "neurónová sieť"
- "overfitting" → "pretrénovanie"
- "gradient descent" → ?
Chain-of-Thought (CoT)
Model je inštruovaný, aby „myslel nahlas" — vysvetlil postup krok za krokom pred finálnou odpoveďou.
Otázka: Ak má firma 150 zamestnancov a 30% pracuje remote, koľko ľudí je
v kancelárii ak je piatok a 10% kancelárskych zostáva doma?
Mysli krok za krokom:
1. Remote zamestnanci: 150 × 0.30 = 45
2. Kancelárski: 150 - 45 = 105
3. Piatkoví absenti: 105 × 0.10 = 10.5 ≈ 11
4. V kancelárii v piatok: 105 - 11 = 94
Odpoveď: 94 ľudí
System prompting
Definovanie roly, správania a obmedzení modelu na úrovni systémovej inštrukcie.
System: Si senior Python developer. Odpovedáš stručne, používaš type hints,
preferuješ funkcionálny štýl. Ak niečo nevieš, povedz to namiesto vymýšľania.
Structured output
Požiadanie modelu o výstup v presnom formáte (JSON, YAML, tabuľka, markdown).
Analyzuj tento text a vráť výsledok ako JSON:
{
"sentiment": "positive|negative|neutral",
"confidence": 0.0-1.0,
"key_topics": ["topic1", "topic2"],
"summary": "max 2 vety"
}
3. Pokročilé techniky
| Technika | Popis | Použitie |
|---|---|---|
| Tree-of-Thought | Model exploruje viacero riešení paralelne a vyberie najlepšie | Komplexné problémy s viacerými cestami |
| Self-consistency | Spustiť rovnaký prompt N-krát a vybrať najčastejšiu odpoveď | Zvýšenie spoľahlivosti matematiky/logiky |
| ReAct | Kombinácia uvažovania (Reasoning) a akcií (Acting) | Agentné úlohy s nástrojmi |
| Meta-prompting | Nechať AI napísať/vylepšiť prompt za teba | Optimalizácia promptov |
| Constitutional prompting | Definovanie pravidiel, ktoré model nesmie porušiť | Bezpečnosť, compliance |
| Retrieval-Augmented | Doplnenie promptu o relevantnú externú informáciu (RAG) | Práca s aktuálnymi/proprietárnymi dátami |
4. Anatómia efektívneho promptu
Dobrý prompt má typicky tieto komponenty:
┌─────────────────────────────────────────┐
│ 1. ROLA (kto si) │
│ "Si senior data engineer..." │
├─────────────────────────────────────────┤
│ 2. KONTEXT (čo riešime) │
│ "Pracujeme na ETL pipeline..." │
├─────────────────────────────────────────┤
│ 3. ÚLOHA (čo chcem) │
│ "Napíš SQL query, ktorá..." │
├─────────────────────────────────────────┤
│ 4. OBMEDZENIA (čo nesmieš) │
│ "Nepoužívaj subquery, max 50 riadkov"│
├─────────────────────────────────────────┤
│ 5. FORMÁT (ako chcem výstup) │
│ "Vráť ako markdown tabuľku" │
├─────────────────────────────────────────┤
│ 6. PRÍKLADY (few-shot) │
│ "Vstup: X → Výstup: Y" │
└─────────────────────────────────────────┘
Nie každý prompt potrebuje všetky komponenty — jednoduchým úlohám stačí úloha + formát.
5. Časté chyby a anti-patterny
| Chyba | Príklad | Oprava |
|---|---|---|
| Vágnosť | „Napíš niečo o databázach" | „Vysvetli rozdiel medzi SQL a NoSQL s príkladmi pre e-shop" |
| Príliš veľa naraz | „Napíš celú appku s backendom, frontendom a testami" | Rozdeliť na menšie kroky |
| Chýbajúci formát | „Porovnaj frameworky" | „Porovnaj React, Vue, Svelte v tabuľke: výkon, ekosystém, krivka učenia" |
| Negatívne inštrukcie | „Nepoužívaj zložité slová" | „Použi jednoduché slová, max B1 úroveň" |
| Žiadne obmedzenia | „Napíš kód" | „Napíš funkciu v TypeScript, max 30 riadkov, bez externých závislostí" |
| Ignorovanie chýb | Akceptovanie prvého výstupu | „Skontroluj svoju odpoveď na chyby a oprav ich" |
6. Prompt engineering pre kód
Programovanie je jedna z najsilnejších oblastí prompt engineeringu. Špecifické tipy:
- Špecifikuj jazyk, framework a verziu: „Python 3.12, FastAPI 0.115, Pydantic v2"
- Definuj štýl: „Type hints, docstrings, PEP 8, max 80 znakov na riadok"
- Uveď error handling: „Ošetri všetky edge cases, loguj chyby do stderr"
- Požaduj testy: „Napíš pytest testy vrátane edge cases"
- Uveď kontext: „Toto bude v Docker kontajneri s PostgreSQL 16"
- Iteruj: „Pridaj caching s Redis" → „Zmeň expiry na 5 minút" → „Pridaj invalidáciu pri PUT"
# Príklad výstupu z dobre zadaného promptu
from datetime import datetime
from typing import Optional
def parse_date_range(
start: str,
end: Optional[str] = None,
fmt: str = "%Y-%m-%d"
) -> tuple[datetime, datetime]:
"""Parse date range strings into datetime objects.
Args:
start: Start date string.
end: End date string (defaults to now).
fmt: Date format (default ISO 8601 date).
Returns:
Tuple of (start_dt, end_dt).
Raises:
ValueError: If dates are invalid or start > end.
"""
start_dt = datetime.strptime(start, fmt)
end_dt = datetime.strptime(end, fmt) if end else datetime.now()
if start_dt > end_dt:
raise ValueError(f"Start {start} is after end {end}")
return start_dt, end_dt
7. Prompt engineering v praxi — workflow
- Prvý draft: napísať prompt, pustiť, vyhodnotiť výstup.
- Iterácia: upraviť prompt na základe nedostatkov (chýbajúci kontext, zlý formát, hallucinácie).
- Testovanie: pustiť na viacerých vstupoch, overiť konzistentnosť.
- Verzinovanie: uložiť fungujúce prompty (prompt library) pre tím.
- Automatizácia: integrovať do CI/CD, API, agentov.
Tip: Veď si „prompt journal" — zápisky o tom, čo fungovalo a čo nie. Časom si vybuduješ intuitívne pochopenie modelu.
8. Quick Reference
| Parameter | Hodnota | Poznámka |
|---|---|---|
| Definícia | Optimalizácia vstupov pre LLM | Systematická disciplína, nie len „pýtanie sa" |
| Zero-shot | Úloha bez príkladov | Pre jednoduché, jednoznačné úlohy |
| Few-shot | 2-5 príkladov pred úlohou | Výrazne zlepšuje konzistentnosť |
| Chain-of-Thought | „Mysli krok za krokom" | Lepšia matematika, logika, uvažovanie |
| System prompt | Definícia roly a obmedzení | Nastavuje správanie modelu |
| Kľúčová chyba | Vágnosť a chýbajúci kontext | Konkrétnosť = kvalita |
| Best practice | Rola + kontext + úloha + formát | Nie vždy treba všetko |
| Pre kód | Jazyk + verzia + štýl + testy | Čím presnejšie, tým lepšie |
Zhrnutie
- Prompt engineering je systematická disciplína — nie len „umenie pýtať sa" — zameraná na formuláciu vstupov pre LLM tak, aby výstup bol presný, konzistentný a užitočný.
- Základné techniky (zero-shot, few-shot, chain-of-thought, system prompting) pokrývajú väčšinu prípadov použitia.
- Pokročilé techniky (Tree-of-Thought, ReAct, RAG, meta-prompting) riešia komplexné scenáre vyžadujúce viacero krokov alebo externé dáta.
- Efektívny prompt má jasne definovanú rolu, kontext, úlohu, obmedzenia, formát a ideálne príklady.
- Najčastejšia chyba je vágnosť — čím konkrétnejší prompt, tým lepší výstup.
- Pre programovanie je kľúčové špecifikovať jazyk, framework, štýl, error handling a požiadavky na testy.