Przepływ procesu monitu użytkownika narzędzia Copilot w usłudze GitHub
W tej lekcji podzielimy sposób, w jaki narzędzie GitHub Copilot zamienia monity w inteligentny, użyteczny kod. Ogólnie rzecz biorąc, usługa GitHub Copilot odbiera monity i zwraca sugestie lub odpowiedzi dotyczące kodu w przepływie danych. Ten proces sugeruje przepływ przychodzący i wychodzący.
Przepływ przychodzący:
Przyjrzyjmy się wszystkim krokom, które copilot wykonuje, aby przetworzyć monit użytkownika w sugestię kodu.
1. Zabezpieczanie transmisji monitów i zbierania kontekstu
Proces rozpoczyna się od bezpiecznej transmisji monitu użytkownika za pośrednictwem protokołu HTTPS. Dzięki temu twój komentarz języka naturalnego jest wysyłany do serwerów usługi GitHub Copilot w bezpieczny i poufny sposób, chroniąc poufne informacje.
Usługa GitHub Copilot bezpiecznie otrzymuje monit użytkownika, który może być czatem Copilot lub komentarzem języka naturalnego dostarczonym przez Ciebie w kodzie.
Jednocześnie copilot zbiera szczegóły kontekstu:
- Kod przed i po położeniu kursora, co pomaga zrozumieć bezpośredni kontekst monitu.
- Nazwa pliku i typ edytowanego pliku, co umożliwia dostosowanie sugestii dotyczących kodu do określonego typu pliku.
- Informacje o sąsiednich otwartych kartach, które zapewniają, że wygenerowany kod jest zgodny z innymi segmentami kodu w tym samym projekcie.
- Informacje o strukturze projektu i ścieżkach plików
- Informacje na temat języków programowania i struktur
- Przetwarzanie wstępne przy użyciu techniki Fill-in-the-Middle (FIM) w celu rozważenia zarówno poprzedniego, jak i następującego kontekstu kodu, skutecznie rozszerzając zrozumienie modelu, dzięki czemu Copilot może wygenerować dokładniejsze i istotne sugestie kodu, wykorzystując szerszy kontekst.
Te kroki przekładają żądanie wysokiego poziomu użytkownika na konkretne zadanie kodowania.
2. Filtr serwera proxy
Po zebraniu kontekstu i utworzeniu monitu jest on bezpiecznie przekazywana do serwera proxy hostowanego w dzierżawie platformy Microsoft Azure należącej do usługi GitHub. Serwer proxy filtruje ruch, blokując próby włamania się do monitu lub manipulowania systemem w celu ujawnienia szczegółów dotyczących sposobu generowania sugestii dotyczących kodu przez model.
3. Filtrowanie toksyczności
Copilot obejmuje mechanizmy filtrowania zawartości przed kontynuowaniem wyodrębniania intencji i generowania kodu, aby upewnić się, że wygenerowany kod i odpowiedzi nie zawierają ani nie promują:
- Mowa nienawiści i nieodpowiednie treści: Copilot stosuje algorytmy do wykrywania i zapobiegania pobieraniu mowy nienawiści, obraźliwego języka lub nieodpowiedniej zawartości, która może być szkodliwa lub obraźliwa.
- Dane osobowe: Copilot aktywnie filtruje wszelkie dane osobowe, takie jak nazwiska, adresy lub numery identyfikacyjne, w celu ochrony prywatności i bezpieczeństwa danych użytkownika.
4. Generowanie kodu za pomocą usługi LLM
Na koniec przefiltrowany i przeanalizowany monit jest przekazywany do modeli LLM, które generują odpowiednie sugestie dotyczące kodu. Te sugestie są oparte na zrozumieniu monitu i otaczającego kontekstu copilot, zapewniając, że wygenerowany kod jest odpowiedni, funkcjonalny i dopasowany do wymagań specyficznych dla projektu.
Przepływ wychodzący:
5. Przetwarzanie końcowe i walidacja odpowiedzi
Gdy model wygeneruje odpowiedzi, filtr toksyczności usuwa wszelkie szkodliwe lub obraźliwe wygenerowane treści. Następnie serwer proxy stosuje ostateczną warstwę kontroli w celu zapewnienia jakości kodu, zabezpieczeń i standardów etycznych. Testy te obejmują:
- Jakość kodu: odpowiedzi są sprawdzane pod kątem typowych usterek lub luk w zabezpieczeniach, takich jak wykonywanie skryptów między witrynami (XSS) lub wstrzyknięcie kodu SQL, zapewniając niezawodność i bezpieczeństwo wygenerowanego kodu.
- Dopasowywanie kodu publicznego (opcjonalnie): opcjonalnie administratorzy mogą włączyć filtr, który uniemożliwia Copilot zwracanie sugestii powyżej 150 znaków, jeśli są one ściśle podobne do istniejącego kodu publicznego w usłudze GitHub. Zapobiega to sugerowaniu przypadkowych dopasowań jako oryginalnej zawartości. Jeśli którakolwiek część odpowiedzi zakończy się niepowodzeniem, te testy zostaną obcięte lub odrzucone.
6. Dostarczanie sugestii i inicjowanie pętli opinii
Do użytkownika są dostarczane tylko odpowiedzi, które przekazują wszystkie filtry. Copilot następnie inicjuje pętlę opinii na podstawie twoich akcji w celu osiągnięcia następujących czynności:
- Zwiększ swoją wiedzę na podstawie zaakceptowanych sugestii.
- Dowiedz się i ulepszaj, modyfikując i odrzucanie sugestii.
7. Powtórz kolejne monity
Proces jest powtarzany, gdy udostępniasz więcej monitów, a copilot stale obsługuje żądania użytkowników, rozumie ich intencję i generuje kod w odpowiedzi. Z biegiem czasu Copilot stosuje skumulowane dane opinii i interakcji, w tym szczegóły kontekstu, aby poprawić zrozumienie intencji użytkownika i uściślić możliwości generowania kodu.