ChatGPT, czyli programiści na wymarciu?

Czołem czytelniku,

Jeśli obracasz się w sieci, w miejscach powiązanych z branżą IT (zwłaszcza dot. programowania, pozycjonowania czy DevOps), z pewnością natknąłeś się na ChatGPT. Opini na jego temat jest wiele, jednak to, co można powiedzieć z pewnością to fakt, że program ten po prostu zamieszał i konkretnie zmienił sposób, w jaki wielu z nas postrzegało algorytmy uczenia maszynowego (sztucznej inteligencji).

Niektórzy wieszczą szybkie zastąpienie pracowników umysłowych, w tym programistów, algorytmami sztucznej inteligencji.

Jednak jak to faktycznie jest?

Sprawdziłem, jak owy chatbot radzi sobie w rozwiązywaniu kilku programistycznych zadań. Pierwsze zadanie polegało na stworzeniu prostego programu w języku, którego raczej w dzisiejszych czasach w nowych projektach się nie używa - czyli Visual Basic 6.


Zadanie polega na odebraniu danych od użytkownika (jego imienia) a następnie zaprezentowaniu danych (wyświetlenie imienia w formie komunikatu). Chatbot poradził sobie bez problemu, w dodatku skomentował kod a także podsumował działanie wygenerowanego programu.

Następnie poprosiłem go, by zmodyfikował wygenerowany wcześniej program w taki sposób, by wprowadzone przez użytkownika imię odwracał (czyli "Jan" zamieniał na "naJ").


Jak widać, wygenerowany kod wydaje się być poprawny, co też udało się potwierdzić na jednej ze stron internetowych służącej do uruchamiania kodu Visual Basic poprzez wyświetlenie wyjścia programu w przeglądarce:


Jestem w szoku...

Jeśli chodzi o to zadanie, muszę przyznać że AI poradziło sobie bardzo dobrze. Wygenerowało poprawne kody źródłowe, było w stanie trzymać wątek konwersacji, czemu perfekcyjnie dowodzi reakcja na prośbę o zmodyfkowanie wcześniej napisanego kodu.

Asystent czy zagrożenie?

Drugie zadanie to już bardziej praktyczny przykład. Funkcja fingerprintToBytes jest funkcją pomocniczą w mojej bibliotece ksIotFrameworkLib i służy do konwersji tzw. "hex string" do tablicy uint8_t czyli, upraszczając - binarnej reprezentacji. Przydaje się to w procesie obsługi certyfikatu, który używany jest w szyfrowaniu i walidacji połączenia z serwerem.

Chcemy zoptymalizować poniższy kod, przy okazji korzystając ze funkcji C++:


Kod ten wkleiłem do chatbota z prośbą: Proszę o optymalizację tego kodu używając C++


Wow! Na pierwszy rzut oka wygląda super, kod jest dużo krótszy, używa funkcji std::transform...

Ale zaraz, gdzie się podziała funkcja htoi?

No i tutaj zaczynają się schody. Chatbot pominął funkcję htoi, która powinna być jednak załączona w wyniku. Nic jednak nie stoi na przeszkodzie, by to poprawić, więc dodałem do finalnego kodu funkcję htoi, by móc zwyczajnie całość zbudować. Niemniej jest to pierwszy znak, że nie zawsze jest tak różowo.

Następnie dopisałem następujący kawałek kodu, dzięki czemu mogłem przetestować obie funkcje (wybaczcie mi printfy i memsety - to nie ma tutaj znaczenia). Original function to po prostu niezmieniona funkcja, o której optymalizację prosiliśmy. ChatGPT function to wygenerowana, w teorii zoptymalizowana funkcja przez chatbota.


O nie! Wyniki są różne. Zapytałem bota, dlaczego te wyniki są różne a ten odpowiedział następująco: "ponieważ zakłada, że tablica bytes zawiera już wcześniej zainicjowane wartości liczbowe". Następnie zapytałem go, jak można to poprawić.


Otrzymana odpowiedź jest totalną bzdurą, przede wszystkim dlatego, że logika kodu w zasadzie się nie zmienia. Dostaliśmy po prostu kolejny wariant, ponownie tego samego, złego rozwiązania.

Jeśli kod wygenerowany przez bota działa, to znaczy, że występują w nim błędy!

Czytając pierwsze zdanie oplułem monitor. To dowodzi, że chatbot w ogóle nie ma pojęcia, gdzie szukać problemu. Podczas poprzednich testów, zanim jeszcze napisałem ten artykuł, starałem się mu wyjaśnić precyzyjnie, co jest na wyjściu z jego funkcji a co na wyjściu z mojej i nadal był uparty jak osioł przy swoim.

Możemy zatem spać spokojnie?

Oczywiście... ale jednak nie wszyscy. 

O ile w programowaniu bot może przyjąć rolę asystenta, podobnie jak Github Copilot i zwyczajnie podpowiadać możliwe ale jednak wymagające sprawdzenia rozwiązania a przy mniej skomplikowanych problemach może z języka naturalnego po prostu wygenerować rozwiązanie, o tyle postęp w zakresie samego generowania treści w języku naturalnym jest już na tyle wysoki, że nie będzie możliwe odróznienie treści generowanej przez komputer od tej, którą wytworzy człowiek.

Czyli jednak ktoś mi w końcu sprzeda tą fotowoltaikę?

Na to wygląda. Zestawiając chatbota z odpowiednim oprogramowaniem do rozpoznawania i syntezy mowy, możemy uzyskać mówiącą maszynę, którą podczas rozmowy telefonicznej będzie niezwykle trudno odróżnić od człowieka, przynajmniej jeśli chodzi o samą treść. Na rozumienie i udawanie emocji pewnie chwilę musimy jeszcze poczekać ale moim zdaniem i to jest już w zasięgu ręki.

Do następnego! O ile tylko mnie AI nie zastąpi.

Referencje / Linki



Komentarze

Prześlij komentarz