11 příkladů, jak může ChatGPT pomoci ajťákům a vývojářům. AI poradí s Excelem i programováním | Zdroj: Midjourney

Zdroj: Midjourney

11 příkladů, jak může ChatGPT pomoci ajťákům a vývojářům. AI poradí s Excelem i programováním

  • ChatGPT může fungovat jako ajťák a programátor na telefonu
  • Zkusíme ho potrápit Excelem i příkazovou řádkou
  • Bude také programovat, analyzovat a hledat chyby

S automatem ChatGPT si za posledních několik měsíců pohrálo ohromné množství lidí nejrůznějších profesí. Internet se plní tipy, jak z neuronky vytáhnout odpovědi i na docela zapeklité dotazy.

Pojďme si to také vyzkoušet. Potrápíme ho vzorci pro Excel, příkazovou řádkou PowerShell pro Windows, regulárními výrazy a tvorbou, překladem i analýzou kódu v Pythonu a C včetně hledání chyb v syntaxi a sémantice.

Dotazy budeme pokládat výhradně v češtině, anglických ukázek je totiž plný internet. Díky tomu je to zároveň dobrý test jazykových schopností robota.

Vytvoř funkci pro Excel

Vzorce v Excelu jsou strašákem všech strašáků. Přiznám se, že je prakticky nepoužívám, takže se mi moudrost AI parťáka náramně hodila. Dejme tomu, že chci v tabulce vyrobit vyhledávač, který najde hodnotu zadanou do buňky J1 ve sloupci A a vrátí odpovídající hodnotu ze sloupce E. Podívejte se dole na snímek okna programu, ze kterého vše pochopíte.

5321dd17-c3ef-465d-875d-2f34fa546162

ChatGPT bez problému porozuměl komplexnímu dotazu v češtině a vyplivnul řešení včetně vysvětlení všech parametrů funkce VLOOKUP.

Má to ale jeden podstatný háček. Excel používám v české lokalizaci, kde jsou přeložené i funkce a VLOOKUP se používá v podobě SVYHLEDAT. K tomu parametry vzorce odděluje středník a nikoliv čárka. Excel bohužel zobrazil jen nicneříkající generickou chybu, takže jsem nakonec stejně pro radu zamířil na Google.

20d903b7-b3ad-4aae-aa18-6b2a5c89890f
První pokus nevyšel, ale tak jednoduše se nevzdám

S Excelem v ChatGPT proto ještě nekončíme. K vyřešení problému totiž využijeme nejsilnější zbraň automatu, která se skrývá už v jeho názvu!

Pokračování 2 / 12

Nefunguje to, ale pomůže debata s robotem

První selhání bylo do jisté míry naplánované, protože si alespoň můžeme ukázat silnou zbraň technologie od OpenAI. Jelikož má už ve svém názvu „Chat,“ drží kontext debaty a namísto nového pokusu mohu původní dotaz zpřesnit.

Nakonec jsem si dohledal, že funkce VLOOKUP není ani s korektními středníky zrovna nejvhodnější, takže dám automatu povel, aby použil novější funkci XLOOKUP. Tady jsem měl štěstí, protože tuto funkci má ve stejné podobě i český Excel, nepřekládá ji.

a684de7f-382b-4c31-8fc8-359304b3011e

Odpověď je sice korektní, ale český Excel používá pro oddělení parametrů středník. Je s podivem, že tento banální začátečnický problém nedokáže Office automaticky opravit ani v roce 2023, a tak dotaz opět upravím.

7b71c194-7527-4dd0-ad55-32eed278e322

Heuréka! Konečně máme funkční vzorec a naivní vyhledávač konkrétního parametru v tabulce Excelu. Naprostý začátečník by sice podobně jako já narazil, tomu zkušenějšímu, který už ví, jak mají zhruba vzorce vypadat, ale může ChatGPT pomoci na první dobrou, anebo se výsledku společně doberou v podobné debatě.

8deb2c2f-3f58-4d1b-bee6-1df5ac6e560f
Funkční primitivní vyhledávač pomocí vzorečku, který zkonstruoval ChatGPT

Pokračování 3 / 12

Stáhni a ukaž kurzovní lístek v PowerShellu

