Coraz częściej słyszymy stwierdzenie, iż po poprzednim roku, okrzykniętym rokiem Metaverse, 2023 zyska miano roku AI. Trudno się z tym nie zgodzić, obserwując trendy, wyścig Google i Microsoft’u we wdrażaniu AI do swoich produktów oraz ogólne zainteresowanie tematem w Internecie. Czy tego chcesz, czy nie, AI staje się wszechobecne i niedługo nie będzie można go zignorować w codziennej pracy. Jak dzisiaj wykorzystuję sztuczną inteligencję w swojej pracy?
Gdzie jesteśmy
Pierwszym narzędziem opartym o sztuczną inteligencję, o którym stało się naprawdę głośno, był Github Copilot – asystent, którego głównym zadaniem jest wspieranie programisty w pisaniu kodu i przyspieszanie tego procesu.
Copilot został oddany w ręce programistów w 2021 roku i już wtedy informacja o nim odbiła się szerokim echem na różnych portalach branżowych i kanałach na YouTube.
Od tamtego czasu minął ponad rok, a ja przez ten okres spotkałem zaledwie kilku developerów, którzy wykorzystują to narzędzie w codziennej pracy. Również byłem sceptyczny temu rozwiązaniu i początkowo nie uwierzyłem, iż może mi pomóc. Z Copilota zacząłem korzystać kilka miesięcy po zakończeniu medialnej wrzawy.
Przyszedł koniec roku 2022 i głośno zrobiło się o OpenAI i ich nowym produkcie, czyli ChatGPT. Okazało się, iż bot bardzo dobrze radzi sobie z generowaniem kodu, reaguje na kontekst i możemy rozmawiać z nim w praktycznie w taki sam sposób, jak z człowiekiem. Co ciekawe, Github Copilot także bazuje na modelu stworzonym przez firmę OpenAI, jednak dopiero za sprawą ChatGPT, zrobiło się o niej naprawdę głośno.
Podobnie, jak w przypadku Copilota, wiele osób zachwyciło się rozwiązaniem i zaczęło generować teksty piosenek, czy żartów. Ci bardziej zainteresowani rozpoczęli eksperymenty związane z użyciem AI w codziennych zadaniach. To doprowadziło do fali postów w social mediach, straszących rychłym końcem wielu istniejących zawodów w tym także zawodu programisty.
Niestety, podobnie jak w przypadku Copilota, kurz prawdopodobnie opadnie i mam wrażenie, iż nie nastąpi duża adopcja narzędzia do codzienności większej ilości programistów.
Dostępne narzędzia
Github Copilot oraz ChatGPT to aktualnie dwa najbardziej popularne narzędzia AI wspierające pisanie kodu. Oprócz tego OpenAI daje nam również dostęp do innych modeli, które mogą wspierać programistę, czyli między innymi GPT-3 oraz Codex.
W dalszej części artykułu postaram się zaprezentować kilka przykładów, gdzie takie narzędzia sprawdzają się najlepiej w mojej pracy.
Github Copilot
Copilot to najprościej mówiąc asystent programowania. Myślę, iż każdy programista zna ideę programowania w parach, gdzie jedna osoba pisze kod, a druga obserwuje i stara się podpowiadać, lub naprowadzać w przypadku problemów.
Github Copilot idzie o krok dalej. Narzędzie nie czeka, aż poprosisz o pomoc. Asystent stara się w czasie rzeczywistym analizować kontekst, Twój styl programowania i kod, do którego ma dostęp.
Dzięki temu Copilot jest w stanie wnioskować, co chcesz w danej chwili napisać. Takie podpowiedzi mogą zawierać dokończenie linijki, deklarację całej funkcji lub propozycję konkretnego unit testu. W większości przypadków otrzymujesz kilka propozycji rozwiązania problemu i to od Ciebie zależy, którą z nich zaakceptujesz.
Innym sposobem na użycie Copilota jest określenie potrzeb poprzez odpowiedni komentarz w kodzie. Bot na tej podstawie zwróci propozycję potencjalnych rozwiązań. Ten sposób jest bliższy pracy z ChatGPT, czy samymi modelami GPT-3 oraz Codex, dlatego w takim przypadku wolę się zwrócić bezpośrednio do nich.
Co ciekawe, zasada działania bota jest inna, niż wspomnianych produktów od OpenAI, jednak korzysta on z tego samego źródła, czyli modelu Codex, który został stworzony w OpenAI w celu transformacji ludzkiej mowy na kod.
Z mojego doświadczenia wynika, iż przez pierwsze kilka dni, narzędzie jest irytujące i bardziej przeszkadza, niż pomaga. Później następuje etap, gdzie zaczynasz dostrzegać dziejącą się pod spodem magię, a po jakimś czasie już samoczynnie wciskasz tabulator, aby przesunąć się kilka linii do przodu z pisaniem kodu.
Copilot najlepiej sprawdza się podczas prostych czynności. Dla mnie jest to takie “autocompletion” na sterydach. Zdarzają się przypadki, iż większość napisanego kodu w danym pliku powstaje poprzez konsekwentne wciskanie tabulatora. Są tacy, którzy twierdzą, iż Copilot generuje 80% całego kodu, który chcą napisać i robi to z niemal 100% dokładnością. Być może są projekty, gdzie tak to działa. Niestety nie doświadczyłem jeszcze takiej skuteczności.
Inaczej rzecz ma się w zadaniach wymagających dużej kreatywności. Tam zysk jest mniejszy. Niemniej każdy programista musi napisać od czasu do czasu pętlę, funkcję transformującą dane, deklarację zmiennych lub unit testów. Przy takich zadaniach wkład Copilota jest znaczny, a Ty możesz skupić się na rozwiązywaniu prawdziwego problemu, zamiast analizowaniu składni języka i poprawianiu literówek, które wyszły z Twojej klawiatury.
Dzięki Copilotowi i temu, iż tracisz mniej czasu w banalne czynności, masz więcej przestrzeni na rozwiązywanie istoty problemu a sam proces implementacji rozwiązania staje się szybszy.