Kryžiažodžio duomenų iššūkis su chatGPT
Vasaros pradžioje Valstybės Duomenų Agentūra (Statistikos departamentas) paskelbė visai smagią užduotį duomenų analitikams ir programuotojams: reikėjo išspręsti kryžiažodį, kurį sudaro vien tik Lietuvos upių bei upelių pavadinimai. Užduotis man kelias dienas neišėjo iš galvos, tad trečią dieną prie jos prisėdau ir per maždaug pusantros valandos turėjau sprendimą, rašytą pitonu. Kitas kolega irgi ja susidomėjo, ir taip pat per kelias valandas atrado sprendimą. Beje, man pasirodė, kad gana originaliu būdu, vien SQL pagalba, 10 kartų jungiant galimų žodžių lentelę su savimi žodžių susikirtimuose.
Užduotį išsprendėm, nusiuntėm kūrėjams, gavom pakvietimą pas juos apsilankyti: bus įdomu susipažinti su valstybės duomenų bazėmis.
O štai prieš kelias dienas apie šią užduotį užsiminiau Vaidui Urbai ir čia kilo dar vienas iššūkis – pabandyti užduotį išspręsti dirbtinio intelekto įrankiais. Prisipažinsiu, buvau gana atsargus vertindamas chatGPT šansus: maniau, kad yra kokia 30% tikimybė, kad AI sugebės parašyti veikiantį kodą per adekvatų laiką (4 valandas). Vaidui pavyko užduotį išspręsti per maždaug 1.5 valandos, tad tenka nulenkti galvą. Taip pat vertėtų pripažinti, kad matyt man per tokį trumpą laiko tarpą nepavyktų iš chatGPT gauti reikiamo rezultato: tam irgi reikia savitų įgūdžių.
Kelios pastabos lyginant mano bei chatGPT kodą ir užduoties sprendimo strategiją:
- Mano kodas dvigubai trumpesnis ir paprastesnis, subjektyviu vertinimu turbūt labiau maintainable.
- Vaidas iš tiesų labai protingai pasielgė pirmiausia paklausdamas chatGPT apie geriausius kryžiažodžių sprendimo algoritmus ir tada juos pritaikydamas. Aš pats tikriausiai išradinėjau dviratį neieškojęs teorijos ir gerosios praktikos, sugalvodamas savo sprendimą (kuris gali būti, kad yra tolimas nuo optimalaus).
- Vaidas irgi iki galo nebuvo patenkintas chatGPT, nes jam teko daug nuobodaus darbo koduojant kryžiažodžio struktūrą bei apribojimus. O ir chatGPT pasiūlyta duomenų schema nebuvo optimali.
- Dėl GPT modelių haliucinavimo problemos, net ir turėdamas atsakymą, jį turi nuodugniai tikrinti: šiuo atveju haliucinavimo nebuvo, bet rezultatą Vaidas vis tiek tikrino rankomis. Parašyti kodo testus vis dar kiek patikimiau.
- Įtarčiau, kad nuosavo kodo rašymas padeda geriau pačiam įsigilinti į problemą, geriau suprasti, kokiomis sąlygomis sprendimas galioja, o kada – nebe. Tarkim, tiek aš, tiek kolega, sprendęs užduotį su SQL, tiksliai žinojo, kiek kokių žodžių variantų tiko kiekvienam raktui. Bet, aišku, to ne visada reikia, kartais užtenka tik teisingo atsakymo.
- Kandidatų atrankoms (ar studentams testuoti) tokios užduotys tampa per daug paprastos.
Beje, šiemet buvo bandoma išspręsti Advent of Code su chatGPT: iš 12 dienų užduočių sėkmingai susitvarkyta beveik su trečdaliu. Nustebau, kad tai labai arti mano originaliam 30% sėkmės tikimybės įverčiui.