PowerShell je téměř všemocný nástroj, který má v systému každý majitel počítače s novější verzí Windows. Tento skvělý příkazový řádek nabízí tisíce a tisíce příkazů, ve kterých se ale vyznají snad jen inženýři z Redmondu. Zvládne to ChatGPT a dokážeme s jeho pomocí stáhnout a zobrazit kurzovní lístek ČNB?

62c42acc-7ee5-491e-a70d-22766074c8f1

Stažený textový soubor kurzovního lístku ČNB je formátovaný jako CSV, přičemž oddělovačem sloupců je znak „|“. Zároveň je třeba ignorovat první řádek s datem. ChatGPT na první dobrou vše pochopil a vyrobil funkční příkaz. 

c4e554cc-28b3-412c-893a-f13182bb1de6
Příkaz, který stáhne a rozřeže kurzovní lístek v CSV a zobrazí jej jako textovou tabulku

Tentokrát to vyšlo, ale je třeba připomenout, že práce s ChatGPT připomíná ten pomyslný vrcholek ledovec. Na sociálních sítích najdete desítky a stovky ukázek, co všechno dokáže, ovšem často tomu předchází hromada pokusů, kdy automat prostě selže.

Svým způsobem je to tedy takový pedagog, který vás nakonec pokusem-omylem naučí to, co po něm vlastně chcete. Třeba zrovna vzorce z Excelu a základy PowerShellu.

Pokračování 4 / 12

Stáhni a zobraz kurzovní lístek v Pythonu

Pojďme ukázat příklad s kurzovním lístkem ČNB v univerzálnějším skriptovacím jazyku Python, který je volitelně dostupný prakticky na všech počítačových platformách a operačních systémech.

34265979-a68f-40f8-93f8-547a502ac0fb

ChatGPT použil pro stažení dat oblíbenou knihovnu Requests, jinak si ale vystačil se zabudovanými funkcemi.Mimochodem každá interpretace zadání vygeneruje opět jiný kód. Když jsem to tedy zkusil podruhé, ChatGPT do hry zapojil další oblíbenou knihovnu pro práci s tabulkami Pandas. Ta je pro takto jednoduchý scénář nadbytečná, ale může se vyplatit zeptat se robota několikrát a potom si vybrat.

19a04480-5749-4d89-93e3-d6528d51f1d1
Stažení kurzovního lístku, jeho rozřezání a zobrazení hodnot oddělených tabulátorem

Funguje to až na jednu drobnost, kterou bychom dopilovali dalším dotazováním. Robot podmínku „ignoruj první řádek“ použil v kódu dvakrát, takže ve výstupu chybí uvedení data, což je sice v pořádku, ale také hlavička tabulky s názvy sloupců. 

Pokračování 5 / 12

Přelož příkaz v PowerShellu do Pythonu

Silnou zbraní ChatGPT vedle generování programového kódu je i jeho překlad do jiných jazyků. Dejme tomu, že chceme přeložit do Pythonu opět příkaz v PowerShellu. Ten znovu stáhne kurzovní lístek, ale tentokrát v něm vyhledá řádky obsahující text „EUR.“

25b1493a-cb56-487c-b18f-a3c21915d924

Překlad kódu z jednoho jazyka do druhého je už královská disciplína, která vyžaduje naprosté porozumění vstupu, aniž by se z toho stala tak trochu tichá pošta.

S tímto mentálním nastavením je tedy úspěch už to, když ChatGPT vygeneruje alespoň něco. Na první pokus to třeba dělá trošku jinou věc, ale poslouží to alespoň jako dobrý základ. V tomto případě byl použitelný až pátý výsledek, dialog s robotem jsem ale pro přehlednost skryl.

f8d68187-6f78-48e1-86ee-98cefa22a1b0
Výborně, přesně toto jsme chtěli

Pokračování 6 / 12

Vytvoř regulární výraz pro vyhledání data

Na regulárních výrazech si už vylámal zuby nejeden expert a pro domácí kodéry je to často naprosté peklo. Takzvané regexy jsou přitom téměř všudypřítomné jako textové vzory pro pokročilé vyhledávání. Jak si s nimi poradí ChatGPT? Zavelíme, aby vytvořil regex pro vyhledání data ve formátu dd.mm.yyyy.

7cd4ba2f-9a80-4b6a-b8ee-7841cde46876

