AI v každodenní práci · lekce 7 z 8 · 12 min čtení
Analýza dat a dokumentů
Jak s AI shrnovat dlouhé dokumenty a smlouvy, vytahovat z nich data do tabulek a analyzovat tabulky. Proč má model počítat kódem, a ne „z hlavy“, proč chtít postup, ne jen výsledek, a jak čísla rychle zkontrolovat vzorkem.
Na stole máš čtyřicetistránkovou smlouvu s dodavatelem, kterou je potřeba do zítřka projít. Vedle ní tabulku s dvěma tisíci řádky prodejů, ze které má šéf do pátku dostat „pár čísel a závěrů“. Přesně tohle jsou úlohy, u kterých si lidé od AI slibují nejvíc, a právem: model přečte smlouvu za pár vteřin a s tabulkou umí pracovat rychleji než většina z nás.
Jenže tady chyba nebolí jen esteticky jako u e-mailu. Vynechaná výpovědní lhůta nebo špatně sečtený sloupec se propíše do rozhodnutí. V téhle lekci uvidíš, jak s dokumenty a daty pracovat tak, aby ti AI ušetřila čas a přitom jsi věděl, čemu můžeš věřit.
Shrnutí dlouhých dokumentů
Shrnutí vypadá jako nejbezpečnější úloha: všechno potřebné je přece v dokumentu. Částečně to tak je. Když model pracuje s dodaným textem, halucinuje méně, než když odpovídá z paměti. Shrnutí má ale jednu vlastnost, na kterou se zapomíná: shrnout znamená vybrat. Model rozhoduje, co je důležité, a jeho „důležité“ se nemusí krýt s tvým.
Co se může pokazit
- Vynechání. Model zařadí, co v podobných dokumentech bývá podstatné. Nestandardní ujednání, které je pro tebe klíčové právě proto, že je nestandardní, se do shrnutí nemusí dostat.
- Ztraceno uprostřed. Jak víš z lekce Kontextové okno, modely využívají začátek a konec dlouhého textu lépe než jeho střed. U smlouvy je přitom uprostřed často právě to zajímavé: sankce, odpovědnost, výjimky.
- Doplnění „obvyklého“. Model do shrnutí přidá to, co ve smlouvách tohoto typu bývá, i když ve tvé smlouvě je to jinak. Typicky lhůty, záruky, automatické prodloužení.
- Ztracené výjimky a zápory. „Dodavatel odpovídá za škodu, s výjimkou…“ se ve shrnutí snadno zkrátí na „dodavatel odpovídá za škodu“. Věta je kratší a úplně jiná.
- Promíchání stran nebo období. Povinnost odběratele se připíše dodavateli, cena pro druhý rok se uvede jako cena pro první.
Jak to dělat lépe
Řekni, k čemu shrnutí potřebuješ. „Shrň tuhle smlouvu“ dá obecné shrnutí. „Jsem odběratel a rozhoduji, jestli smlouvu podepsat. Vypiš všechno, co nás zavazuje, všechny lhůty a sankce a podmínky ukončení“ dá shrnutí, které ti k něčemu je.
Chtěj odkazy na místo v dokumentu. Ke každému bodu ať model uvede článek nebo stranu, odkud ho vzal, ideálně s doslovnou citací. Doslovnou citaci najdeš v originále přes Ctrl+F za pár vteřin. Tenhle postup doporučuje i Anthropic ve své dokumentaci: u dlouhých dokumentů nejdřív nechat vytáhnout doslovné citace a teprve z nich odvozovat odpověď.
Dlouhé dokumenty rozděl. Místo celé smlouvy najednou se ptej po částech (články 1–5, 6–10…), nebo se ptej cíleně: „Co přesně říká smlouva o ukončení? Cituj.“ Menší kus textu znamená menší riziko, že se něco ztratí uprostřed.
Zeptej se i na to, co v dokumentu není. „Je ve smlouvě ujednání o smluvní pokutě? Pokud ne, napiš výslovně, že není.“ Když model musí výslovně odpovědět „není tam“, je menší šance, že ti chybějící věc tiše doplní z obecných znalostí.
Vytahování dat z dokumentů do tabulek
Druhá velmi užitečná úloha je opačná: z hromady nestrukturovaných dokumentů udělat tabulku. Třicet faktur v PDF do přehledu dodavatel – datum – částka. Padesát životopisů do tabulky s praxí a jazyky. Odpovědi z e-mailů do seznamu požadavků.
- Extrakce dat(data extraction)
- Vytažení konkrétních údajů (jména, data, částky, kategorie) z textu nebo dokumentu do pevné struktury, typicky tabulky. Model tu nic nevymýšlí ani nehodnotí, jen najde a přepíše, co v dokumentu je.
Pár pravidel, díky kterým extrakce funguje:
- Přesně urči sloupce a formát. „Datum ve formátu RRRR-MM-DD, částka jako číslo bez měny, měna ve zvláštním sloupci.“ Jak modelu zadat pevnou strukturu výstupu, rozebírá lekce Strukturovaný výstup.
- Řekni, co dělat, když údaj chybí. „Pokud údaj v dokumentu není, nech buňku prázdnou. Nic neodhaduj.“ Bez toho model občas doplní věrohodnou hodnotu.
- Přidej sloupec se zdrojem. Název souboru a strana, nebo krátká citace. Při kontrole pak víš, kam se podívat.
- Zkontroluj počet. Třicet faktur má dát třicet řádků. Když jich je dvacet osm, model dvě vynechal (nebo je spojil), a to je nejčastější chyba u větších dávek.
Tabulky a čísla: proč má model počítat kódem
Teď to nejdůležitější z celé lekce. Když vložíš do chatu tabulku a zeptáš se „jaký je celkový obrat za březen“, může se stát dvojí věc a na výsledku to často nepoznáš.
Varianta A: model „počítá z hlavy“. Tabulku přečte jako text a výsledek napíše tak, jak píše všechno ostatní: odhadem dalšího tokenu. Z lekcí Tokeny a Předpověď dalšího slova víš, proč je to zrádné. Model nevidí číslo 1 287 450 jako hodnotu, ale jako několik kousků textu. A když píše součet, nesčítá: odhaduje, jaká číslice by na tom místě věrohodně následovala. U malých příkladů se trefí, u stovek řádků vyrobí číslo, které vypadá správně.
Varianta B: model napíše a spustí kód. Mnohé AI nástroje dnes umí spouštět kód (code execution). Model napíše krátký program, obvykle v jazyce Python, ten program skutečně načte tvůj soubor a spočítá výsledek. Model pak jen přečte, co program vrátil, a popíše to. Sčítání tady dělá počítač, ne odhad dalšího tokenu.
- Spouštění kódu(code execution)
- Funkce AI nástroje, kdy model napíše program (typicky v Pythonu) a ten se spustí v izolovaném prostředí. V době psaní ji v ChatGPT najdeš jako analýzu dat (data analysis), v Claudovi jako tvorbu a úpravy souborů; názvy se ale mění. Výpočty pak dělá program, ne jazykový model.
Rozdíl v přesnosti je zásadní, a proto pravidlo: na čísla, na kterých záleží, vždy chtěj výpočet kódem. Napiš to výslovně („spočítej to v Pythonu“, „použij analýzu dat“) a ověř si, že to nástroj opravdu udělal. Poznáš to tak, že v odpovědi je blok s kódem nebo odkaz „zobrazit analýzu“, který můžeš rozbalit. Které nástroje to umí a jak se funkce zapíná, probírá lekce Když nestačí chat.
Vyzkoušej si: jak model vidí text
Napiš cokoli. Každý barevný dílek je jeden token, číslo pod ním je jeho ID ve slovníku modelu.
Načítám tokenizér…
Znak ␣ je mezera, která patří k tokenu. Tokenizér je skutečný (modely GPT-4o od OpenAI); jiné modely dělí text trochu jinak, princip je stejný.
Zkus si v ukázce výše, jak model vidí čísla. Velká čísla se rozpadají na několik tokenů a mezery a desetinné čárky jsou další samostatné kousky. Když z takových útržků má model „z hlavy“ sečíst stovky řádků, není divu, že se plete.
Do hloubkyProč ani kód nezaručí správný výsledek
Spouštění kódu odstraní chyby v samotném počítání. Nechrání ale před chybami v tom, co se počítá. Program udělá přesně to, co mu model napsal, a model ho napsal podle toho, jak pochopil zadání a data. Typické chyby:
- Špatné načtení souboru. Česká CSV používají často středník jako oddělovač a desetinnou čárku. Program nastavený na anglický formát pak přečte „1 299,50“ jako text, ne číslo, nebo rozdělí sloupec ve špatném místě. Řádky s chybou může tiše vynechat.
- Špatný sloupec nebo filtr. Model sečte „cena“ místo „cena celkem“, nebo do „března“ započítá i první dubnový den kvůli časovému pásmu.
- Nevyjasněné definice. Co je „aktivní zákazník“? Počítají se vratky jako záporné tržby, nebo se vynechávají? Program nějakou definici použije vždycky, jen ti ji nemusí říct.
- Duplicity a chybějící hodnoty. Dvakrát exportovaný řádek se sečte dvakrát, prázdná buňka se počítá jako nula nebo se vynechá.
Proto nestačí, že výsledek spočítal kód. Musíš vědět, jak ho spočítal, a to je téma další části.
Chtěj postup, ne jen výsledek
Číslo samo o sobě nejde zkontrolovat. Postup ano. Ke každé analýze proto chtěj, aby model napsal:
- Jak data načetl. Kolik řádků a sloupců našel, jaké jsou názvy sloupců a jaké typy dat (číslo, datum, text). Pokud čekáš 2 000 řádků a model hlásí 1 940, něco se ztratilo.
- Co s daty udělal, než začal počítat. Odstranil duplicity? Jak naložil s prázdnými buňkami a vratkami? Převáděl měny?
- Jaké definice použil. Co přesně považoval za „tržby“, „měsíc“, „aktivního zákazníka“.
- Jaké předpoklady udělal tam, kde zadání nebylo jasné.
Tohle všechno můžeš chtít předem: „Než začneš počítat, popiš, jak rozumíš datům, a zeptej se, pokud je něco nejasné.“ Často tím odhalíš nedorozumění dřív, než z něj vzniknou čísla v prezentaci.
Kontrola čísel vzorkem
Nemusíš přepočítávat všechno. Stačí pár rychlých testů, které odhalí většinu chyb. Říká se tomu kontrola vzorkem (spot check).
- Celkový součet. Jedno číslo (třeba celkové tržby) si spočítej sám v Excelu funkcí SUMA. Když nesedí, nesedí nic dalšího.
- Počet řádků. Sedí s tím, kolik jich má soubor?
- Jeden konkrétní případ ručně. Vyber jednoho zákazníka nebo jeden den a dohledej jeho čísla v tabulce sám.
- Extrémy. Největší a nejmenší hodnota. Často prozradí chybu v načtení (záporná cena, objednávka na deset milionů).
- Selský rozum. Rostly tržby o 400 %? Je to možné, nebo je někde chyba? Když výsledek překvapí, je to důvod ověřovat víc, ne méně.
Situace: máš export z e-shopu prodeje_2025.csv se sloupci datum, číslo objednávky, region, produkt, kusy, cena za kus, stav (dokončeno / vráceno / zrušeno). Šéf chce vědět, který region roste nejrychleji a které produkty táhnou.
Prompt:
V příloze je CSV s prodeji (oddělovač středník, desetinná čárka, ceny v Kč). Prosím:
- Načti ho pomocí Pythonu a napiš mi počet řádků, sloupce a jejich datové typy. Upozorni na prázdné hodnoty a duplicitní čísla objednávek.
- Tržby počítej jako kusy × cena za kus, jen u objednávek ve stavu „dokončeno“.
- Spočítej tržby po regionech a měsících a meziměsíční růst. Vypiš top 5 produktů podle tržeb.
- Na konci shrň, jaké předpoklady jsi udělal a co mám ověřit.
Všechny výpočty proveď kódem, ne odhadem.
Na co se v odpovědi podívat:
- Odpovídá počet načtených řádků souboru? Pokud model hlásí, že sloupec cena za kus je „text“, špatně přečetl desetinnou čárku a výsledky nebudou sedět.
- Našel duplicitní objednávky? Pokud ano, rozhodni ty, jestli jsou to chyby exportu, nebo skutečné opakované nákupy.
- Celkové tržby porovnej se součtem v Excelu (se stejným filtrem na „dokončeno“).
- Jeden region a jeden měsíc spočítej ručně přes filtr.
Kde je hranice: čísla spočítá kód. Ale vysvětlení, proč region roste, model jen odhaduje z toho, co v datech vidí. Napíše třeba „růst je pravděpodobně způsoben sezónností“, a to je hypotéza, ne zjištění. Ber ji jako tip, co prověřit, ne jako závěr do prezentace.
Situace: 400 zaměstnanců odpovědělo na otázku „Co by ti nejvíc ulehčilo práci?“ volným textem.
Postup ve dvou krocích:
- Kategorizaci dělá model. „Navrhni 6–8 kategorií odpovědí. Pak každou odpověď přiřaď do jedné kategorie a výsledek vrať jako tabulku ID odpovědi – kategorie.“ Tady je jazykový model opravdu silný: chápe, že „věčně padající VPN“ a „pomalé připojení z domu“ patří k sobě.
- Počítání dělá kód. Četnosti kategorií ať spočítá program z té tabulky, ne model při psaní shrnutí.
Kontrola: projdi náhodně 20–30 odpovědí a podívej se, jestli sedí jejich kategorie. Pokud se mýlí u třetiny, kategorie jsou špatně navržené a je potřeba je upravit, ne jen přepočítat.
Citlivá data: nejdřív se zeptej, kam to posíláš
Smlouvy, mzdové tabulky, zákaznické databáze a výsledky interních průzkumů patří k nejcitlivějším datům ve firmě. Přesto jsou to přesně ty soubory, které lidé do AI vkládají nejčastěji, protože právě s nimi je nejvíc práce.
Než nahraješ dokument nebo tabulku, ověř si, jestli tvůj nástroj a tarif odpovídají tomu, co v souboru je. Osobní bezplatný účet a firemní plán se smlouvou o zpracování dat jsou dva různé světy, jak podrobně rozebírá lekce Kam putují tvoje data. Pokud firemní plán nemáš:
- Anonymizuj. Jména nahraď kódy (Zákazník 001), odstraň e-maily, rodná čísla, čísla účtů. Pro analýzu trendů jména stejně nepotřebuješ.
- Pošli jen sloupce, které jsou potřeba. Na tržby po regionech nepotřebuješ adresy.
- Pracuj se vzorkem nebo s vymyšlenými daty stejné struktury. Model ti napíše postup nebo vzorce, které pak sám spustíš na skutečných datech u sebe.
Co si odnést
- Shrnout znamená vybrat. Řekni modelu, k čemu shrnutí potřebuješ, chtěj odkaz na článek nebo citaci u každého bodu a dlouhé dokumenty rozděl.
- Hlídej vynechané výjimky, „obvyklé“ údaje doplněné z tréninku a informace ztracené uprostřed dlouhého textu. Shrnutí smlouvy nenahrazuje právníka.
- Při extrakci do tabulky urči sloupce, řekni, co dělat s chybějícím údajem, a zkontroluj počet řádků.
- Model „z hlavy“ nepočítá, ale odhaduje další token. Na čísla používej spouštění kódu a chtěj vidět postup: jak data načetl, co vyčistil, jaké definice a předpoklady použil.
- Čísla ověřuj vzorkem: celkový součet, počet řádků, jeden případ ručně, extrémy, selský rozum.
- Citlivá data nahrávej jen do nástroje s odpovídajícím tarifem. Jinak anonymizuj, posílej jen potřebné sloupce, nebo pracuj s ukázkovými daty.
Zdroje a další čtení
- Liu a kol.: Lost in the Middle: How Language Models Use Long Contexts (2023) – výzkum o tom, proč modely přehlížejí informace uprostřed dlouhého vstupu.
- Anthropic: Reduce hallucinations – technika doslovných citací u dlouhých dokumentů a další postupy.
- OpenAI Academy: Data analysis – jak ChatGPT píše a spouští kód v Pythonu nad nahranými daty a proč výsledky ověřovat.
- Claude Help Center: Create and edit files with Claude – příklad funkce, kdy model píše a spouští kód nad nahranými soubory, včetně CSV.