Přeskočit na hlavní obsah
PraktickAI
KurzyPro týmySlužbyDokumentaceBlog
KurzyPro týmySlužbyDokumentaceBlog
DomůKurzyAI v produkciPrompt management: Prompty jako kód
Předchozí lekceDalší lekce
Lekce 2 z 740 min

Prompt management: Prompty jako kód

Přejít na sekci
  • Proč prompty nepatří do kódu
  • Prompt jako šablona s proměnnými
  • Verzování a rollback
  • A/B testování promptů
  • Prompt composition a chain-of-thought

Proč prompty nepatří do kódu

V prototypu máte prompt jako string v kódu. V produkci se prompt mění 10x častěji než okolní logika. Každá změna promptu vyžaduje deploy, code review a build pipeline. To je zbytečná brzda. Prompty potřebují vlastní lifecycle — verzování, testování, rollback — nezávisle na kódu aplikace.

Prompt management má tři úrovně zralosti. Level 1: prompty v kódu jako template strings. Level 2: prompty ve vlastních souborech s proměnnými a verzováním přes git. Level 3: prompt registry — centrální služba, která servíruje prompty přes API, umožňuje A/B testing a sleduje metriky kvality na každou verzi.

Prompt jako šablona s proměnnými

Každý produkční prompt je šablona. Obsahuje statickou část (instrukce, formát, omezení) a dynamické proměnné (uživatelský vstup, kontext, few-shot příklady). Oddělte je explicitně. Použijte Mustache, Handlebars, nebo prostý string interpolation — ale mějte jasný kontrakt, jaké proměnné prompt očekává.

// prompts/summarize.v2.yaml
// name: summarize
// version: 2
// variables: [document, max_length, language]
// model: claude-sonnet-4-20250514

const promptTemplate = `
Summarize the following document in {{language}}.
Maximum length: {{max_length}} words.
Focus on actionable insights, skip background.

Document:
{{document}}

Output format: bullet points, each starting with a verb.
`;

function renderPrompt(
  template: string,
  vars: Record<string, string>
): string {
  return template.replace(
    /\{\{(\w+)\}\}/g,
    (_, key) => vars[key] ?? ''
  );
}

Verzování a rollback

Každá verze promptu by měla být immutable. Verze 2 nikdy nepřepíše verzi 1 — obě existují paralelně. Nová verze se nejdřív nasadí na canary traffic (5-10 % requestů), porovná se kvalita oproti baseline, a teprve pak se stane defaultem. Pokud nová verze degraduje, rollback je otázka jednoho konfiguračního přepnutí.

Nejjednodušší implementace: prompty v YAML souborech v git repozitáři, s verzí v názvu souboru (summarize.v1.yaml, summarize.v2.yaml). Konfigurace říká, která verze je aktivní. Složitější setup: prompt registry jako microservice s REST API, databází verzí a webhooky pro deployment.

// Simple file-based prompt registry
interface PromptVersion {
  name: string;
  version: number;
  template: string;
  model: string;
  variables: string[];
  metadata: { author: string; changedAt: string; reason: string };
}

class PromptRegistry {
  private prompts = new Map<string, PromptVersion[]>();

  getActive(name: string): PromptVersion {
    const versions = this.prompts.get(name);
    if (!versions?.length) throw new Error(`Prompt '${name}' not found`);
    return versions[versions.length - 1];
  }

  getVersion(name: string, version: number): PromptVersion {
    const v = this.prompts.get(name)?.find(p => p.version === version);
    if (!v) throw new Error(`Prompt '${name}' v${version} not found`);
    return v;
  }
}

A/B testování promptů

Změna jednoho slova v promptu může změnit kvalitu výstupu o 20 %. Bez A/B testování to nezjistíte. Základní setup: přiřaďte každý request náhodně k variantě (A = aktuální verze, B = kandidát), logujte variantu spolu s výstupem, a po dostatečném vzorku porovnejte metriky.

Metriky závisí na use case: pro sumarizaci měřte délku, pokrytí klíčových bodů a uživatelský rating. Pro klasifikaci měřte accuracy a F1 skóre. Pro generování kódu měřte, zda se kód zkompiluje a projdou testy. Vždy mějte alespoň jednu automatickou metriku a jednu lidskou.

