Przepływ procesu monitu użytkownika narzędzia Copilot w usłudze GitHub

Ukończone

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:

Ilustracja przedstawiająca przepływ przychodzący w usłudze GitHub Copilot.

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:

Ilustracja przedstawiająca przepływ wychodzący w usłudze GitHub Copilot.

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.