# LLM generování kompletních Kodi XML dialogů

**Datum**: 2026-04-08
**Dotazy**: LLM prompt engineering structured XML output, AI generating UI layout, validate-retry pattern

## Shrnutí

LLM dokáže spolehlivě generovat kompletní XML kód pokud dostane: (1) explicitní schéma/pravidla, (2) few-shot příklad, (3) striktní output constraints, (4) validaci + retry loop. Klíčové je nízká teplota (0.0-0.2), systémový prompt definující roli XML generátoru, a programatická validace výstupu s automatickou opravou.

## Detailní zjištění

### 1. Struktura promptu pro XML generování

**Nejefektivnější řazení:**
1. **Systémový prompt**: Role + striktní constraints
2. **Schema/pravidla**: Kompletní reference syntaxe
3. **Few-shot příklad**: 1 kompletní ukázka výstupu
4. **Data/metadata**: Vstupní informace k obsahu
5. **Output constraints**: Zákaz markdown, vysvětlení, textu okolo

### 2. Klíčové techniky

| Technika | Efekt | Použití |
|----------|-------|---------|
| Few-shot prompting | +80% reliability | 1 kompletní příklad XML |
| System prompt persona | +40% structure | "Jsi XML generátor" |
| Low temperature (0.0-0.2) | +60% determinism | Pro strukturální úlohy |
| Output markers | +30% parsing | `### BEGIN XML` / `### END XML` |
| Validate & Retry | +95% success | XML parse → error → retry |
| Chain-of-thought | +50% quality | "Nejdřív naplánuj layout" |

### 3. Validate & Retry pattern

```python
def generate_valid_xml(prompt, max_retries=3):
    messages = [system, user_prompt]
    for i in range(max_retries):
        response = send_prompt(messages)
        try:
            ET.fromstring(response)  # XML validace
            return response  # Úspěch
        except ET.ParseError as e:
            messages.append({"role": "assistant", "content": response})
            messages.append({"role": "user", "content": f"XML je nevalidní: {e}. Oprav to."})
    return fallback_xml  # Fallback po selhání
```

### 4. Pravidla pro prompt

- **NIKDY** nespoléhat na LLM že uhodne strukturu – VŽDY poskytnout schéma
- **VŽDY** ukázat 1 kompletní příklad požadovaného výstupu
- **ZAKÁZAT** markdown code blocks, vysvětlující text, komentáře před/za XML
- **NÍZKÁ teplota** (0.0-0.2) pro strukturální úlohy
- **VALIDOVAT** výstup programaticky a pokud chyba → retry s error kontextem
- **MARKER** wrapper kolem XML pro snadné parsování

### 5. Specifika pro Kodi XML

Kodi XML má nestandardní syntax, kterou LLM nebude znát:
- `AARRGGBB` barvy (ne CSS hex)
- Absolutní pozicování (ne flexbox/grid)
- `<control type="X">` (ne HTML elementy)
- `<visible>` conditions s `+`, `|`, `!` operátory
- Manuální navigace `<onup>/<ondown>/<onleft>/<onright>`
- `$INFO[Window.Property(X)]` syntax
- `background="true"` pro async loading

Všechna tato pravidla MUSÍ být v promptu, jinak LLM vygeneruje HTML-like XML.

## Zdroje

- Web search: LLM prompt engineering structured XML output
- Web search: AI generating UI layout code from description
- Web search: validate retry pattern XML generation
- Web search: one-shot complete file output best practices

## Závěr a doporučení

Pro náš use case (Kodi XML dialog generovaný AI):
1. **Systémový prompt**: Definovat roli jako "Kodi XML skinning engine expert"
2. **Pravidla**: Vložit kompletní Kodi XML reference do promptu
3. **Few-shot**: Poskytnout 1 příklad kompletního dialogu
4. **Data**: Předat metadata seriálu/filmu
5. **Format**: Vyžadovat raw XML bez markdown
6. **Validate**: XML parse + retry s error feedbackem
7. **Fallback**: Žánrový fallback template pokud vše selže
8. **Temperature**: 0.1 pro konzistentní výstup