Zkušení regexeři už vidí, že ChatGPT sice odpověděl funkčním výrazem, který je ale příliš primitivní. Vyhledá cokoliv ve formátu čč.čč.čččč, kde znak č představuje číslici – takže i neplatné datum 32.13.2023. Můžete si to ověřit třeba v mém oblíbeném editoru regulárních výrazů RegExr.

938e19d5-6009-460b-ac62-7da7f81f6237
RegExr potvrdil, že je vyhledávač data příliš obecný a nebere v potaz platný rozsah

Neházejme ale flintu do žita, vždyť se přece bavíme s chatbotem a dotaz můžeme zpřesnit. Ukážeme si to opět na samostatném listu.

Pokračování 7 / 12

Vedeme dialog a vylepšujeme dotaz

ChatGPT drží kontext debaty v aktuálním vlákně, takže pokud se nám první výsledek nelíbí, můžeme dotaz víc specifikovat, aniž bychom začínali zase od nuly.

00c475d4-e6a2-47d9-9781-f5dfd705b862

Uf, trošku se nám to protáhlo, letmým pohledem na výsledek je ale patrné, že ChatGPT do výrazu doplnil několik dalších filtrů. Ověříme to opět v editoru regulárních výrazů RegExr s textem, který obsahuje neplatné datum 32.13.2023.

98ab1a75-bd22-42f1-b426-6b029b23dd51
Chybné datum regex ignoruje

Výborně, tento regex je už chytřejší a označí jen platné datum ve formátu dd.mm.yyyy, takže třeba 24.12.2022 jako na obrázku níže.

9ed53f72-5d29-48fa-a09a-cdca9a79f587
To validní už najde a označí

Možná jste si všimli, že náš regulární výraz stále není dokonalý. Různé měsíce mají různou platnou délku a filtr zároveň omezuje letopočet jen na roky 1900 až 2099. Výraz pro rok ve znění (19|20)\d\d totiž můžeme přeložit do češtiny jako: číslo 19, nebo 20 následované dvěma číslicemi. Další konverzací s chatbotem se ale opět dobereme kýženého výsledku.

Pokračování 8 / 12

V jakém jazyku je napsaný tento dlouhý kód?

ChatGPT zvládne ještě jednu skvělou věc. Díky tomu, že umí kód tvořit, dokáže jej zpravidla i docela dobře vysvětlit.

Schválně jestli pochopí obsah mého primitivního textového programu v C pro Windows, který se po spuštění spojí skrze USB se stolním multimetrem Multicomp Pro MP730424 a začne vypisovat a případně i ukládat naměřené hodnoty do textového souboru CSV. Začneme nejprve zlehka a zeptáme se, co je to za programovací jazyk.

764b6e41-0145-4c2a-8649-d092b681cb84

Fajn, bezchybná odpověď. V další kapitole se ale chatbota zeptáme, co program vlastně dělá.

Pokračování 9 / 12

Vysvětli, co dělá tento dlouhý kód

V dalším kroku chceme po ChatGPT srozumitelný popis životního cyklu programu, jehož zdrojový kód mu opět celý zkopíruji do chatu. Kvůli jeho délce totiž už ztrácí kontext a příliš se nechytal, když jsem jej žádal o to, aby použil již ten, který má na začátku vlákna z předchozího dotazu.

70df24ae-84d1-4e9c-bab0-d47c44e5b2a0

Perfektní, nemám slov! ChatGPT bezchybně popsal celý životní cyklus programu, přičemž z anglických stručných komentářů v kódu doplnil i to, že se jedná o multimetr.

Když textový popisek výše srovnáte s obrázky programu v reálném chodu, jistě mi dáte za pravdu, že tady nelze vznést jedinou námitku. Byl jsem zvědavý právě na analýzu (byť jednoduchého) kódu v C s využitím Win32 API, protože mnohem populárnější Javascript a Python zná ChatGPT poměrně dobře a měl k němu při úvodním učení mnohem více dat – přinejmenším celý GitHub.

76f46198-af41-48b1-813f-eb56a186740eef987cbd-86f9-4a4e-a575-e4aa5ba7b75e
Program v akci

Pokračování 10 / 12

Kde je v kódu syntaktická chyba?

Analytické schopnosti ChatGPT jsou občas opravdu ohromující, kód totiž dokáže nejen projít a vysvětlit, ale odhalí i případné chyby. Pojďme to ukázat opět v Pythonu, který má nastudovaný asi nejlépe. Python používá pro hodnotu pravdy slovo True. Já v nekonečné smyčce níže použiji chybné true. Odhalí to?

