Zacznijmy tę podróż od GitHub Copilot, jednego z najgorętszych produktów 2021 roku. GitHub Copilot to pierwszy w swoim rodzaju programista AI, który pomaga użytkownikom pisać kod szybciej i przy znacznie mniejszym nakładzie pracy. Oege de Moor, wiceprezes GitHub Next, mówi, że misją jest „dotarcie do wszystkich programistów, a ostatecznym celem jest udostępnienie programowania każdemu”. Automatyzacja przyziemnych zadań, takich jak pisanie nadmiarowego kodu i pisanie przypadków testów jednostkowych, pozwala programistom „skupić się na prawdziwie kreatywnej części pracy, która polega na decydowaniu, co oprogramowanie powinno faktycznie robić” i „więcej myśleć o koncepcji produktu, zamiast być utknąłem w zastanawianiu się aby wyciągnąć kod. Jak powiedział nam Awan: „Jestem podekscytowany możliwością pracy nad większą liczbą projektów pobocznych, ponieważ wiem, że będę miał pomoc w GitHub Copilot. To prawie tak, jakbym miał teraz współzałożyciela. Codex i Copilot piszą od 2 do 10% mojego kodu, mniej więcej tak. Dzięki temu przyspieszyłem już od 2 do 10%. A wszystko to na skalę wykładniczą. Jaki zatem będzie GPT-3 w przyszłym roku? Jaki będzie Kodeks w przyszłym roku? Być może będę szybszy o 30%.” Zagłębmy się w wewnętrzne działanie Copilota.
GitHub Copilot rysuje kontekst z kodu, nad którym pracujesz, w oparciu o takie elementy, jak ciągi dokumentów, komentarze i nazwy funkcji. Następnie automatycznie sugeruje następny wiersz lub nawet całe funkcje bezpośrednio w edytorze, aby wygenerować szablonowy kod i zasugerować przypadki testowe pasujące do implementacji kodu. Współpracuje z szerokim zestawem frameworków i języków programowania, korzystając z wtyczki do edytora kodu użytkownika, dzięki czemu jest niemal niezależny od języka, a także lekki i łatwy w użyciu. Naukowiec zajmujący się OpenAI, Harri Edwards, zauważa, że Copilot jest także użytecznym narzędziem dla programistów pracujących w nowym języku lub frameworku: „Próba pisania kodu w nieznanym języku poprzez wygooglowanie wszystkiego jest jak nawigacja po obcym kraju za pomocą samych rozmówek. Korzystanie z GitHub Copilot jest jak zatrudnienie tłumacza.” GitHub Copilot działa w oparciu o Codex OpenAI, potomka modelu GPT-3, który, jak zauważyliśmy w rozdziale 4, został zaprojektowany specjalnie do interpretowania i pisania kodu. „GitHub jest domem dla ponad 73 milionów programistów i zawiera ogromną ilość danych publicznych, które odzwierciedlają zbiorową wiedzę społeczności” – mówi de Moor. Przekłada się to na miliardy linii publicznie dostępnego kodu, na którym Codex może się uczyć. Rozumie zarówno języki programowania, jak i języki ludzkie. Kodeks opiera się na komentarzach pomocniczych lub instrukcjach w prostym języku angielskim, aby utworzyć odpowiedni kod.
Rozszerzenie edytora Copilot inteligentnie wybiera kontekst, który ma zostać wysłany do usługi GitHub Copilot, która z kolei uruchamia model Codexu OpenAI w celu syntezy sugestii. Mimo że Copilot generuje kod, to użytkownik nadal ponosi odpowiedzialność: możesz przeglądać sugerowane opcje, wybierać, które zaakceptować lub odrzucić, a także ręcznie edytować sugerowany kod. GitHub Copilot dostosowuje się do wprowadzanych przez Ciebie zmian i dopasowuje się do Twojego stylu kodowania. De Moor wyjaśnia: „Łączy język naturalny z kodem źródłowym, dzięki czemu można go używać w obu kierunkach. Możesz użyć kodu źródłowego do wygenerowania komentarzy lub możesz użyć komentarzy do wygenerowania kodu źródłowego, co czyni go niezwykle potężnym. Ta funkcjonalność pośrednio zmieniła także sposób, w jaki programiści piszą kod. Kiedy wiedzą, że ich komentarze do kodu w językach ludzkich, takich jak angielski, będą częścią szkolenia modelu, piszą „lepsze i dokładniejsze komentarze, aby uzyskać lepsze wyniki z Copilot” – mówi de Moor. Wielu krytyków obawia się, że oddanie tego narzędzia w ręce osób, które nie potrafią ocenić jakości kodu, może skutkować wprowadzeniem błędów w bazie kodu. Wbrew tej opinii de Moor mówi nam: „Otrzymaliśmy wiele opinii od programistów, że Copilot pozwala im pisać lepszy i wydajniejszy kod”. W aktualnej wersji zapoznawczej Copilot może pomóc Ci w pisaniu kodu tylko wtedy, gdy rozumiesz, jak działają różne elementy oprogramowania i możesz dokładnie powiedzieć Copilotowi, co ma robić. Copilot zachęca programistów do stosowania zdrowych praktyk, takich jak pisanie dokładniejszych komentarzy, i nagradza programistów lepszym generowaniem kodu. Copilot nie ogranicza się tylko do ogólnych zasad programowania; może także poznać szczegóły konkretnych dziedzin, takich jak pisanie programów do komponowania muzyki. Aby to zrobić, musisz zrozumieć teorię muzyki. „Widzenie, jak Copilot w jakiś sposób wyłapał to z niezwykle dużych danych treningowych, jest po prostu niesamowite” – dodaje de Moor.
Opracowywanie drugiego pilota
De Moor twierdzi, że jednym z wyzwań związanych z projektowaniem Copilot było stworzenie odpowiedniego doświadczenia użytkownika, które „pozwala korzystać z tego modelu w sposób oparty na współpracy, bez ingerencji”. Celem jest, aby czuć się jak podczas pracy z partnerem programistycznym lub współpracownikiem, który „wie więcej o przyziemnych sprawach związanych z kodowaniem, dzięki czemu możesz bardziej skupić się na tworzeniu ważnych rzeczy”. Programiści stale szukają istniejących rozwiązań problemów i często odwołują się do Stack Overflow, wyszukiwarek i blogów, aby znaleźć szczegóły implementacji i składni kodu — co oznacza częste przechodzenie między edytorem a przeglądarką. Jak zauważa de Moor: „Jako programista jesteś bardziej produktywny, gdy możesz pozostać w swoim środowisku i po prostu myśleć o problemie, zamiast ciągle zmieniać kontekst”. Właśnie dlatego zespół GitHuba zaprojektował Copilot tak, aby dostarczał sugestie w środowisku programistycznym.