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.
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é.

Š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.

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.

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.

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
- Ceny benzínu – živý projekt
- Český statistický úřad: Průměrné spotřebitelské ceny pohonných hmot – týdenní
- Evropská komise: Weekly Oil Bulletin
- OpenStreetMap a licence ODbL