Modele czatowe i agenci kodujący to różne narzędzia
Warto to rozdzielić od razu, bo obie rzeczy są mylone. Agentowe narzędzie do kodowania żyje w twoim edytorze lub terminalu, czyta twoje repozytorium i zapisuje pliki. Przestrzeń czatu to miejsce, w którym myślisz: wklejasz stack trace, spierasz się o podejście, przeglądasz diff, poznajesz bibliotekę, której nigdy nie używałeś, i szkicujesz dokument projektowy.
Większość programistów w końcu korzysta z obu, a to po stronie czatu wybór modelu ma największe znaczenie, bo czytasz rozumowanie, a nie diff. To także miejsce, w którym płacenie za trzy osobne subskrypcje, żeby porównać trzy modele, przestaje mieć sens.
| Co robisz | Skłonność modelu | Uwagi |
|---|---|---|
| Trudne wnioskowanie: współbieżność, subtelny wyścig, kompromis architektoniczny | Claude i GPT różnią się znacząco | Zapytaj oba. To przypadek, w którym druga opinia się zwraca |
| Szybkość implementacji na sprawdzonym gruncie | GPT | Szybki, idiomatyczny, dobry w boilerplate i konwersjach |
| Czytanie dużej, nieznanej bazy kodu lub długiej specyfikacji | Gemini | Największe okno kontekstu, więc więcej systemu mieści się naraz |
| Wyjaśnianie błędu lub koncepcji | Które ujęcie trafi | Różne modele tłumaczą inaczej i o to właśnie chodzi |
| Ścisłe ustrukturyzowane wyjście: config, JSON, schemat | GPT | Najbardziej niezawodny w dokładnym przestrzeganiu formatu |
Prompty do debugowania, które biją wklejanie stack trace
Wklejenie błędu i zapytanie, co jest nie tak, daje domysł. Domysł często bywa trafny, a gdy jest błędny, tracisz dwadzieścia minut, ganiając za wiarygodną poprawką problemu, którego nie masz. Te prompty zmieniają kształt odpowiedzi.
Prompt: hipotezy przed poprawkami
Oto błąd, kod i to, co już wykluczyłem. Nie podawaj jeszcze poprawki. Wypisz cztery najbardziej prawdopodobne przyczyny uszeregowane wg prawdopodobieństwa, a dla każdej: najtańszą pojedynczą kontrolę, która by ją potwierdziła lub wykluczyła. Błąd: [wklej]. Kod: [wklej]. Już wykluczone: [lista].
Prompt: błąd, który zdarza się tylko czasami
To zawodzi z przerwami, mniej więcej [częstotliwość], w warunkach [warunki]. Oto odpowiedni kod i to, co wiem o środowisku. Wymień kategorie sporadycznych awarii, które mogłyby dać ten konkretny objaw (timing, kolejność, wyczerpanie zasobów, zależność zewnętrzna, przeciek stanu między uruchomieniami, zegar lub strefa czasowa, cache). Dla każdej powiedz, jaki dowód z tego, co podałem, ją potwierdza lub jej przeczy, i co powinienem logować, żeby je odróżnić.
Prompt: wyjaśnij poprawkę, zanim ją zastosuję
Wyjaśnij, dlaczego ta poprawka działa, czego nie naprawia i co mogłaby zepsuć. Jeśli pierwotna przyczyna jest gdzie indziej, a to jest łatka na objaw, powiedz to wprost.
Ten ostatni prompt łapie najdroższą klasę pomocy AI: zmianę, która sprawia, że objaw znika, podczas gdy faktyczna wada zostaje w bazie kodu.
Dwa modele na tym samym problemie, co nie jest sztuczką
Gdy odpowiedź jest oczywista, jeden model wystarczy. Technika opłaca się przy problemach, co do których nie masz pewności, i działa, bo modele zawodzą inaczej, a nie identycznie.
Przydatny wzorzec to nie pytanie obu i wybranie tego, który bardziej ci się podoba. To zapytanie jednego, a potem przekazanie jego odpowiedzi drugiemu:
Prompt: kontradyktoryjny przegląd odpowiedzi
Inny inżynier zaproponował to rozwiązanie tego problemu. Znajdź, co jest w nim nie tak: poprawność w przypadkach brzegowych, współbieżność, obsługa błędów, wydajność przy [skala] lub prostsze podejście, które przeoczono. Jeśli jest faktycznie solidne, powiedz to wprost, zamiast wymyślać zastrzeżenia. Problem: [wklej]. Proponowane rozwiązanie: [wklej].
Dwa wyniki, oba przydatne. Albo drugi model znajduje prawdziwą lukę, o której teraz wiesz przed mergem, albo się zgadza, co jest realnym dowodem, skoro miał wszelkie powody, by się nie zgodzić. Porównaj to z iterowaniem z tym samym modelem, który ma tendencję do zgadzania się z samym sobą.
Ten sam wzorzec stosuje się do decyzji projektowych:
Prompt: broń drugiej strony
Wybieram [podejście A] zamiast [podejście B] dla [kontekst i ograniczenia]. Zbuduj najmocniejszy argument za B. Co musiałoby być prawdą w naszych ograniczeniach, żeby B było właściwym wyborem, i czy cokolwiek z tego jest tu prawdą?
Porównanie modeli obok siebie w Whizi istnieje dokładnie po to i jest opisane w porównaj modele obok siebie.
Code review i czytanie nieznanego kodu
Prompt: przejrzyj diff jak wymagający recenzent
Przejrzyj ten diff. Kategorie, w kolejności: błędy poprawności, kwestie bezpieczeństwa, nieobsłużone tryby awarii, race conditions, potem styl. Dla każdego ustalenia podaj wagę, konkretną linię i dlaczego to ma znaczenie tutaj, a nie ogólnie. Nie komentuj formatowania. Jeśli diff jest w porządku, powiedz to. Kontekst: ta baza kodu używa [stos i konwencje]. Diff: [wklej].
Prompt: zrozum bazę kodu, którą właśnie odziedziczyłeś
Oto główne pliki źródłowe. Przygotuj: punkty wejścia, przepływ danych od żądania do odpowiedzi, stan, który jest współdzielony i gdzie jest mutowany, zewnętrzne zależności i co się dzieje, gdy każda z nich jest niedostępna, oraz trzy części najbardziej narażone na błędy na podstawie złożoności i sprzężenia. Powiedz wprost, czego nie możesz ustalić na podstawie tego, co ci podałem.
Ta ostatnia instrukcja ma większe znaczenie, niż się wydaje. Modele chętnie opiszą zachowanie pliku, którego nie wkleiłeś, wywnioskowane z jego nazwy. Wymuszenie jawnej listy niewiadomych mówi ci, co jeszcze przeczytać.
Prompt: napisz test, o którym byś nie pomyślał
Napisz przypadki testowe dla tej funkcji, skupiając się na wejściach, których prawdopodobnie nie uwzględniłem: granice, puste i null, unicode, bardzo duże wartości, wywołania współbieżne i wszelkie ukryte założenie w implementacji. Dla każdego testu podaj założenie, które sprawdza. Funkcja: [wklej].
Tryby błędów, które naprawdę kosztują czas
Zmyślone API. Modele pewnie produkują nazwy metod, parametry i klucze konfiguracji, które nie istnieją, zwłaszcza dla bibliotek, które niedawno się zmieniły lub są mniej popularne. Sygnatura będzie wyglądać dobrze. Sprawdź faktyczną dokumentację, zanim zbudujesz coś na czymś nieznanym.
Pewnie brzmiące złe poprawki. W tonie nie ma żadnego sygnału. Poprawka, która rozwiązuje twój problem, i poprawka, która wprowadza nowy, subtelny, są dostarczane z identyczną pewnością. Zawsze pytaj, co ta zmiana mogłaby zepsuć.
Przestarzałe wzorce. Dane treningowe przechylają się w stronę objętości kodu napisanego o danym frameworku, co często oznacza poprzednią główną wersję. Jeśli odpowiedź wydaje się sprzed kilku lat, prawdopodobnie tak jest. Podaj w promptcie, na jakiej wersji jesteś.
Ciche rozrastanie się zakresu. Poprosisz o poprawkę, a często dostajesz refaktoryzację. Dodaj zmień jak najmniej i wypisz każdą zmienioną linię wraz z powodem, żeby diff dało się zrecenzować.
Teatr bezpieczeństwa. Model potrafi nazwać klasy podatności w twoim kodzie, co jest naprawdę przydatne przy pierwszym przejściu, ale to nie jest audyt. Nie zna twojego modelu zagrożeń, twojego wdrożenia ani wrażliwości twoich danych.
Jak to się wpasowuje w resztę twojego stosu narzędzi
To nie zastępuje integracji z twoim edytorem ani agentowego narzędzia do kodowania. Zastępuje trzy karty przeglądarki, w których porównywałeś odpowiedzi, plus dwie subskrypcje potrzebne, żeby mieć te karty otwarte naraz.
Praktyczny układ, na którym ląduje większość programistów: jeden domyślny model do szybkich pytań, drugi, na który przełączasz się, gdy pierwsza odpowiedź nie przekonuje, i Gemini, gdy trzeba postawić przed modelem naraz dużą ilość kodu lub długą specyfikację. Wszystko w jednym wątku, więc kontekst, który już ustaliłeś, przechodzi przez przełączenie zamiast być wklejany od nowa.
Więcej na ten temat znajdziesz w AI do kodowania, porównaniu alternatyw nastawionych na kodowanie oraz w pakiecie promptów do kodowania z Claude. Mechanika uruchomienia takiego zestawu w Whizi jest opisana w pisz i debuguj kod z wieloma modelami.
- Poproś o uszeregowane hipotezy i tanie kontrole, zanim poprosisz o poprawkę
- Przekaż odpowiedź pierwszego modelu drugiemu i poproś go o znalezienie luki
- Zawsze pytaj, co proponowana poprawka mogłaby zepsuć i czy to łatka na objaw
- Podaj w promptcie swój język, framework i wersję, żeby uniknąć przestarzałych wzorców
- Zweryfikuj każde nieznane API względem prawdziwej dokumentacji, zanim na nim zbudujesz
- Dodaj "zmień jak najmniej i wypisz każdą zmianę", żeby diffy dało się recenzować
- Użyj modelu z dużym kontekstem, gdy pytanie obejmuje więcej kodu, niż mieści się w zwykłym promptcie
Najczęstsze pytania
Dlaczego nie zostać po prostu przy jednym modelu do kodowania?
Do rutynowej pracy jeden wystarczy. Wartość ujawnia się przy problemach, co do których naprawdę nie masz pewności, bo modele zawodzą w różnych miejscach, a nie w tym samym. Przekazanie proponowanego rozwiązania modelu A modelowi B i poproszenie go o znalezienie wady albo ujawnia prawdziwy problem przed mergem, albo daje realne potwierdzenie. Iterowanie z jednym modelem najczęściej daje zgodę z samym sobą.
Czy to zastępuje agentowe narzędzie do kodowania?
Nie, one rozwiązują różne problemy. Agent żyje w twoim repozytorium i edytuje pliki. Przestrzeń czatu to miejsce, w którym wnioskujesz: stack trace, argumenty projektowe, przegląd diffów, poznawanie nieznanej biblioteki i szkicowanie dokumentu projektowego. Większość programistów korzysta z obu, a wybór modelu ma większe znaczenie po stronie czatu, bo oceniasz rozumowanie, a nie wynikowy diff.
Który model jest najlepszy do kodowania?
To zależy od zadania, co jest szczerą odpowiedzią i powodem, dla którego ta strona istnieje. GPT bywa szybszy i bardziej idiomatyczny przy sprawdzonej pracy implementacyjnej. Claude bywa mocniejszy w subtelnym wnioskowaniu, nieznanej architekturze i wyjaśnianiu, dlaczego coś zachowuje się w dany sposób. Gemini wygrywa, gdy pytanie wymaga naraz utrzymania dużej ilości kodu lub specyfikacji. Porównanie ich na twoich własnych prawdziwych problemach przez tydzień pokonuje każdy benchmark.
Czy mogę wkleić własnościowy kod?
Whizi nie trenuje na twoich rozmowach, a polityka danych każdego dostawcy jest dostępna do przejrzenia, zanim włączysz dany model. Zwykle wiążącym ograniczeniem jest polityka twojego pracodawcy i różni się ona szeroko, więc ją sprawdź. Tam, gdzie obowiązują ograniczenia, praktycznym podejściem jest odtworzenie problemu w minimalnym przykładzie, który zawiera strukturę, ale żadnej logiki biznesowej, co i tak często daje lepszą odpowiedź.
Jak sprawić, żeby przestał przepisywać wszystko?
Poinstruuj go wprost: zmień jak najmniej, zachowaj istniejącą strukturę i nazewnictwo, i wypisz każdą zmienioną linię z jednozdaniowym powodem. Niesprowokowane refaktoryzacje są głównym powodem, dla którego sugestie AI stają się nie do zrecenzowania, a ograniczenie diffa robi różnicę między zmianą, którą możesz przemyśleć, a taką, którą musisz czytać od nowa.