Monituj podstawy inżynieryjne i najlepsze rozwiązania
W tej lekcji omówimy następujące zagadnienia:
- Co to jest inżynieria monitu?
- Podstawy inżynierii monitów
- Najlepsze rozwiązania dotyczące monitowania inżynieryjnego
- Jak Copilot uczy się z monitów
Co to jest inżynieria monitu?
Inżynieria monitu to proces tworzenia przejrzystych instrukcji kierowania systemami sztucznej inteligencji, takimi jak GitHub Copilot, w celu wygenerowania odpowiedniego dla kontekstu kodu dostosowanego do konkretnych potrzeb projektu. Gwarantuje to, że kod jest składniowo, funkcjonalnie i kontekstowo poprawny.
Teraz, gdy już wiesz, co to jest inżynieria monitu, dowiedzmy się więcej o niektórych jej zasadach.
Zasady inżynierii monitów
Zanim zapoznamy się z konkretnymi strategiami, najpierw zrozumiemy podstawowe zasady inżynierii monitów, podsumowane w poniższych 4 Ss . Te podstawowe reguły są podstawą tworzenia skutecznych monitów.
- Pojedynczy: zawsze skupiaj się na pojedynczym, dobrze zdefiniowanym zadaniu lub pytaniu. Ta jasność ma kluczowe znaczenie dla uzyskania dokładnych i przydatnych odpowiedzi z Copilot.
- Konkretne: Upewnij się, że instrukcje są jawne i szczegółowe. Specyfika prowadzi do bardziej odpowiednich i precyzyjnych sugestii dotyczących kodu.
- Krótki: Podczas bycia konkretnym należy zachować zwięzłe monity i do punktu. Ta równowaga zapewnia przejrzystość bez przeciążenia Copilota lub komplikowania interakcji.
- Otocz: użyj opisowych nazw plików i zachowaj otwarte powiązane pliki. Zapewnia to rozwiązanie Copilot z zaawansowanym kontekstem, co prowadzi do bardziej dostosowanych sugestii dotyczących kodu.
Te podstawowe zasady stanowią podstawę tworzenia wydajnych i skutecznych monitów. Mając na uwadze 4 Ss, przyjrzyjmy się bardziej zaawansowanym najlepszym rozwiązaniom, które zapewniają optymalizację każdej interakcji z rozwiązaniem GitHub Copilot.
Najlepsze rozwiązania dotyczące monitowania inżynieryjnego
Poniższe zaawansowane rozwiązania, oparte na 4 Ss, uściślić i zwiększyć zaangażowanie dzięki Copilot, zapewniając, że wygenerowany kod nie jest tylko dokładny, ale idealnie dopasowany do konkretnych potrzeb i kontekstów projektu.
Zapewnij wystarczającą przejrzystość
Opierając się na zasadach "Single" i "Specific", zawsze dążyć do jawności w swoich monitach. Na przykład monit, taki jak "Pisanie funkcji języka Python w celu filtrowania i zwracania parzysty liczb z danej listy", jest zarówno pojedynczy, jak i specyficzny.
Podaj wystarczającą ilość kontekstu ze szczegółami
Wzbogacanie zrozumienia Copilot z kontekstem, zgodnie z zasadą "Otocz". Bardziej kontekstowe informacje, tym bardziej pasują sugestie wygenerowanego kodu. Na przykład dodając komentarze w górnej części kodu, aby podać więcej szczegółów, możesz podać więcej kontekstu copilotowi, aby zrozumieć swój monit i udostępnić lepsze sugestie dotyczące kodu.
W powyższym przykładzie użyliśmy kroków, aby podać więcej szczegółów przy zachowaniu krótkiego czasu. Ta praktyka jest zgodna z zasadą "Krótka", równoważąc szczegóły z zwięzłością, aby zapewnić przejrzystość i precyzję komunikacji.
Uwaga
Copilot używa również równoległych kart otwierania w edytorze kodu, aby uzyskać więcej kontekstu na temat wymagań kodu.
Podaj przykłady na potrzeby nauki
Korzystając z przykładów, można wyjaśnić wymagania i oczekiwania, ilustrując abstrakcyjne pojęcia i tworząc monity bardziej namacalne dla Copilot. Dobrze spreparowane przykłady pomagają Copilot szybko zrozumieć wzorce, co prowadzi do bardziej dokładnych sugestii początkowych, które wymagają mniejszej liczby cykli poprawek. Takie podejście jest szczególnie skuteczne w przypadku generowania standardowego kodu, szablonów testów i powtarzających się implementacji, które stanowią podstawę większych funkcji.
Asercyj i iteruj
Jednym z kluczy do odblokowania pełnego potencjału GitHub Copilot i przyspieszenia przepływu pracy programistycznej jest praktyka strategicznej iteracji. Pierwszy monit może nie zawsze zwracać kod gotowy do wdrożenia i to jest zupełnie w porządku. Zamiast poświęcać czas ręcznie udoskonalając dane wyjściowe, traktuj je jako początek efektywnego dialogu z Copilot.
Jeśli pierwsze dane wyjściowe nie całkiem odpowiadają Twoim oczekiwaniom, nie zaczynaj od zera. Zamiast tego wymazaj sugerowany kod, wzbogacaj początkowy komentarz o dodane szczegóły i przykłady, a następnie ponownie monituj Copilota. Takie podejście iteracyjne często przyspiesza tworzenie kodu gotowego do wdrożenia o wysokiej jakości niż tradycyjne metody programowania, ponieważ każda iteracja opiera się na zrozumieniu konkretnych wymagań przez Copilot.
Teraz, po zapoznaniu się z najlepszymi rozwiązaniami w zakresie ulepszania umiejętności monitujących, przyjrzyjmy się bliżej sposobom udostępniania przykładów, z których copilot może się uczyć.
Jak Copilot uczy się z monitów
GitHub Copilot działa na podstawie modeli sztucznej inteligencji wyszkolonych na ogromnych ilościach danych. Aby lepiej zrozumieć konkretne konteksty kodu, inżynierowie często udostępniają mu przykłady. Ta praktyka, często spotykana w uczeniu maszynowym, doprowadziła do różnych podejść szkoleniowych, takich jak:
Uczenie zero-shot
W tym miejscu usługa GitHub Copilot generuje kod bez żadnych konkretnych przykładów, opierając się wyłącznie na podstawowym szkoleniu. Takie podejście jest idealne do szybkiego implementowania typowych wzorców i standardowych funkcji. Załóżmy na przykład, że chcesz utworzyć funkcję, aby przekonwertować temperatury między stopniami Celsjusza i Fahrenheita. Możesz zacząć od napisania tylko komentarza opisującego, co chcesz, a Copilot może być w stanie wygenerować gotowy do produkcji kod, na podstawie poprzedniego szkolenia, bez żadnych innych przykładów.
Uczenie jednoskrętowe
W przypadku tego podejścia podano pojedynczy przykład, ułatwiając modelowi generowanie bardziej kontekstowych odpowiedzi, które są zgodne z określonymi wzorcami i konwencjami. Jest to szczególnie skuteczne w przypadku tworzenia spójnych implementacji w bazie kodu, przyspieszając opracowywanie funkcji przy zachowaniu standardów kodu. Korzystając z poprzedniego przykładu zero-shot, możesz podać przykład funkcji konwersji temperatury, a następnie poprosić Copilot o utworzenie innej podobnej funkcji. Oto jak to może wyglądać:
Uczenie kilku strzałów
W tej metodzie copilot przedstawia kilka przykładów, które zapewniają równowagę między nieprzewidywalnością zero-shot a precyzją dostrajania. Takie podejście wyróżnia się w generowaniu zaawansowanych implementacji, które obsługują wiele scenariuszy i przypadków brzegowych, skracając czas spędzony na ręcznym testowaniu i uściśleniu. Załóżmy, że chcesz wygenerować kod, który wysyła powitanie w zależności od godziny dnia. Oto kilka strzałów wersji tego monitu:
Łączenie monitów i zarządzanie historią czatów
Podczas pracy nad złożonymi funkcjami, które wymagają wielu kroków, możesz uczestniczyć w rozszerzonych rozmowach z usługą GitHub Copilot Chat. Chociaż szczegółowy kontekst pomaga Copilot zrozumieć wymagania, utrzymanie długich historii konwersacji może stać się nieefektywne i kosztowne pod względem przetwarzania.
Na przykład możesz zacząć od podstawowej implementacji, a następnie iteracyjne dodawanie obsługi błędów, testów, dokumentacji i optymalizacji. Każdy krok opiera się na poprzednim kontekście, ale pełna historia staje się dłuższa.
Turn 1: "Tworzenie funkcji uwierzytelniania użytkownika" Turn 2: "Dodawanie obsługi błędów dla nieprawidłowych poświadczeń"
Turn 3: "Dodaj testy jednostkowe dla funkcji uwierzytelniania" Turn 4: "Dodaj komentarze JSDoc, aby udokumentować funkcję" Turn 5: "Zoptymalizuj funkcję dla lepszej wydajności"
Uwaga
Długie polecenia z pełną historią konwersacji mogą zużywać 2–3 jednostki PRU na turę. Podsumowanie kontekstu lub przywrócenie konwersacji może utrzymać się bliżej 1 jednostki PRU na każde żądanie.
Aby efektywnie zarządzać następującymi elementami:
- Podsumuj kontekst , gdy konwersacje stają się długie: "W oparciu o naszą poprzednią dyskusję na temat uwierzytelniania użytkowników dodaj teraz ograniczenie szybkości, aby zapobiec atakom siłowym"
- Zresetuj i zapewnij ukierunkowany kontekst dla nowych funkcji: rozpocznij od kluczowych szczegółów, zamiast kontynuować całą rozmowę.
- Używaj zwięzłych odwołań do poprzedniej pracy zamiast powtarzać pełne implementacje
Przypisywanie ról dla wyspecjalizowanych zadań
Wskazywanie roli polega na instruowaniu narzędzia GitHub Copilot, aby działał w charakterze określonego eksperta, co może znacząco poprawić jakość i istotność wygenerowanego kodu dla przeznaczonych domen. Takie podejście pomaga przyspieszyć opracowywanie, uzyskując bardziej ukierunkowane rozwiązania podczas pierwszej próby.
Rola eksperta ds. zabezpieczeń
Podczas pracy nad funkcjami krytycznymi pod względem zabezpieczeń monituj Copilota, aby pomyślał jak ekspert ds. zabezpieczeń:
"Pełni rolę eksperta ds. cyberbezpieczeństwa. Utwórz funkcję sprawdzania poprawności hasła, która sprawdza typowe luki w zabezpieczeniach i postępuje zgodnie z wytycznymi OWASP".
Takie podejście zwykle generuje kod, który obejmuje:
- Oczyszczanie danych wejściowych
- Ochrona przed typowymi atakami
- Wzorce weryfikacji standardu branżowego
- Najlepsze rozwiązania dotyczące zabezpieczeń
Rola optymalizacji wydajności
W przypadku kodu krytycznego dla wydajności należy użyć roli eksperta od wydajności:
"Pełnić rolę eksperta ds. optymalizacji wydajności. Przekształć ten algorytm sortowania, aby wydajnie obsługiwał duże zestawy danych.
Często skutkuje to następującymi przyczynami:
- Zoptymalizowane algorytmy i struktury danych
- Implementacje wydajne w pamięci
- Zagadnienia dotyczące skalowalności
- Sugestie dotyczące monitorowania wydajności
Rola specjalisty ds. testowania
Podczas tworzenia kompleksowych zestawów testów skorzystaj z perspektywy eksperta od testowania:
"Pełnić rolę specjalisty od testowania. Utwórz kompleksowe testy jednostkowe dla tego modułu przetwarzania płatności, w tym przypadki brzegowe i scenariusze błędów.
Zwykle powoduje to:
- Dokładne pokrycie testowe
- Obsługa przypadków brzegowych
- Implementacje testowe
- Testowanie warunku błędu
Użycie podpowiedzi roli pomaga szybciej przygotować kod produkcyjny, włączając wiedzę specjalistyczną do początkowych implementacji, co zmniejsza zapotrzebowanie na wiele cykli poprawek.
Teraz, gdy już wiesz, jak copilot używa monitów do nauki, przyjrzyjmy się szczegółowo, jak faktycznie używa monitu do sugerowania kodu.