AI v praxi

Jak jsem s AI postavil web o cenách benzínu, ačkoliv programátor nejsem

S pomocí AI jsem postavil web s cenami paliv, mapou čerpacích stanic a kalkulačkami. Ne proto, že by AI magicky nahradila vývojáře, ale proto, že jsem věděl, co má vzniknout a co se musí ověřit.

Minimalistická čerpací stanice propojená datovým kabelem s počítačem

Začalo to jednoduchou otázkou: dá se s AI postavit skutečná, fungující aplikace, když detailně neumím programovat?

Nechtěl jsem testovat na kalkulačce, která spočítá dvě plus dvě. To by byla nuda a hlavně by to nic nedokázalo. Hledal jsem něco, co dává smysl lidem mimo můj počítač. Tak vznikl web Ceny benzínu: přehled cen Naturalu 95, nafty a LPG, mapa čerpacích stanic, kalkulačky nákladů na cestu a srovnání s okolními zeměmi.

Internetový marketing dělám přes dvacet let. Detailně programovat neumím, ale umím vést projekt: zadat ho, rozlišit prioritu od hezké blbosti, říct ne a poznat, kdy věta „už je to opravené“ znamená skutečně opravené. A právě to se ukázalo jako podstatné.

Úvodní stránka webu Ceny benzínu s mapou čerpacích stanic
Výsledkem není demo. Je to veřejný web, který si může otevřít každý řidič.

Šest dní intenzivní práce, ne šest dní kouzel

První commit je z 9. září. Během prvních šesti dnů vznikl základ aplikace a desítky vývojových změn: aktuální i historické ceny, kalkulačky, evropské srovnání, mapa a možnost ceny u konkrétních pump doplňovat. Pak přišel běžný provoz, opravy a automatické aktualizace dat. Takže žádné „promptnul jsem to v sobotu po obědě a v neděli jsem měl startup“.

Mně samotnému zabralo zhruba 17 čistých hodin. Neznamená to, že za 17 hodin vzniklo všechno bez práce. AI mezitím generovala, upravovala a vysvětlovala kód. Já zadával směr, testoval výsledek a vracel věci, které sice vypadaly hotově, ale ve skutečnosti hotové nebyly.

Náklady navíc nebyly velké: doména stála první rok 75 Kč. Hosting na Vercelu už platím pro další projekty, takže ho sem nepočítám jako samostatný náklad. Žádný tým, žádná agentura a žádné tři měsíce porad o tom, jestli má tlačítko být o dva pixely vlevo.

Otevřená data jsou základ. Ne volná licence na bezstarostnost.

Celostátní průměry beru z týdenní datové sady Českého statistického úřadu. Obsahuje Natural 95, naftu a LPG od roku 2016. Evropské srovnání vychází z Weekly Oil Bulletinu Evropské komise a seznam čerpacích stanic z OpenStreetMap.

To, že jsou data otevřená nebo bez licenčního poplatku, neznamená, že si je člověk může prostě vzít a dělat, že spadla z nebe. U zdrojů jsou na webu uvedené odkazy a licence. U OpenStreetMap je potřeba uvádět autora dat i licenci ODbL, u ČSÚ zase zdroj a podmínky CC BY 4.0. Přesně tenhle detail AI sama od sebe neuhlídá, pokud ho do zadání nedáte.

Graf vývoje cen pohonných hmot na webu Ceny benzínu
Týdenní ceny z ČSÚ ukazují vývoj v čase. Nejsou to ceníky jednotlivých pump.

U konkrétních čerpacích stanic je situace jiná. Pro projekt jsem nenašel veřejný centrální zdroj aktuálních cen, který by šel rozumně použít. Proto mohou řidiči cenu u pumpy nahlásit sami. Stanice bez hlášení dostanou orientační krajský odhad, který je na webu přiznaný jako odhad. Jakmile se objeví skutečné hlášení, má přednost před odhadem.

Technologie bez vývojářského kouře

Celostátní data nepotřebují velkou databázi. Jsou uložená jako verzované soubory v repozitáři. Automat je načte, zkontroluje a po změně nasadí novou verzi webu. Databázi potřebují až stanice, hlášení od řidičů a upozornění na cenu. Mapa, kalkulačky i plánovač trasy jsou nad tím už jen užitečná vrstva pro člověka, který zrovna stojí u pumpy nebo plánuje cestu.

Mapa čerpacích stanic v Česku na webu Ceny benzínu
Mapa pracuje s více než třemi a půl tisíci stanicemi z OpenStreetMap. Aktuálnost cen ale stojí na hlášeních řidičů.

Technologie sama o sobě není pointa. Důležité je, že člověk nemusí ručně přepisovat tabulky, zjišťovat, co se stalo s novým číslem, nebo přemýšlet, zda plánovaná cesta vyjde na dvě stovky, nebo na čtyři. A že každý výsledek má jasně popsaný zdroj a limit.

Kalkulačka ceny cesty na webu Ceny benzínu
Kalkulačka počítá s celostátním průměrem. Neslibuje, že přesně za tuto cenu natankujete na konkrétní stanici.

Kde to skřípalo

Import stanic z OpenStreetMap se opakovaně zasekával. AI nejdřív přidala timeout, pak další timeout. Až třetí pokus našel skutečnou příčinu: hlídač kontroloval jen příchod hlaviček odpovědi, ale ne čtení samotných dat. Právě tam se import uměl zaseknout. Malá, ale užitečná lekce: „jako opraveno“ a „opraveno“ jsou dvě různé věci.

Druhý problém byl ve formuláři pro hlášení cen. Když člověk rozepsal cenu Naturalu, přepnul na naftu a vyplnil ji taky, formulář si pamatoval jen právě otevřenou záložku. V ostrém provozu tak mizely rozepsané hodnoty. Dnes drží rozpracovanou cenu pro každé palivo zvlášť a odešle je najednou.

A pak ČSÚ. Jeden automatický import se při stahování dat přerušil. E-mail z GitHubu odkazoval na neúspěšný běh, ale příčina nebyla na první pohled jasná. AI pomohla dohledat problém ve spojení, přidat opakované pokusy a srozumitelnou chybovou hlášku. Od upozornění po zelený běh to tehdy zabralo zhruba čtvrt hodiny. Jestli je to opravené navždy? Nevím. To ukáže až další porucha, protože tyhle věci mají nepříjemný zvyk objevovat se v pátek odpoledne.

Co z toho plyne

AI dnes dokáže napsat hodně kódu a výrazně zkrátit cestu od nápadu k funkčnímu výsledku. Neumí ale sama rozhodnout, co má projekt řešit, co se má měřit, jak poznat chybu v datech, jestli je licence v pořádku nebo zda má tlačítko na stránce vůbec nějaký důvod existovat.

Ruce se do velké míry vyměnit dají. Hlava, která vede projekt, testuje výsledek a nese odpovědnost za to, co jde ven, zatím ne.

Pokud řešíte podobný projekt nad daty, mapou, kalkulačkou nebo interním přehledem, napište mi. Umím ho nejen s AI postavit, ale hlavně vymyslet tak, aby dával smysl i po prvním nadšení.

Zdroje

← Zpět na blog

Pojďme se pobavit o vašem projektu.

Hovor, e-mail, nebo formulář. Odpovídám rychle a lidsky.

Ozvěte se