Denník N

Chatbot za mňa naprogramoval 3 programátorské úlohy

openAI, Foto: Rafael Henrique
openAI, Foto: Rafael Henrique

My informatici sme zvláštni ľudia – oddychujeme a bavíme sa rozmýšľaním, napríklad riešením logických úloh. Prípadne hraním sa s rôznymi technologickými vychytávkami. Prečo tieto dve veci nespojiť?

Každý rok 1. decembra sa začína Advent of code. Je to v podstate adventný kalendár, akurát namiesto čokoládok si každý deň otvoríme novú programátorskú úlohu. K úlohe je krátky popis problému (zvyčajne je to niečo ako Santa Claus nevie trafiť k deťom domov alebo elfovia potrebujú poradiť ako správne zabaliť darčeky), vstup a je treba zadať správny výstup. Ako správny informatik som sa po minulé roky snažil úlohy vyriešiť.

Tento rok som sa však pokúsil o niečo zaujímavejšie. Po článkoch od Petra KoubskéhoOtakara Horáka som sa s ChatGPT pohral aj ja. Najprv sme sa trošku porozprávali o jednoduchých veciach (dal som mu napísať zaľúbenú báseň, poprosil som ho o vyriešenie súkromného problému alebo som sa ho opýtal na Igora Matoviča), no potom sme rovno skočili na prvú úlohu.

V skratke: bolo treba vypočítať, ktorý elf má vo svojich zásobách jedla najviac kalórií, a správne napísať počet kalórií. Vstup boli čísla reprezentujúce počet kalórii v jedlách, prázdny riadok značil koniec inventáru jedneho elfa a začiatok druhého:

1000
2000
3000

4000

5000
6000

7000
8000
9000

10000

V tomto prípade je teda správna odpoveď elf číslo 4, ktorý so sebou niesol jedlo s 24000 kalóriami. Samozrejme, toto bol len testovací vstup na ktorom bola demoštrovaná úloha, skutočný vstup úlohy má niekoľko tisíc riadkov (najmä aby to niekto neskúšal riešiť ručne). Keď som chatbotovi úlohu popísal, poprosil som ho, aby mi vyriešil úlohu v jazyku C#. Výstupom bol kód (dokonca okomentovaný), ktorý však nebol správny. Musel som si ho pozrieť a sám prísť na problém. V skratke: aj keď problém vyriešil dobre, v poslednom kroku vrátil nesprávne dáta. Po upozornení chatbot problém v kóde sám opravil a úloha bola vyriešená správne. To všetko za menej ako 10 minút.

Vyriešená programátorská úloha chatbotom ChatGPT
Vyriešená programátorská úloha chatbotom ChatGPT

Druhá úloha bola trochu ťažšia. Ako vstup bol plán hrania hry KPN (Kameň Papier Nožnice):

A Y
B X
C Z

Prvé písmenko na každom riadku značí, čo si vybral váš súper (A je Kameň, B je Papier, C sú Nožnice), druhé písmenko je váš výber (X je Kameň, Y je Papier, Z sú Nožnice), každý riadok je jedno kolo. Výstupom úlohy je váš súčet bodov za hru. Za víťazstvo v kole si pripíšete 6 bodov, za remízu 3 body. K tomu získavate 1 bod, ak si vybrali Kameň, 2 body ak Papier a 3 body ak Nožnice. V tomto prípade sme teda získali dokopy 15 bodov (8 bodov za prvé kolo za výhru a za Papier, 1 bod za druhé kolo za prehru a Kameň, 6 bodov za tretie kolo za remízu a Nožnice).

Chatbot úlohu napísal relatívne dobre, mal iba drobné nedostatky. Najprv spravil chybu, že nepochopil ktorý predmet vyhráva nad ktorým predmetom a za výhru označil všetko, čo nebola remíza. Po upozornení, respektíve vysvetlení pravidiel hry si svoju chybu opravil. Následne zabudol do bodovania pridať aj body za výber predmetu, pridával iba body za výsledok kola. Samozrejme si chybu po upozornení opäť priznal a opravil sa. Posledný problém bolo, keď za remízu označil také kolo, kde obaja hráči napísali rovnaký znak (reprezentujúci predmet), čo však nebol pravda – remíza totiž nastala v prípade, keď boli dvojice znakov A-X, B-Y alebo C-Z. Aj túto chybu si však opravil a nakoniec som od neho dostal správne vyriešenie (aj s ospravedlnením). Chcel by som zdôrazniť, že ja som nič neprogramoval, moje výhrady k riešeniu som chatbotovi tlmočil slovami.

Chatbot ChatGPT si priznal chybu v riešení a aj sa za ňu ospravedlnil.
Chatbot ChatGPT si priznal chybu v riešení a aj sa za ňu ospravedlnil.

Nakoniec som sa dostal k tretej úlohe. Bolo treba nájsť vec, ktorú mal elf v oboch priehradkach svojho vaku. Vstup vyzeral takto: vJrwpWtwJgWrhcsFMMfFFhFp. Prvá polovica značila veci v prvej priehradke, druhá polovica v druhej priehradke. V tomto prípade mal teda elf v oboch priehradkach vec p. Aby to nebolo také jednoduché, tak veci sú ohodnotené. Veci od a po z su ohodnotené číslami od 1 do 26, veci od A po Z číslami od 27 do 52. Pre správne vyriešenie tejto úlohy bolo treba prejsť vaky všetkých elfov a spočítať ohodnotenie všetkých predmetov, ktoré mali jednotliví elfovia v oboch priehradkach. V tomto prípade chatbot chybu nespravil a jeho riešenie bolo správne na prvýkrát. Za menej ako jednu minútu dokázal vyriešit tento problém.

Priznávam, tieto úlohy neboli najťažšie, som si istý, že neskoršie dni budú v sebe ukrývať oveľa komplexnejšie problémy, no aj tak ma ohúrila schopnosť tejto umelej inteligencie tak rýchlo pochopiť problém a napísať taký pekný a najmä funkčný kód. A že spravil v prvých dvoch úlohách chybu? No a čo? Aj umelá inteligencia je len človek.

Teraz najčítanejšie

Tomáš Paulďuro

Som nahnevaný občan Slovenskej republiky, pretože aj keď som sa zúčastnil protestov Za slušné Slovensko, do dnešného dňa mi neprišli od Sorosa žiadne peniaze. Okrem iného som spoluzakladateľ občianskeho združenia Vivat Vero, ktoré sa snaží spraviť zo Slovenska lepšie miesto. Naším prvým projektom je Antivýtrus, rozšírenie do webového prehliadača, ktoré užívateľa chráni pred konšpiračným a zavádzajúcim obsahom.