Artificial intelligence (AI)

Template Filling (Vyplňování šablon) pro stabilní výstupy

Template Filling (vyplňování šablon) v prompt engineeringu znamená, že používáš šablonu promptu s placeholdery (např. {{promenna}}) a před odesláním do LLM je automaticky nahradíš konkrétními hodnotami z dat. Výsledkem je vždy konkrétní prompt pro daný případ, ale se stejnou strukturou instrukcí.

K čemu to je

  • Konzistence: každá generace dostane stejná pravidla a formát.
  • Škálování: jedna šablona může obsloužit velké množství variant.
  • Kontrola: můžeš vynutit tón, délku, strukturu a zakázat nežádoucí tvrzení.
  • Stabilita: méně náhodných rozdílů, protože instrukce jsou pořád stejné.

Doporučená struktura šablony promptu

  1. Role / úkol: kdo má model být a co má udělat.
  2. Cíl: jaký typ výstupu a jak má být dlouhý.
  3. Data: vstupní fakta a parametry (zde se vyplňují placeholdery).
  4. Pravidla: co model smí/nesmí, zakázaná slova, omezení.
  5. Formát výstupu: přesná struktura (např. odstavce, seznam, JSON).
  6. Fallback: jak postupovat při chybějících datech (např. “neuvedeno” / “UNKNOWN”).

Ukázka šablony promptu (obecná)

Jsi [ROLE]. Tvůj úkol je [ÚKOL].

CÍL:
- Výstup: [TYP VÝSTUPU]
- Délka: [ROZSAH]
- Tón: [TÓN / STYL]

DATA (použij jen tato fakta, nic nevymýšlej):
- Pole A: {{pole_a}}
- Pole B: {{pole_b}}
- Pole C: {{pole_c}}

PRAVIDLA:
- Neuváděj informace, které nejsou v DATA.
- Dodrž délku a tón.
- Zakázaná slova/tvrzení: [SEZNAM]

FALLBACK:
- Pokud některé pole chybí, napiš “neuvedeno”.

VÝSTUPNÍ FORMÁT:
- [POVINNÁ STRUKTURA, např. H1 + 2 odstavce / JSON se schématem]
  

Nejčastější chyby a jak jim předejít

  • Nejasná data: používej standardizované názvy polí a stejný formát (data, měny, jednotky).
  • Chybějící pole: vždy definuj fallback chování (co napsat, když hodnota není).
  • Příliš volné instrukce: vynucuj strukturu výstupu a přidej konkrétní omezení.
  • Riziko halucinací: explicitně zakaž přidávání faktů mimo sekci DATA.

Doporučené “guardrails”

  • Explicitní pravidlo: „Použij pouze fakta z DATA.“
  • Zakázané tvrzení: seznam claimů/slov, která se nesmí objevit.
  • Kontrola formátu: požaduj výstup ve striktní struktuře (např. JSON schema).
  • Kontrola délky: stanov max/min rozsah a požaduj dodržení.
  • Fallback režim: jednotné chování při chybějících hodnotách.

Least-To-Most Prompting (Od nejméně po nejvíce)

V článku Least-to-Most Prompting Enables Complex Reasoning in Large Language Models], který navrhli Zhou a kol. z Google Research, je metoda Least-to-most prompting novou metodou, jejímž cílem je zlepšit schopnost řešení problémů ve velkých jazykových modelech.

Metoda vychází z pedagogické psychologie a spočívá v rozkladu složitých problémů na jednodušší, postupné podproblémy, přičemž využívá odpovědi z předchozích podproblémů k usnadnění řešení následujících.

Implementace metody „least-to-most prompting“ nevyžaduje trénování modelu ani jeho dolaďování

Provádí se výhradně prostřednictvím několika podnětů, což se účinně projevilo v úlohách, jako je symbolická manipulace, kompoziční zobecnění (schopnost naučit se význam slov a následně je asociací aplikovat na jiné pojmy) a matematické uvažování.

Následující obrázek z článku ukazuje řešení matematické slovní úlohy metodou least-to-most ve dvou fázích: (1) dotaz na jazykový model pro rozklad úlohy na dílčí úlohy; (2) dotaz na jazykový model pro postupné řešení dílčích úloh. Odpověď na druhý podproblém je postavena na odpovědi na první podproblém. 

Demonstrační příklady pro výzvu každé fáze jsou v této ilustraci vynechány.

(více…)

Self-Ask Prompting (Sebedotazování)

Moderní jazykové modely jsou v mnohém ohromující – dokáží psát, překládat, analyzovat i programovat. Přesto mají jednu výraznou slabinu: složené otázky, které vyžadují několik logických kroků. Pokud se zeptáte „Kdo byl prezidentem Francie v roce, kdy zemřel Picasso?“, model musí nejprve zjistit, kdy Picasso zemřel, a teprve potom hledat francouzského prezidenta pro daný rok. Právě pro tyto situace vznikly techniky jako Self-Ask Prompting a Ask Me Anything (AMA).

(více…)

