Návody

Strukturovaný výstup z AI: JSON, tabulky a CSV bez chyb

Jak od AI spolehlivě získat platný JSON, tabulku nebo CSV. Prompty se schématem, validace v Pythonu a řešení nejčastějších problémů s formátem.

12. 10. 2026 · 3 min čtení

AI odpovídá přirozeně textem, ale často potřebujete data: JSON pro aplikaci, tabulku do Excelu, CSV pro import. Pokud formát nezadáte přesně, dostanete něco „skoro správně“ – a skoro správný JSON je nepoužitelný JSON.

Základní pravidla

  1. Řekněte přesný formát – ne „strukturovaně“, ale „jako JSON pole objektů“.
  2. Dejte schéma nebo příklad – názvy klíčů, typy hodnot.
  3. Určete, co dělat s chybějícími daty – null, prázdný řetězec, vynechat?
  4. Zakažte okolní text – „Vrať pouze JSON, bez vysvětlení.“
  5. Výstup vždy validujte – v kódu, ne očima.

JSON se schématem

Z textu níže vytáhni údaje o objednávce. Vrať pouze platný JSON
podle tohoto vzoru, bez dalšího textu:

{
  "zakaznik": "string",
  "email": "string nebo null",
  "polozky": [
    {"nazev": "string", "mnozstvi": number, "cena_kc": number}
  ],
  "doprava": "string nebo null"
}

Pravidla:
- čísla jako čísla, ne řetězce (1250, ne "1 250 Kč"),
- chybějící údaj = null, nic nedomýšlej.

<text>
Dobrý den, objednávám 2× hrnek po 290 Kč a 1 konvici za 1 150 Kč.
Doručení Zásilkovnou. Petra Svobodová
</text>

Klíčové detaily: explicitní typy, převod „1 150 Kč“ na číslo a pravidlo pro chybějící e-mail.

Validace v Pythonu

Výstup AI vždy kontrolujte programově. Jednoduchá kontrola:

import json

raw = odpoved_ai.strip()

# AI někdy obalí JSON do bloku ```json ... ```
if raw.startswith("```"):
    raw = raw.split("\n", 1)[1].rsplit("```", 1)[0]

try:
    data = json.loads(raw)
except json.JSONDecodeError as e:
    print(f"Neplatný JSON: {e}")
    raise

Pro přísnější kontrolu struktury se hodí knihovna Pydantic (v2):

from pydantic import BaseModel

class Polozka(BaseModel):
    nazev: str
    mnozstvi: int
    cena_kc: float

class Objednavka(BaseModel):
    zakaznik: str
    email: str | None
    polozky: list[Polozka]
    doprava: str | None

obj = Objednavka.model_validate_json(raw)

Pokud validace selže, pošlete chybovou hlášku zpět AI: „Tvůj JSON neprošel validací: [chyba]. Oprav ho.“

JSON přes API

Pokud voláte AI přes API kompatibilní s OpenAI (například ColdHost AI na https://coldhost-ai.cz/v1), můžete postup automatizovat:

from openai import OpenAI

client = OpenAI(base_url="https://coldhost-ai.cz/v1", api_key="VAS_API_KLIC")

resp = client.chat.completions.create(
    model="coldhost-glacier",
    messages=[
        {"role": "system", "content": "Odpovídej pouze platným JSON podle zadaného vzoru."},
        {"role": "user", "content": prompt},
    ],
)
raw = resp.choices[0].message.content

API klíč získáte v Nastavení → API. Klíč nikdy neukládejte přímo do kódu v repozitáři – načtěte ho z proměnné prostředí. Validaci výstupu i tak ponechte.

Tabulky v Markdownu

Pro čtení v chatu je ideální Markdown tabulka:

Porovnej tyto 3 notebooky v tabulce se sloupci:
Model | Procesor | RAM | Hmotnost | Výdrž baterie
Hodnoty, které v podkladech nejsou, označ "—".
Pod tabulku napiš max. 3 věty doporučení.

CSV pro Excel

U CSV pro český Excel pozor na oddělovač – česká lokalizace Excelu obvykle očekává středník, protože čárka je desetinný oddělovač:

Vrať data jako CSV:
- oddělovač středník (;),
- první řádek hlavička,
- desetinná čárka (12,50),
- text obsahující středník dej do uvozovek.
Bez dalšího textu.

Po uložení souboru zkontrolujte, že má každý řádek stejný počet sloupců:

awk -F';' '{print NF}' data.csv | sort | uniq -c

Pokud vidíte víc než jedno číslo, některý řádek je rozbitý (typicky kvůli neošetřenému středníku v textu). Tato jednoduchá kontrola nepočítá s uvozovkami – u složitějších dat použijte modul csv v Pythonu.

Nejčastější problémy

Problém Řešení
Text před/za JSON „Vrať pouze JSON“ + odstranění ``` v kódu
Čísla jako řetězce uveďte typ v schématu, příklad s číslem
Vymyšlené hodnoty „chybějící údaj = null, nic nedomýšlej“
Uříznutý dlouhý JSON zpracovávejte data po menších dávkách
Nekonzistentní klíče dejte přesný vzor, ideálně s příkladem
Komentáře v JSON „JSON nesmí obsahovat komentáře“

Shrnutí

Strukturovaný výstup je o přesnosti: přesný formát, schéma, pravidla pro chybějící data a vždy validace v kódu. S tím vám AI spolehlivě převede volný text na data, se kterými můžete dál pracovat.