Data ostatniej aktualizacji:
E. G. Santana Jr, Gabriel Benjamin, Melissa Araujo, Harrison Santos, David Freitas, Eduardo Almeida, Paulo Anselmo da M. S. Neto, Jiawei Li, Jina Chun, Iftekhar Ahmed
Zapytaj o ten dokument AI
Kopuj link
Abstrakt
Kluczowe wnioski
Strategie z raportu:
Dekompozycja (Decomposition): Strategia polegająca na rozbijaniu złożonych problemów inżynieryjnych na mniejsze, sekwencyjne podzadania. Pomaga to modelom radzić sobie z architekturą oprogramowania bez gubienia kontekstu i logiki.
Objaśnienie lub prompt
"Zamiast prosić o napisanie całej aplikacji, poproś najpierw o strukturę bazy danych, w kolejnym kroku o API, a na końcu o interfejs użytkownika."
Generowanie myśli (Thought Generation): Wymuszanie na modelu analizy i opisania logiki biznesowej, zanim wygeneruje ostateczny kod lub poprawkę błędu. Znacznie podnosi to skuteczność przy zadaniach wymagających intensywnego rozumowania.
Objaśnienie lub prompt
"Zanim napiszesz kod dla tego algorytmu w Pythonie, opisz krok po kroku, w jaki sposób zamierzasz zoptymalizować jego złożoność pamięciową."
Samokrytyka (Self-Criticism): Zmuszenie modelu do przeanalizowania swojego własnego, wstępnie wygenerowanego rozwiązania, odnalezienia w nim błędów i zaproponowania ulepszonej, ostatecznej wersji przed zaprezentowaniem jej użytkownikowi.
Objaśnienie lub prompt
"Napisz funkcję logowania. Następnie wciel się w audytora, przeanalizuj ten kod pod kątem luk bezpieczeństwa, napraw je i zwróć ostateczny, bezpieczny kod."
Ensembling (Łączenie odpowiedzi): Generowanie kilku różnych podejść do rozwiązania jednego problemu przez AI i wybieranie z nich najbardziej optymalnego, np. pod kątem wydajności lub czystości kodu.
Objaśnienie lub prompt
"Wygeneruj trzy zupełnie różne podejścia do naprawy tego błędu autoryzacji, a następnie wskaż to rozwiązanie, które jest najbardziej optymalne."
Dobre praktyki:
Dopasowanie techniki do konkretnego zadania: Raport wskazuje, że do zadań wymagających złożonej logiki (np. szukanie bugów) najlepiej sprawdza się "Generowanie myśli", natomiast do zadań opartych na szablonach (np. formatowanie kodu, pisanie testów) znacznie lepsze rezultaty dają techniki "Few-Shot" bazujące na przykładach.
Objaśnienie lub prompt
"Dla wygenerowania powtarzalnych testów jednostkowych wklej 3 przykłady Twojego stylu w kodzie (Few-Shot). Dla szukania luki bezpieczeństwa użyj promptu 'Przeanalizujmy ten plik krok po kroku'."
Świadomość kosztów czasu i tokenów: Zawsze miej na uwadze zasoby. Skomplikowane techniki takie jak Ensembling czy Samokrytyka znacznie zwiększają zużycie tokenów i czas oczekiwania na odpowiedź, dlatego nie powinny być używane do trywialnych zadań.
Objaśnienie lub prompt
"Do wygenerowania prostego komentarza dokumentującego kod użyj podstawowego Zero-Shot, aby oszczędzić tokeny, zamiast stosować zaawansowane łańcuchy rozumowania."
Optymalizacja cech lingwistycznych promptu: Autorzy zauważają silną korelację między precyzją użytego języka a jakością wygenerowanego kodu. Specyficzne techniczne słownictwo pozwala skierować model na właściwe rozwiązanie.
Objaśnienie lub prompt
"Zamiast pisać 'Napisz coś pobierającego dane ze strony', użyj: 'Napisz asynchroniczną funkcję w Pythonie z użyciem aiohttp, która pobierze dane z podanego punktu końcowego REST API'."
Czego unikać?
Stosowania jednego, skomplikowanego szablonu do wszystkiego (One-size-fits-all): Nie każda technika inżynierii promptów działa tak samo dobrze w każdym zadaniu programistycznym. Narzucanie ciężkich technik rozumowania na proste problemy powoduje tylko spadek efektywności i wydłuża czas pracy.
Objaśnienie lub prompt
"Wymuszanie długiego 'myślenia krok po kroku' przy prośbie o zmianę nazwy zmiennej w jednej linijce kodu to marnowanie zasobów i czasu obliczeniowego."
Wymuszania rozwiązania ogromnego systemu naraz: Zbyt duże i złożone żądania dotyczące inżynierii oprogramowania kierowane w pojedynczym prompcie (bez użycia dekompozycji) drastycznie zwiększają ryzyko "halucynacji" i wygenerowania niedziałającego kodu.
Objaśnienie lub prompt
"Zbuduj pełen system e-commerce z autoryzacją, koszykiem, integracją płatności oraz panelem admina w jednej odpowiedzi."
Ignorowania kontekstu otoczenia kodu: Używanie trybu Zero-Shot (bez podawania przykładów i szerszego kontekstu) przy edycji skomplikowanych projektów oprogramowania prowadzi do kodu, który nie integruje się z resztą powiązanej aplikacji.
Objaśnienie lub prompt
"Prośba 'Napraw błąd w pliku user_service.py' bez dostarczenia modeli danych bazy, logów błędów i powiązanych zależności plikowych."
Publikacje AI
Prompting
Bezpieczeństwo AI
O mnie
Mój blog
Wsparcie projektu
Buy me a coffe
Create by Mateusz Jędraszczyk
