Od jakiegoś czasu media głośno krzyczą, że programiści stracą pracę. Mniej obeznani w temacie śmieją się, że programiści stworzyli narzędzia, które ich zastąpią? Ile w w tym prawdy i czemu software developerzy tworzą sobie konie trojańskie?
Powody są bardzo proste – pasja i lenistwo. Od dawna w swojej pracy developera wykorzystuję modele LLM po to aby ułatwić sobie pracę. Ot dla przykładu w poprzednim artykule napisałem jak skróciłem 100h do jednej.
Dotychczas jednak wykorzystywałem głównie chaty (GPT, Claude) w 3 rolach:
- oczywiście do generowania kodu origrany w oczywistych case’ach. Zwłaszcza na początku tworzenia nowej funkcjonalności. Kiedyś do tego służyły wbudowane w frameworki generatory. Dziś możemy to robić w dużo bardziej zaawansowany sposób.
- do rozwiązywania problemów (zupełnie jak kiedyś stackoverflow). Tyle, że kiedyś trzeba było szukać pytania kogoś kto miał podobny problem. Dziś odpowiedź jest generowana dynamicznie. Zwykle poprawna.
- do szukania przyczyn błędu. Zwłaszcza jak trzeba się przekopać przez tony komunikatów, logów i innych spageti.
Wszystkie te zastosowania miały jedną zasadniczą wadę… Aby je zastosować trzeba było zrobić przeklejkę kodu w odpowiednie miejsce. Zwłaszcza w pierwszym case’ie było to uciążliwe, bo na początku projektu trzeba było stworzyć kilkanaście czy kilkadziesiąt plików. Dopracowałem do perfekcji przekonywanie chata aby generował mi to w odpowiednim formacie i przede wszystkim w całości, ale i tak była to dość frustrująca praca, którą przecież może wykonać automat. Dodatkowym problemem było udostępnianie LLM właściwej części kodu. Nie chcemy przecież udostępnić wszystkiego, ale jednocześnie trzeba tyle, aby zrozumiał on kontekst.
I tutaj z pomocą przychodzi Aider. Nie jest to pierwsze narzędzie tego typu, które testowałem i z pewnością nie ostatnie. Wcześniej sprawdzałem chociażby GPT-engeener. On niestety dość szybko okazał się zbyt niedoskonały, aby był sens z niego korzystać. Podejrzewam, że w dużej części wynikało to z niedoskonałości dostępnych wtedy modeli. Zwłaszcza, że GPT-4, mimo, że dostępny przez chata, nie był dostępny dla wszystkich przez API, a właśnie takiego dostępu wymagają powyższe narzędzia.
Czym się różni zatem Aider od zlecenia napisania programu w chacie?
Przede wszystkim tym, że ma bezpośredni kontakt ze komputerem na którym program będzie uruchamiany. Na etapie programowania, kodu źródłowego, bardzo rzadko program jest jednym plikiem. Zwykle to dziesiątki, setki, tysiące różnych powiązanych ze sobą plików. Mowa tutaj zarówno o plikach napisanych przez programistę/chata, jak i o zewnętrznych dostawcach, którzy już dawno napisali jakieś powtarzalne funkcjonalności jak np. logowanie.
Aider potrafi zapisać każdy z tych plików osobno, ale również modyfikować istniejące już pliki. Co ważnie nie daje pełnego dostępu do nich. O dostęp do każdego pliku pyta nas grzecznie zarówno przed odczytem jak i zapisem. Co więcej cała historia zmian jest skrzętnie dokumentowana w repozytorium GIT (w bardzo dużym uproszczeniu historia zmian w dokumencie word na sterydach).
Co zatem możemy za pomocą Aidera?
- stworzyć i uruchomić zupełnie nowy program wraz z całą strukturą plików jakich potrzebuje
- zmodyfikować, aktualne oprogramowanie
- możemy mu także kazać uruchomić program i analizować błędy jakie się pojawiają podczas uruchomienia.
Co najbardziej podoba mi się w Aiderze i co daje mu przewagę nad chociażby Claude-dev to tryb chatu i trzymanie historii nawet jeśli coś nam po drodze się zepsuje. Z claude-dev miałem taki problem, że w momencie gdy odrzuciłem jakąś jego zmianę to sie resetował i właściwie cała jego wiedza o programie się resetowała.
Mój romans z Aiderem zaczął się od rolki na której pewien twórca pokazywał jak tworzy aplikację bez użycia klawiatury. Aider rzeczywiści posiada wtyczkę do obsługi poleceniami głosowymi, ale to uznałem raczej za bajer i potwierdzenie, że nie trzeba pisać ani linijki kodu.
Dla kogo jest to narzędzie?
Niestety (a może na szczęście) nie jest to narzędzie dla każdego. Owszem możesz sobie wygenerować jakieś proste aplikacje, ale z czasem znajomość architektury, podstawowa znajomość języków programowania, może okazać się niezbędna.
Jak to uruchomić?
Aider jest napisany w Pythonie i jako paczka tego języka jest domyślnie dostarczany.
Musisz zatem zainstalować Pythona na swoim Windowsie lub Linuxie.
Instrukcja dla Windowsa
Pobierz instalator Pythona:
Wejdź na oficjalną stronę: https://www.python.org/downloads/.
Pobierz wersję instalatora Pythona odpowiednią dla Twojego systemu (najczęściej „Windows installer (64-bit)”).
Zainstaluj Pythona:
Uruchom pobrany instalator.
Zaznacz opcję „Add Python to PATH” na dole okna instalatora, aby dodać Pythona do zmiennych środowiskowych.
Kliknij „Install Now”, aby rozpocząć instalację.
Poczekaj, aż instalacja się zakończy.
Sprawdź instalację Pythona i pip:
Zainstaluj aider-chat
:
Wpisz w wierszu poleceń:bashSkopiuj kodpython -m pip install aider-chat
To powinno zainstalować aider-chat
.
Następnie w katalogu w którym mamy lub chcemy mieć projekt odpalamy Aider.