// A/B test assignment
function assignVariant(
  userId: string,
  testName: string,
  variants: string[],
  weights?: number[]
): string {
  // Deterministic assignment based on user+test hash
  const hash = createHash('sha256')
    .update(`${userId}:${testName}`)
    .digest();
  const bucket = hash.readUInt32BE(0) % 100;

  const w = weights ?? variants.map(() => 100 / variants.length);
  let cumulative = 0;
  for (let i = 0; i < variants.length; i++) {
    cumulative += w[i];
    if (bucket < cumulative) return variants[i];
  }
  return variants[variants.length - 1];
}

Prompt composition a chain-of-thought

Složité tasky vyžadují kompozici promptů — rozložení problému na kroky, kde výstup jednoho promptu je vstupem dalšího. Klasický vzor: první prompt extrahuje relevantní informace z dokumentu, druhý je analyzuje, třetí generuje výstup. Každý krok má vlastní prompt s vlastním verzováním.

Chain-of-thought (CoT) v produkci není jen 'think step by step'. Je to strukturovaný formát, kde model nejdřív vygeneruje reasoning (který logujete, ale nezobrazujete uživateli), a pak finální odpověď. CoT zlepšuje kvalitu u analytických úloh o 10-30 %, ale zvyšuje token count a latenci.

Prompt je produkční artefakt jako kód — potřebuje verzování, review, testování a rollback. Chovejte se k němu tak od prvního dne.

Logujte ke každému API volání verzi promptu, model a hash vstupních proměnných. Až budete debugovat špatný výstup, budete přesně vědět, co model dostal.

Přidejte do prompt metadat 'reason' pole — proč byla tato verze vytvořena. Za měsíc nebudete vědět, proč jste změnili formulaci, pokud to nenapíšete teď.

Prompt registry s A/B testováním

Vytvořte jednoduchý prompt registry: 1) Uložte dvě verze jednoho promptu do YAML souborů. 2) Napište funkci, která na základě user ID deterministicky přiřadí variantu (50/50 split). 3) Logujte do konzole variantu, prompt verzi a (simulovaný) výstup modelu. 4) Po 100 simulovaných requestech spočítejte, kolik requestů šlo na kterou variantu.

Nápověda

Deterministické přiřazení přes hash zajistí, že stejný uživatel vždy dostane stejnou variantu — to je klíčové pro konzistentní UX a validní A/B test.

Prompt versioning systém

Implementujte jednoduchý prompt versioning systém pro váš projekt. Požadavky: 1) Prompty jsou uložené v souborech (ne hardcodované), 2) Každý prompt má verzi, 3) Změny v promptech jsou trackované v gitu, 4) A/B testování dvou verzí promptu je jednoduché. Nemusíte použít specializovaný nástroj — stačí složka s YAML/JSON soubory a jednoduchý loader.

Nápověda

Zdokumentujte svůj postup a výsledky — poslouží jako reference pro budoucí podobné úkoly.

Prompt composition pipeline

Implementujte pipeline ze 3 promptů pro analýzu dokumentu: 1) Prompt 1 extrahuje klíčové informace z textu (entity, fakta, čísla). 2) Prompt 2 analyzuje extrahované informace a vytvoří závěry. 3) Prompt 3 generuje strukturovaný report. Každý prompt má vlastní verzi a model konfiguraci. Změřte kvalitu: lepší výsledky dává pipeline nebo jeden velký prompt?

Nápověda

Pipeline je lepší pro složité úlohy, kde každý krok vyžaduje jiný typ reasoningu. Pro jednoduché úlohy je overhead zbytečný.

Klíčové poznatky
  • Prompty se mění rychleji než kód — potřebují vlastní lifecycle
  • Každá verze promptu je immutable, rollback je přepnutí konfigurace
  • A/B testování odhalí rozdíly v kvalitě, které při ručním testování přehlédnete
  • Logujte verzi promptu a model ke každému volání — bez toho je debugging nemožný

V příští lekci se podíváme na Evaluaci AI výstupů: Jak měřit kvalitu — techniku, která vám dá jasnou převahu. Odemkněte celý kurz a pokračujte hned.

Předchozí lekce
LinkedInX / Twitter

2/7 hotovo — pokračujte!

  • Proč prompty nepatří do kódu
  • Prompt jako šablona s proměnnými
  • Verzování a rollback
  • A/B testování promptů
  • Prompt composition a chain-of-thought

PraktickAI

AI školení a konzultace pro technické týmy

KurzyPro týmySlužbyDokumentaceBlog
karel@praktickai.appLinkedIn

© 2026 PraktickAI — SkyVisual s.r.o. Všechna práva vyhrazena. Ochrana soukromí · Obchodní podmínky · Reklamační řád