Testujemy czata AI
Cały świat zachwyca się nowym chat-botem od OpenAI, pozachwycam się i ja.
Nie jestem z gatunku tych, którzy próbują namówić robota do przejęcia władzy nad światem czy włamywania się do cudzych skrzynek pocztowych. Wolę podejście bardziej utylitarne, a więc głównie używam ChatGPT zamiennie z Google jeżeli czegoś szukam. Co prawda "horyzont zdarzeń" bota jest na razie ustalony na okolice października 2021 (ma się to wkrótce zmienić, ale póki co jest jak jest), więc o nowinkach raczej się od niego nie dowiem, ale i tak jest to nader przyjazna metoda na poszerzanie swojej wiedzy.
Właśnie. Kiedy niczego konkretnego nie szukam, mam chwilę czasu i chcę się po prostu dowiedzieć więcej na jakiś temat, przeprowadzam krótką (lub czasem nieco dłuższą) rozmowę. Czasem - choć ostatnio coraz rzadziej - zagaduję go kontrolnie o rzeczy, które już wiem, żeby się upewnić, że nie produkuje bzdur. A czasem weryfikuję odpowiedzi niezależnie, na wszelki wypadek.
Efekty są mieszane, ale bardziej na plus niż na minus.
Przykłady?
1
Ostatnio z racji pracy mam do czynienia całkiem sporo z plikami w formacie Parquet.
Dla niezorientowanych: Parquet to są dane tabelaryczne zapisane w pliku binarnym w taki sposób, żeby (A) nie było wątpliwości co do typów ani nazw kolumn, (B) dało się w łatwy sposób przechowywać dane w hierarchii rodzic-dziecko oraz - chyba najważniejsze - (C) plik jest tak skonstruowany, że łatwo jest na nim przeprowadzać operacje wielowątkowo, co znacznie przyspiesza odczyt. Nie wspomnę już o (D) możliwości kompresji danych (na poziomie grup rekordów, nie całego pliku) czy (E) - zakładając użycie odpowiedniej infrastruktury - możliwości przeprowadzania zapytań na wielu plikach równocześnie.
Dotychczas używałem plików Parquet jak typowy laik: tu wczytaj, tam zapisz, koniec, kropka. Ale niedawno z czystej ciekawości zapuściłem prosty kawałek kodu w Pythonie, żeby sprawdzić co się stanie jak skonwertuję plik CSV na Parquet i potem z powrotem na CSV. A szczególności: czy wynikowy CSV będzie identyczny z początkowym?
Okazało się, że nie. Plik CSV wypluty na koniec procesu okazał się odrobinę większy od tego na początku (chociaż liczba rekordów się zgadzała i na oko wszystkie dane też).
Pokazałem swój kod botowi i zapytałem go skąd bierze się różnica w rozmiarze plików. A ten mi od razu wyjaśnił, że najprawdopodobniej chodzi o zaokrąglenia, bo przy odczycie oryginalnego pliku CSV skrypt nie wiedział jakie typy danych numerycznych przypisać do niektórych kolumn i mógł "zgadnąć" nieprawidłowo. Przyjrzałem się bliżej - i faktycznie, wszystkie kolumny typu INT zostały skonwertowane na DECIMAL z jednym miejscem dziesiętnym (przykładowo zamiast 123 w docelowym pliku CSV pojawiło się 123.0).
Czyli tak: ChatGPT "zrozumiał" intencję mojego skryptu w Pythonie a następnie był w stanie postawić poprawną hipotezę. Niezwykła sprawa.
2
Innym razem poprosiłem go o napisanie prostego kodu, który pozwoliłby mi porównać czasy wykonania różnych operacji arytmetycznych na CPU i na GPU. I mi napisał, ale przy użyciu biblioteki, która z jakiegoś powodu nie chciała mi się zainstalować na kompie. Poprosiłem go o inną wersję bez użycia tej konkretnej biblioteki - wyprodukował całkiem inny skrypt, który też nie zadziałał, bo inna biblioteka nie jest jeszcze kompatybilna z Pythonem 3.11. Odpuściłem.
3
Potem poprosiłem go o podsumowanie tego artykułu (musiałem mu wkleić treść całego artykułu bezpośrednio w okienko zapytań, bo póki co nie umie sam sobie zajrzeć do Sieci) a następnie o wyjaśnienie dlaczego funkcje skrótu z kluczem w prefiksie lub w postfiksie są mniej bezpieczne od funkcji skrótu z kluczem "zakopertowanym" (czyli pre- i post- jednocześnie). Skończyło się całkiem długą dyskusją o haszowaniu danych i łamaniu haszy.
4
Żeby odsapnąć nieco od tematów komputerowych, poprosiłem go o streszczenie "Wojny i Pokoju" Tołstoja, z czym poradził sobie nad wyraz dobrze.
5
Kolejny przykład - wymyśliłem zgrubny scenariusz książki SciFi, a następnie poprosiłem bota, żeby mi to rozbił na rozdziały i dał krótki opis każdego rozdziału. Wynik wydał mi się dziwnie znajomy - okazało się, że bot zerżnął pomysł na akcję z filmu "Passengers" z 2016 roku (z Prattem i Lawrence - nawet fajny, oglądałem, przesympatyczny Michel Sheen w roli robota za kontuarem). Zwróciłem mu na to uwagę, to przepisał całość i teraz wygląda jak jeden z odcinków StarTrek. A więc - zasadniczo porażka, gdybym to próbował spieniężyć, mógłbym zostać posądzony o plagiat.
6
Przeczytałem niedawno, że ChatGPT będzie wkrótce potrafił używać zewnętrznych serwisów "usługowych", specjalizowanych do różnych zadań. Na przykład WolframAlpha do matematyki. Trzeba bowiem przyznać, że z matematyką bot nie radzi sobie kompletnie. Spróbowałem zapytać go o listę wszystkich księżyców w naszym Układzie, które są większe od Merkurego. Najpierw wymienił mi cztery (dwa z nich są mniejsze od Merkurego, ale i tak je wymienił). Przy drugim podejściu - wymienił tylko jeden (a powinien dwa). Zwróciłem mu na to uwagę - poprawił się, ale ewidentnie nie dlatego, że nagle załapał, że 4880 jest jednak mniejsze niż 5150, ale dlatego, że mu to zasugerowałem.
Trzecie podejście do tego samego pytania było najciekawsze: zamiast wymienić listę księżyców, bot mi wyjaśnił, że nie da się tego ustalić bo moje pytanie jest zbyt ogóle i nie mówi czy chodzi o masę czy o średnicę. Po uściśleniu, że chodzi o średnicę, znów dostałem niepoprawną listę. Porażka. Pozostaje mieć nadzieję, że sytuacja się polepszy po wzbogaceniu bota o wtyczki typu Wolfram czy zwykła wyszukiwarka.
7
Z bardziej interesujących eksperymentów, wrzuciłem mu treść ogłoszenia o ofercie pracy i poprosiłem, żeby zagrał rolę agenta rekrutującego na to stanowisko i przeprowadził ze mną interview. Poradził sobie z zadaniem nie najgorzej, acz bez szału. Przewałkował wszystkie zagadnienia z każdej strony, a tam, gdzie udawałem, że nie znam odpowiedzi, pocieszał mnie żebym się nie martwił, bo wiadomo że nie każdy wie wszystko i się pewnie douczę. Jednak większość jego pytań zaczynała się od potwierdzenia, że zrozumiał moją poprzednią odpowiedź i brzmiało to nieco... bo ja wiem? Dziwnie.
Ogólnie jest tak, że z niektórymi zadaniami radzi sobie całkiem fajnie, a przy innych wykazuje się "głupotą" (cudzysłów zamierzony, bo to jednak tylko papuga). Często bywa tak, że po krótkim dialogu da się go naprowadzić na sensowniejsze tory, ale bywa też na odwrót - jak się zaprze przy jakimś pomyśle, nijak nie da się go przesunąć na inny tor rozumowania. Trochę jak z trurlową najgłupszą maszyną rozumną na świecie, która sobie ubzdurała, że 2x2=7.
Dobrze poradził sobie z objaśnianiem szczegółów działania GitHub czy z trudnościami, na które natknie się programista Pythona próbujący nauczyć się Rusta. Ale już na przykład próba wyciągnięcia od niego instrukcji zainstalowania sterownika do egzotycznej karty sieciowej pod Linuksem zakończyła się porażką i ogólnikami.
Zaskakująco dobrze radzi sobie ChatGPT z objaśnianiem dowcipów. To jest dla mnie póki co najbardziej niesamowity wyznacznik tej przerośniętej papugi. Ociera się o dolinę niesamowitości. Oto przykład:

I jeszcze jeden:

Dość dobrze radzi sobie ChatGPT z rekomendowaniem książek i filmów. Wystarczy mu podać kilka tytułów, które nam się spodobały, kilka innych, których nie lubimy - i zaraz dostaniemy bardzo obiecująco wyglądającą listę pozycji do obejrzenia czy przeczytania.
Reasumując - póki co jestem ciągle na etapie umiarkowanej fascynacji tym narzędziem i uważam, że jesteśmy (jako ludzkość) w tej chwili świadkami / uczestnikami dość ważnego wydarzenia, na skalę światową. Podobnie jak pojawienie się na rynku usług AWS w 2006 roku zmieniło na zawsze sposób myślenia o budowaniu dużych systemów informacyjnych, tak rozwój konwersacyjnych AI zmieni sposób, w jaki będziemy się komunikować i pracować.
Komentarze