Symbolické uvažování (PAL): Cesta k přesným výpočtům v LLM

Uvažujme následující otázku:

Mám židli, dvě brambory, květák, hlávku salátu, dva stoly, zelí, dvě cibule a tři lednice. Kolik mám zeleniny?

LLM by měl převést vstup na slovník s entitami a hodnotami podle jejich množství, přičemž by měl odfiltrovat entity, které nejsou zeleninou.

Nakonec je odpovědí součet hodnot slovníku pod výstupem PAL z LLM:

 

# note: I'm not counting the chair, tables, or fridges
vegetables_to_count = {
'potato': 2,
'cauliflower': 1,
'lettuce head': 1,
'cabbage': 1,
'onion': 2
}
answer = sum(vegetables_to_count.values())

Automatic Reasoning (Automatické Uvažování a používání nástrojů ART)

ART, aneb co kdyby si AI uměla sama říct, jaký nástroj potřebuje

Když řešíte složitý pracovní úkol, nepracujete jen z hlavy. Sáhnete po kalkulačce, vyhledáte si aktuální data, podíváte se, jak jste podobný problém řešili minule. Přirozeně kombinujete vlastní uvažování s nástroji kolem sebe. Jenže jazykové modely to tradičně neuměly – byly odkázány výhradně na to, co se naučily během tréninku, bez možnosti cokoli ověřit nebo doplnit za pochodu. Rámec ART (Automatic Reasoning and Tool-use), který v roce 2023 vyvinul tým výzkumníků vedený Bhargavi Paranjape, tuto hranici posouvá.

(více…)

Iterative Prompting (Iterativní promptování)

Iterativní promptování je způsob práce s jazykovým modelem (LLM), kdy se nesnažíš napsat „dokonalý prompt“ hned napoprvé. Místo toho používáš opakovaný cyklus: zadáš první verzi promptu, podíváš se na výstup, vyhodnotíš, co je špatně nebo co chybí, prompt upravíš (nebo doplníš) a zkusíš to znovu. 

Každá další iterace je cílený krok, který má posunout výstup blíž k tomu, co opravdu chceš.

(více…)

Sequential Prompting (Sekvenční promptování)

Sequential prompting (sekvenční promptování) je technika prompt engineeringu, kdy místo jednoho velkého promptu používáš sérii promptů v určitém pořadí. Každý krok má jasný dílčí cíl (např. analýza → návrh → kontrola → finální výstup) a postupně model „vedeš“ k lepšímu výsledku. Smysl je rozdělit složitý úkol na menší části, které se dají snadněji řídit a kontrolovat.

(více…)

Pochopení aplikačního programovacího rozhraní ChatGPT API

ChatGPT API je aplikační programovací rozhraní poskytované firmou OpenAI, které umožňuje vývojářům a podnikům integrovat schopnosti modelu jazykového generování GPT (Generative Pre-trained Transformer), jako je ChatGPT, do svých vlastních aplikací, webových služeb nebo produktů. API poskytuje přístup k pokročilým funkcím strojového učení a umělé inteligence pro generování textu, odpovídání na otázky, sumarizaci textů, generování kódu, jazykové překlady a mnoho dalších úkolů zpracování přirozeného jazyka (NLP).

(více…)

Základní Datové Typy

Primitivní datové typy

Primitivní datové typy: Jsou to nejjednodušší typy dat, které přímo reprezentují základní hodnoty. Zahrnují:

  • Číselné typy: Celá čísla (int v mnoha jazycích), desetinná čísla (float nebo double), a v některých případech speciální formáty jako jsou komplexní čísla.
  • Logický typ: Pravdivostní hodnoty (boolean), které mohou nabývat pouze hodnot true (pravda) nebo false (nepravda).
  • Znakový typ: Jednotlivé znaky (char), obvykle reprezentují písmena, číslice nebo jiné symboly.

Složené (nebo strukturované) datové typy

Tyto typy umožňují skládání primitivních datových typů a tvorbu složitějších struktur. Patří sem:

  • Pole (Arrays): Seznamy prvků stejného datového typu.
  • Struktury (Structs v C/C++ nebo Records v Pascalu): Umožňují kombinovat prvky různých datových typů.
  • Třídy (Classes): Základ objektově orientovaného programování, kde každá třída definuje strukturu a chování svých objektů.

Referenční datové typy

Tyto typy odkazují na místo v paměti, kde jsou skutečná data uložena. Zahrnují:

  • Řetězce (Strings): Sekvence znaků reprezentující text.
  • Objekty: Instance tříd v objektově orientovaných jazycích.
  • Pole a Kolekce: Například seznamy (lists), slovníky (dictionaries) v Pythonu, nebo množiny (sets).

Speciální datové typy

Některé jazyky nabízí speciální datové typy pro určité účely, jako jsou:

  • Enumy (Enumerated types): Umožňují definovat proměnnou s pevně stanoveným seznamem možných hodnot.
  • Void: Typicky používán v definicích funkcí pro označení absence návratové hodnoty.