02b98fa5-c5d6-42bf-8e37-5b4d06237642

ChatGPT základní syntaktickou – formální – chybu okamžitě odhalil, vše vysvětlil a ukázal korektní variantu. Sice nemá správné odsazení bloků, ale to mu odpustíme.

Pokračování 11 / 12

Kde je v kódu sémantická chyba

No dobrá, za detekci špatného zápisu kódu má automat za 1★, dokáže ale ChatGPT odhalit i sémantickou – významovou – chybu?

Dejme tomu, že jsme předchozí program upravili tak, aby vypisoval zprávu „Máme rádi ChatGPT,“ dokud je proměnná „i“ menší než 10, přičemž ji ve smyčce v každém cyklu navýšíme o 1. Jenže omylem proměnnou navýšíme o hodnotu -1, takže se bude naopak snižovat a smyčka bude prakticky nekonečná.

2224784e-a36f-460f-b915-cfe4f52f94ed

Opět skvělá práce, chatbote, byť je třeba přihlédnout k tomu, že se jedná opravdu o jednoduchý příklad. Podle ohlasů na sociálních sítí se však ChatGPT občas podaří odhalit i mnohem sofistikovanější bubáky a potenciální zranitelnosti, které by mohl zneužít záškodník třeba ke kybernetickému útoku. My si vystačíme s touto pitomostí, kterou s trochou vůle pochopí i vaše čivava.

Pokračování 12 / 12

Pozor na růžové brýle!

Na závěr si připomeňme jedno velké ALE! Internet je plný ukázek, ve kterých ChatGPT dosahoval ohromujících výsledků. Není to ale pravidlo a je třeba k němu takto přistupovat!

Programátoři a experti všeho druhu nadšeně zveřejňují, co všechno ChatGPT dokázal, ale to je opravdu vrcholek ledovce. Zdaleka nefunguje vždy na první dobrou a zdárné odpovědi předcházely třeba i desítky dotazů, se kterými se už na webu nikdo nepochlubil.

64031176-089d-4063-bd38-799b1d7e9b2b8ccc2852-cf88-41f8-ae23-94849aba3022
Takto vypadala příprava článku ve skutečnosti. ChatGPT je kvůli enormnímu zájmu prakticky neustále přetížený a často vyskakují chybová hlášení

Ostatně, ukázali jsme si to už na příkladu s Excelem v úvodu článku. Jelikož jej opravdu neovládám, nakonec mi hledání správné odpovědi s chatbotem zabralo dlouhé desítky minut. V tomto případě by byl prostý dotaz do Googlu, nebo rovnou do služeb jako StackOverflow a Quora, asi mnohem efektivnější. 

Při ladění korektní odpovědi pomocí doplňujících příkazů je zároveň ChatGPT pod enormní zátěží, a tak si na odpovědi počkáte třeba i desítky sekund. Anebo rovnou vyskočí omluva, že je služba přetížená.

Jak pracuji s ChatGPT

Marek Lutonský

Protože nejsem vývojář a programuji, jen když si něco potřebuji udělat, zapomínám syntaxi. Plete se mi R, Python, Apps Script, VBA… nikdy nevím, kde mají být čárky, kde odsazení, jak se zrovna tady dělá smyčka. Takže i když poznám situace, kdy by mi pomohlo nějaké makro, často stejně tu automatizovatelnou operaci naklikám ručně. Než bych kód poskládal, budu to mít rychleji hotové tradičním způsobem.

Už ne, díky ChatGPT. Zeptám se a dostanu kód. Projdu ho – tím se mimochodem učím –, laděním po krocích zjistím, jestli dělá to, co chci. A pak už jen pustím. Třeba tady, kdy jsem chtěl odstranit ochranu ze všech listů tabulky Google. Postupně asi z deseti tabulek, kdy bych se uklikal.

image.png

Zkuste si na ChatGPT vzpomenout, když řešíte nějaký problém s kódem. Může hodně pomoci. Na druhou stranu je někdy nutné uznat, že se při konverzaci s robotem točíte v kruhu a nevede k výsledku. Pak je lepší začít znovu od začátku, nebo to třeba vzdát, že tentokrát to s AI nevyšlo.

Určitě si přečtěte

Články odjinud