GitHub Copilot: co to jest, jak działa i jak z niego korzystać
Opublikowany: 2024-04-25Generatywna sztuczna inteligencja zmienia oblicze kreatywnej współpracy, a asystenci kodowania to jedne z najbardziej ekscytujących nowych aplikacji. Ci asystenci mogą zrozumieć Twój kod, zasugerować uzupełnienia, wygenerować całe funkcje i zaproponować alternatywne podejścia. Oto przegląd jednego z wiodących asystentów kodowania AI, GitHub Copilot.
Spis treści
- Co to jest drugi pilot GitHub?
- Jak działa GitHub Copilot
- Kto stworzył GitHub Copilot?
- Czy GitHub Copilot jest bezpłatny?
- Jak korzystać z usługi GitHub Copilot
- Wskazówki, jak zmaksymalizować wydajność
- Plusy korzystania z GitHub Copilot
- Wady korzystania z GitHub Copilot
- Wniosek
Co to jest drugi pilot GitHub?
GitHub Copilot to asystent kodowania AI, znany również jako programista par AI. Można z niego korzystać na dwa podstawowe sposoby: możesz rozpocząć pisanie kodu i zlecić jego ukończenie przez GitHub Copilot lub możesz opisać, co ma robić kod, używając języka naturalnego, a sztuczna inteligencja wygeneruje dla Ciebie fragment kodu.
GitHub Copilot może pisać kod we wszystkich językach, które pojawiają się w publicznych repozytoriach, w tym JavaScript, TypeScript, Python i Ruby.
Możesz używać GitHub Copilot w zintegrowanym środowisku programistycznym (IDE) i w wierszu poleceń. Jeśli masz konto na poziomie przedsiębiorstwa, możesz uzyskać do niego dostęp także na GitHub.com.
Jak działa GitHub Copilot
Narzędzia do autouzupełniania kodu są dostępne już od jakiegoś czasu. GitHub Copilot idzie dalej, ponieważ może pisać całe linie i funkcje oraz odpowiadać na Twoje pytania. Oto przegląd mechanizmów stojących za platformą.
Zrozumienie generatywnej sztucznej inteligencji i dużych modeli językowych (LLM)
GitHub Copilot jest zbudowany na modelu dużego języka (LLM). LLM mogą analizować i przetwarzać ogromne ilości informacji oraz generować nowe treści, takie jak kod, tekst lub obrazy.
Na wczesnych etapach Copilot GitHub eksperymentował z GPT-3, LLM stworzonym przez OpenAI. Przyjrzyjmy się, jak modele GPT działają na wysokim poziomie.
Po pierwsze, programiści wprowadzają do modelu duże ilości tekstu. Tekstem mogą być strony internetowe, książki, dialogi filmowe lub dyskusje na forach. W przypadku GitHub Copilot do modeli wprowadzono miliardy linii kodu open source.
Modele GPT przetwarzają te dane w celu zidentyfikowania wzorców między słowami i strukturą języka. Używają kontekstu, aby zrozumieć znaczenie treści, podobnie jak używamy wskazówek kontekstowych, aby zrozumieć znaczenie nowego słowa.
Gdy model opracuje mapę wskazówek kontekstowych i wzorców językowych, może dokonać świadomych przewidywań na temat tego, co powinno nastąpić w następnej kolejności. Zatem gdy zaczniesz wpisywać kod w GitHub Copilot, przewidzi on następną część kodu na podstawie poznanych danych. Kiedy zadajesz pytanie lub prosisz o nowy kod od zera, jego odpowiedź przypomina wysoce wykształcone przypuszczenie. Przewiduje każde słowo lub fragment kodu jedno po drugim. Podstawowy przykład: gdy GitHub Copilot widzi, że programista napisał „if __name__”, może dokładnie przewidzieć resztę wiersza „__main__”.
Po wstępnym szkoleniu model jest dopracowywany na podstawie opinii ludzi. Ludzie przeglądają jego odpowiedzi i oceniają je pod kątem dokładności, przydatności i czynników etycznych (takich jak uprzedzenia i obraźliwość). Z biegiem czasu model uczy się, jakie reakcje preferują ludzie.
Ewolucja modeli stojących za GitHub Copilot
W 2021 roku GitHub i OpenAI wypuściły Codex, specyficzną dla kodowania gałąź GPT-3. GitHub udoskonalił i wyszkolił ten model, aby zapewnić bardziej odpowiednie, pożądane odpowiedzi. W 2023 roku GitHub ogłosił, że korzysta z mądrzejszego i wydajniejszego modelu Copilota, chociaż nie podał szczegółów dotyczących nazwy ani szkolenia.
Podstawowe interfejsy do korzystania z usługi GitHub Copilot
GitHub Copilot oferuje dwa podstawowe interfejsy dla wszystkich użytkowników: Czat Copilot i Copilot w interfejsie CLI.
Czat Copilot działa w Twoim IDE. Obecnie obsługuje Visual Studio Code, Visual Studio i pakiet JetBrains IDE. Możesz zaznaczyć fragment kodu i napisać o nim zachętę bez opuszczania edytora. Możesz także napisać początek funkcji lub linii kodu, a Copilot zasugeruje Ci resztę. Copilot Chat może również wyjaśniać fragmenty kodu, zalecać poprawki błędów, opisywać koncepcje programistyczne i pisać przypadki testowe.
Copilot w CLI zapewnia interfejs czatu w terminalu. Ta wtyczka umożliwia zadawanie pytań lub wykonywanie poleceń dotyczących wiersza poleceń, np. dostarczanie wyjaśnień lub sugestii.
Kto stworzył GitHub Copilot?
GitHub Copilot jest wynikiem współpracy pomiędzy GitHub, Microsoft i OpenAI (firmą tworzącą ChatGPT i DALL-E).
GitHub Copilot został pierwotnie wydany w październiku 2021 r. jako ograniczona wersja zapoznawcza. W czerwcu 2022 roku została szeroko udostępniona wszystkim programistom w ramach subskrypcji.
Czy korzystanie z GitHub Copilot jest bezpłatne?
GitHub Copilot jest oferowany w trzech płatnych poziomach:
- Copilot Individual dla użytkowników osobistych
- Copilot Business dla organizacji
- Copilot Enterprise dla firm korzystających z GitHub Enterprise Cloud, który umożliwia posiadanie wielu organizacji w ramach jednego konta
Wszystkie subskrypcje są wyceniane w przeliczeniu na użytkownika miesięcznie, z wyjątkiem Copilot Individual, który oferuje również subskrypcję roczną. Wszystkie poziomy oferują czat Copilot, interfejs wiersza polecenia GitHub oraz możliwość podłączenia do edytora kodu. Niektóre kluczowe różnice między poziomem osobistym i biznesowym to dostęp do dzienników audytu i zwiększone kontrole zasad.
Jeśli chcesz wypróbować GitHub Copilot przed dokonaniem płatności, istnieje jednorazowy 30-dniowy okres próbny dla wszystkich użytkowników.
Nauczyciele, uczniowie i opiekunowie popularnych projektów typu open source mogą bezpłatnie korzystać z usługi GitHub Copilot.
Wskazówki i porady dotyczące korzystania z usługi GitHub Copilot
GitHub Copilot imponuje zrozumieniem języka naturalnego i przewidywaniem Twoich potrzeb. Jednak nadal musisz znać kilka wskazówek i wskazówek, aby konsekwentnie uzyskiwać trafne wyniki wysokiej jakości. Przyjrzyjmy się najlepszym praktykom, które zwiększają Twoje szanse na uzyskanie oczekiwanych odpowiedzi.
Napisz szczegółowe podpowiedzi
Aby generować skuteczne odpowiedzi, GitHub Copilot potrzebuje szczegółowych i precyzyjnych podpowiedzi. Aby to zrobić, musisz podać odpowiednie informacje w swoich podpowiedziach. Na przykład, jeśli chcesz napisać kod rysujący dom, musisz szczegółowo określić kolor domu, liczbę pięter i kąt, z którego chcesz go oglądać.
Podaj przykłady
Jeśli podasz przykłady kodu do GitHub Copilot, istnieje większe prawdopodobieństwo, że uzyskasz pożądany wynik. Jest to prosty sposób na dodanie kontekstu do podpowiedzi bez konieczności wyjaśniania, co sobie wyobrażasz. Na przykładzie jest mniej miejsca na błędną interpretację.
Zachowaj spójne konwencje nazewnictwa
Użyj konkretnych nazw związanych z przeznaczeniem każdej zmiennej lub funkcji, aby pomóc GitHub Copilot zrozumieć kontekst. Ta praktyka pomaga również w uporządkowaniu wyników GitHub Copilot, ponieważ replikuje konwencje nazewnictwa używane w kodzie.
Podziel wszystko na proste kroki
GitHub Copilot działa najlepiej podczas pisania krótszych fragmentów kodu. Podziel swoje zadania na proste kroki, aby uzyskać najlepsze rezultaty. Na przykład, jeśli chcesz napisać funkcję, jasno wyjaśnij każdy krok, który musi wykonać GitHub. Pozwól mu wygenerować fragment kodu dla każdego kroku, jeden po drugim.
Przejrzyj odpowiedzi GitHub Copilot
Chociaż GitHub Copilot jest biegły w generowaniu użytecznego kodu, nadal wymaga nadzoru człowieka. Dokładnie sprawdź każdą odpowiedź, aby upewnić się, że jest dokładna, spełnia najlepsze praktyki kodowania, jest zgodna z Twoimi zasadami i nie zawiera luk w zabezpieczeniach.
Otwórz odpowiednie karty
Pozostawiając otwarte kilka innych zakładek związanych z Twoim projektem, możesz pracować wydajniej i zwiększyć szanse na uzyskanie lepszych odpowiedzi. GitHub Copilot wykorzystuje technikę zwaną sąsiednimi kartami, aby uzyskać więcej kontekstu dla Twoich żądań. Skanuje inne karty otwarte w IDE, aby znaleźć pasujące fragmenty kodu i uwzględnić je w swoich odpowiedziach.
Sposoby maksymalizacji wydajności programowania dzięki GitHub Copilot
GitHub Copilot może usprawnić Twoje procesy na wiele sposobów, od generowania nowego kodu po pisanie dokumentacji. Oto niektóre z najpopularniejszych aplikacji dla tego programisty pary AI.
Wygeneruj nowy kod
GitHub Copilot może tworzyć kod od zera. Możesz tworzyć nowe funkcje, klasy i inne struktury kodu, pisząc szczegółowy opis swojego celu. Pisanie od zera za pomocą GitHub Copilot najlepiej sprawdza się w przypadku tworzenia szablonów i podstawowego kodu.
Sugestie kodu i autouzupełnianie
Podczas pisania kodu usługa GitHub Copilot może wyświetlać sugestie na podstawie kontekstu edytowanego pliku. Czasami udostępnia wiele sugestii, które możesz przełączać, aby znaleźć tę, która Ci się podoba. Możesz także połączyć kod z więcej niż jednej sugestii. Jeśli nie podoba Ci się pierwsza partia rekomendacji generowanych przez GitHub Copilot, możesz poprosić o więcej.
Wydajne debugowanie i korekcja błędów
Możesz poprosić GitHub Copilot o zalecenie strategii i rozwiązań pozwalających naprawić błędy w kodzie. W swoim IDE opisz błąd w Copilot Chat i poproś o rozwiązanie. Jeśli używasz interfejsu wiersza polecenia, możesz użyć polecenia /fix, aby wygenerować potencjalne poprawki. GitHub Copilot uwzględnia kod błędu, otaczający go kod i składnię kodu, aby wygenerować możliwe rozwiązania.
Ponadto, jeśli polecenie nie zostanie uruchomione w terminalu poleceń, GitHub Copilot zasugeruje możliwe przyczyny niepowodzenia kodu i zaproponuje potencjalne rozwiązania.
Automatyzacja pisania przypadków testowych
Jeśli chcesz sprawdzić, czy Twój kod będzie działał zgodnie z planem, GitHub Copilot może pomóc Ci w pisaniu przypadków testów jednostkowych. Możesz wybrać blok kodu i poprosić GitHub Copilot o utworzenie testu jednostkowego lub opisanie, co chcesz przetestować.
Interaktywne dyskusje na temat kodu
Możesz wchodzić w interakcję z GitHub Copilot, używając języka naturalnego, aby zadawać pytania i uzyskiwać wskazówki dotyczące wyzwań związanych z kodowaniem. Zamiast przeszukiwać fora i przekopywać się przez dokumentację, możesz uzyskać odpowiedzi na pytania dotyczące kodowania bezpośrednio w swoim edytorze.
Spróbuj zapytać GitHub Copilot o następujące rzeczy:
- Jak skonfigurować nowy projekt w określonym języku kodowania
- Plusy i minusy różnych architektur oprogramowania
- Wyjaśnij, do czego służy fragment kodu
- Podaj reguły składni powiązane z określonym językiem
- Omów problem z kodowaniem, na przykład dlaczego kod nie działa zgodnie z oczekiwaniami
Uproszczenie dokumentacji
GitHub Copilot może napisać dokumentację Twojego kodu. Zacznij pisać swoją dokumentację, a ona automatycznie ją uzupełni. Podobnie jak w przypadku autouzupełniania kodu, możesz przeglądać sugestie, aby znaleźć tę, która pasuje do Twojego kodu. Następnie możesz wybrać właściwy tekst i wprowadzić zmiany, aby dokumentacja była kompletna i dokładna. Może także sugerować podsekcje, takie jak Testy, Użycie i Wytyczne dla współpracowników.
Optymalizacja kodu i refaktoryzacja
Możesz użyć GitHub Copilot, aby uczynić swój kod bardziej wydajnym, czytelnym i łatwiejszym w utrzymaniu. Zaznacz blok kodu i poproś go o optymalizację. Dzięki tej możliwości GitHub Copilot może pomóc w usprawnieniu takich czynności, jak reorganizacja bloków kodu, zmiana nazw zmiennych i uczynienie kodu bardziej zwięzłym.
Plusy korzystania z GitHub Copilot
Korzystanie z GitHub Copilot pomaga wydajniej pracować i może stanowić część Twojego zestawu narzędzi do edukacji w zakresie kodowania. Możesz także skorzystać z dzielenia się spostrzeżeniami z ogromną społecznością GitHub.
Przyjrzyjmy się bliżej zaletom korzystania z GitHub Copilot.
Usprawniona wydajność kodowania
Generatywna sztuczna inteligencja zapewnia programistom duży wzrost produktywności. Według jednego z badań programiści AI w parach mogą skrócić czas generowania kodu o 35–45%. GitHub Copilot przyspiesza procesy kodowania, automatyzując ręczne, powtarzalne zadania. Dzięki temu możesz poświęcić więcej czasu na bardziej złożone czynności związane z kodowaniem.
Oto kilka sposobów, w jakie może zaoszczędzić czas:
- Zmniejsza potrzebę wpisywania powtarzających się fragmentów kodu lub wyszukiwania określonej składni
- Automatyzuje dokumentację
- Oferuje odpowiedzi na pytania dotyczące kodowania bez konieczności opuszczania edytora
- Zapisuje standardowy kod do typowych zadań, takich jak konfigurowanie funkcji, klas lub obsługa błędów
- Oszczędza czas poświęcony na szukanie przestarzałego, nieefektywnego kodu i znajdowanie sposobów na jego ulepszenie
- Zawiera sugestie dotyczące kodu, które pomogą Ci rozpocząć projekt
Zasoby edukacyjne do ciągłego uczenia się
GitHub Copilot może pomóc początkującym i doświadczonym programistom w rozwijaniu ich umiejętności. W połączeniu z innymi zasobami edukacyjnymi dotyczącymi kodowania może pomóc w nauce podstaw.
Oto jak:
- Zbadaj koncepcje i terminologię kodowania
- Otrzymuj sugestie dotyczące sposobów ulepszenia kodu
- Zachęcaj do stosowania najlepszych praktyk w zakresie kodowania
- Zyskaj wiedzę na temat prawidłowej składni i struktury plików, co pomoże Ci rozpoznać wzorce leżące u podstaw tych praktyk
- Poznaj wiele podejść do rozwiązywania problemów z kodowaniem
- Zadawaj pytania dotyczące fragmentów kodu, aby lepiej zrozumieć, co one oznaczają i dlaczego się tam znajdują
Zaangażowanie społeczności
Eksperymentowanie i eksploracja są niezbędne, aby skutecznie korzystać z platform generatywnej sztucznej inteligencji. Ponieważ GitHub ma dużą, aktywną, globalną społeczność, prawdopodobnie znajdziesz innych użytkowników Copilot, z którymi masz coś wspólnego. Społeczność umożliwia użytkownikom uczenie się od siebie nawzajem, dzielenie się wskazówkami i omawianie najnowszych aktualizacji. Przydatne i istotne informacje znajdziesz na forach, w mediach społecznościowych, podcastach i YouTube.
Posiadanie dużej bazy użytkowników również przyczynia się do ulepszenia GitHub Copilot. Użytkownicy przekazują opinie, pomagają trenować model, tworzą innowacyjne przypadki użycia i znajdują nowe sposoby łączenia GitHub Copilot z innymi wtyczkami i rozszerzeniami.
Wady korzystania z GitHub Copilot
Jak każda technologia, GitHub Copilot ma potencjalne wady. Może być niedokładny lub generować niespójne wyniki w zależności od języka programowania. Istnieją również wątpliwości etyczne dotyczące jego szkolenia i reagowania.
Pamiętaj o tych potencjalnych pułapkach podczas korzystania z usługi GitHub Copilot.
Niedokładne lub problematyczne odpowiedzi
Ponieważ GitHub Copilot został przeszkolony w oparciu o publicznie dostępny kod, może odzwierciedlać niektóre wady jego bazy wiedzy. Na przykład jego odpowiedzi mogą zawierać błędy, odwoływać się do nieaktualnych interfejsów API lub zawierać luki w zabezpieczeniach. Może również wyciekać prywatny kod (taki jak klucze API).
Ponadto generatywna sztuczna inteligencja zawsze wiąże się z ryzykiem wywołania obraźliwych lub stronniczych reakcji. Chociaż GitHub wdrożył zabezpieczenia przed obraźliwymi monitami i odpowiedziami, nie są one niezawodne.
Ostatecznie to Ty jesteś odpowiedzialny za sprawdzenie kodu pod kątem dokładności, skuteczności i bezpieczeństwa. GitHub udostępnia kilka funkcji ułatwiających ocenę kodu, takich jak GitHub Actions, Depabot, CodeQL i skanowanie kodu.
Znajomość języka programowania
GitHub Copilot jest technicznie biegły we wszystkich publicznie dostępnych językach programowania. Jednak jakość jego odpowiedzi jest lepsza w przypadku niektórych niż innych.
Według Githuba oto języki, w których jest on najbardziej uzdolniony:
- Pyton
- JavaScript
- Maszynopis
- Rubin
- Iść
- C#
- C++
Języki te są zazwyczaj najpopularniejsze w repozytoriach publicznych, więc GitHub Copilot radzi sobie z nimi najlepiej. Jeśli używasz języka, który nie jest tak powszechnie omawiany na forach publicznych, istnieje większe prawdopodobieństwo, że pojawią się nieścisłości i mniej odpowiedzi.
Obawy etyczne
Podobnie jak w przypadku całej sztucznej inteligencji, istnieją wątpliwości etyczne dotyczące korzystania z kodu publicznego przez GitHub Copilot i możliwości ochrony praw autorskich do jego wyników. Twórcy GitHub Copilot twierdzą, że wykorzystywanie danych publicznych do celów szkoleniowych podlega ochronie dozwolonego użytku.
Krytycy twierdzą, że dane szkoleniowe GitHuba są w rzeczywistości objęte licencjami typu copyleft lub licencjami wolnego i otwartego oprogramowania (FOSS), które wymagają przestrzegania określonych wytycznych dotyczących przypisania. Dzięki licencjom typu copyleft autorzy mogą dyktować, w jaki sposób wykorzystywane jest ich dzieło. Część ekspertów twierdzi, że GitHub narusza te zasady. Inni mówią, że GitHub Copilot nie robi nic nielegalnego, ale musimy przeprowadzić szerszą rozmowę na temat sztucznej inteligencji i wykorzystania przez nią danych open source.
Ostatecznie zadecydują organy regulacyjne i sądy. Nie jest to powód, aby unikać korzystania z GitHub Copilot, ale warto o tym pamiętać. Jeśli intensywnie korzystasz z GitHub Copilot w projektach komercyjnych, możesz omówić swoje narażenie na ryzyko prawne z ekspertem.
Co dalej z GitHub Copilot i innymi asystentami kodowania AI?
GitHub Copilot może pomóc Ci szybciej kodować, zachęcić do korzystania z najlepszych praktyk programistycznych i poszerzyć wiedzę na temat kodowania. Jego szerokie możliwości, od sugerowania następnej linii kodu po pisanie przypadków testowych, usprawniają wiele bardziej ręcznych, żmudnych aspektów kodowania. Każdy, od nowych programistów po doświadczonych, może skorzystać z możliwości GitHub Copilot i uczyć się od dużej społeczności użytkowników.
Nie zastąpi to jednak ludzkiej wiedzy. Powinieneś sprawdzić jej odpowiedzi, aby upewnić się, że są dokładne i bezpieczne. Możesz także preferować używanie go w niektórych językach programowania zamiast w innych, ponieważ jego wyniki mogą się różnić.
Co dalej z GitHub Copilot i innymi platformami generatywnej sztucznej inteligencji? Generatywna sztuczna inteligencja rozwija się błyskawicznie, a bycie na bieżąco z najnowszymi narzędziami, aplikacjami i przepisami to najlepszy sposób na przygotowanie się na przyszłość.