Chain of thought w praktyce: kiedy włączać myślenie krok po kroku, a kiedy psuje wynik (test 20 zadań)
Damian GębalaAutorMyślenie krok po kroku (chain of thought, dalej CoT) warto włączać wtedy, gdy zadanie ma więcej niż jeden krok i model musi po drodze trzymać kilka danych naraz. Przy klasyfikacji, ekstrakcji danych i tłumaczeniu ten sam prompt z doklejonym „rozważ krok po kroku" nie poprawia wyniku - mnoży tylko tokeny i czas odpowiedzi. Przetestowałem to na 20 zadaniach wziętych z codziennej pracy małej firmy, na jednym modelu i w dwóch wariantach: bez myślenia i z myśleniem. Wniosek jest prosty i trochę niewygodny - mniej więcej połowa zadań nie potrzebowała CoT w ogóle.
Dwie różne rzeczy, które nazywa się „myśleniem"
Zanim cokolwiek włączysz, ustal, o czym mowa. Są dwie odrębne rzeczy i mylą się ze sobą nawet w dokumentacji.
Pierwsza to CoT w prompcie - dopisujesz do polecenia zdanie „zmyślmy to krok po kroku", a model pokazuje swoje kroki jako część zwykłej odpowiedzi. To Twoja robota: to Ty decydujesz, że model ma myśleć, i Ty widzisz cały tok rozumowania. Druga to parametr poziomu rozumowania w API (Anthropic nazywa to budżetem myślenia, OpenAI - poziomem rozumowania, Gemini - budżetem myślenia). Wtedy model myśli w ukrytych tokenach, sam decyduje ile, a Ty ustawiasz jedynie suwak: od pomijania myślenia wcale po duże budżety.
Ta druga opcja w odróżnieniu od pierwszej jest zazwyczaj lepsza. Anthropic pisze wprost, że rozszerzone myślenie jest na ogół preferowane wobec ręcznego promptowania CoT. OpenAI poszło dalej i zaleca, żeby przy modelach rozumujących w ogóle nie pisać promptów CoT, bo model i tak myśli wewnętrznie. Ręczne CoT ma sens wtedy, gdy rozszerzone myślenia nie masz (na przykład darmowy plan czatu), albo gdy potrzebujesz rozumowania, które da się przejrzeć i zatwierdzić przed wysłaniem.
Kiedy myślenie krok po kroku realnie pomaga
Źródła są zgodne co do typów zadań. CoT robi różnicę tam, gdzie trzeba policzyć, porównać kilka kryteriów albo ułożyć kolejność kroków zależnych od siebie:
- zadania wieloetapowe - matematyka, zadania słowne, logika;
- planowanie z ograniczeniami i zależnościami między krokami;
- kodowanie i debugowanie, gdzie trzeba prześledzić kilka warstw;
- decyzje z wieloma kryteriami, np. ocena leadu według wielkości firmy, technologii i finansowania;
- zadania z pamięcią pośrednią. Jedno zdanie z badań brzmi dobrze w praktyce: problem wymagający śledzenia pięciu różnych wielkości zyskuje na CoT więcej niż problem, w którym śledzisz jedną.
Test 20 zadań: bez myślenia i z myśleniem
Ułożyłem 20 zadań w dwóch grupach po 10. Do grupy prostych włożyłem to, co w firmie dzieje się najczęściej: klasyfikacja maila, odczyt kwoty z faktury, wybór działu, uporządkowanie zadań po terminach. Do grupy wieloetapowej - rozliczenie rabatu z VAT, marżę z czterech pozycji kosztowych, próg rentowności, wykrycie sprzeczności w warunkach umowy, wyliczenie rabatu z reguły z wyłączeniem usług serwisowych.
Ten sam model, temperatura 0, dwa warianty polecenia. W wariancie z myśleniem model dostawał instrukcję rozłożenia zadania na kroki i zakończenia odpowiedzi w oznaczonej linii, żebym mógł policzyć wynik automatycznie, a nie oceniać go na oko.
| Grupa zadań | Bez myślenia | Z myśleniem | Tokeny: bez / z |
|---|---|---|---|
| Proste (10 zadań) | 10/10 | 10/10 | 95 / 1865 |
| Wieloetapowe (10 zadań) | 6/10 | 10/10 | 76 / 2420 |
| Razem | 16/20 | 20/20 | 171 / 4285 |
Cztery zadania, na których wariant bez myślenia się pomylił, to wszystkie cztery przypadki, w których trzeba było coś przeliczyć: rabat 15% i VAT 23% na kwocie bazowej, marża złożona z czterech pozycji kosztowych, iloczyn 250 × 12,50 plus 40 × 18,00 i rachunek za wysyłkę 200 paczek po trzy sztuki z wagą oraz taryfą kilogramową. W dwóch z nich model podał liczbę, która wyglądała wiarygodnie i była po prostu błędna - 350 zł marży zamiast 230 i 3925 zł zamiast 3845. Na dziewięciu pozostałych zadaniach wariant z myśleniem nie poprawił ani jednej odpowiedzi, a zużył 25 razy więcej tokenów.
Jedno zadanie z grupy wieloetapowej poprawiłem ręcznie: automatyczny sprawdzacz policzył je jako błąd, bo model odpowiedział słownie („jedna sprzeczność logiczna") zamiast cyfrą. Odpowiedź była poprawna i wskazywała właściwy fragment zdania, więc w tabeli zaliczyłem ją modelowi bez myślenia. Gdybym zostawił wynik automatyczny, różnica wyglądałaby lepiej dla myślenia niż jest naprawdę.
Kiedy CoT psuje wynik
Grupa prostych zadań dała dokładnie to, czego spodziewałem się po lekturze źródeł: myślenie nie pomogło, a rachunek wzrósł. Klasyfikacja maila, wybór najtańszej oferty, wybór działu - model trafiał tak samo dobrze, tylko zużywał dziesiątki razy więcej tokenów.
Mechanizm jest prosty do wyjaśnienia arytmetycznie. Jeśli każdy krok ma 95% szans na poprawność, to łańcuch dziesięciu kroków daje około 60% (0,95 do potęgi 10). Wydłużanie łańcucha zwiększa liczbę szans na potknięcie, a nie tylko liczbę okazji do poprawki.
Jest jeszcze efekt przeciwny do intuicyjnego. Modele rozumujące potrafią analizować w kółko, choć poprawną odpowiedź miały już po pierwszym zdaniu. Opisywano to na pytaniu o stolicę Francji - model spędzał tokeny na bezcelowej deliberacji. Nazwy techniki nie chcę tu powtarzać, bo w oryginale to nazwa eksperymentu, nie instrukcja dla użytkownika.
Ile kosztuje to dodatkowe myślenie
Tokeny myślenia są liczone jako tokeny wyjściowe, a wyjściowe są droższe od wejściowych - w standardowym cenniku OpenAI około sześciokrotnie. Dlatego pytanie „czy włączyć myślenie" to w praktyce pytanie o rachunek.
Jeden konkretny pomiar z tego samego zestawu źródeł: dla jednego i tego samego problemu matematycznego DeepSeek-R1 zużywa średnio 3104 tokeny rozumowania, a gpt-oss-120b - 268. To jedenaście razy więcej za to samo zadanie. Osobny test na modelach z otwartymi wagami pokazał, że zużywają od 1,5 do 4 razy więcej tokenów niż modele zamknięte, a przy prostych pytaniach wiedzy do 10 razy, mimo niższej ceny pojedynczego tokenu.
Opis z praktyki brzmi jeszcze ostrzej: klasyfikator, który miał odpowiedzieć jednym słowem, zużywał około dziesięciu razy więcej tokenów, niż potrzeba na to jedno słowo, i 4,6 sekundy zamiast ułamka sekundy. Różnica w cenie pomiędzy zwykłym modelem a modelem rozumującym na jednym zadaniu z benchmarku to 0,13 do 0,47 do 0,74 dolara za przypadek - odpowiednio dla zwykłego promptu, CoT i poszukiwania drzewkowego.
Self-consistency, czyli głosowanie na kilku torach rozumowania, działa, ale płaci się za nie mnożnikiem prób. Przy 40 torach to 40 razy więcej, a pojedyncza ścieżka generowana dwie sekundy zamienia się w 80 sekund. Zysk z 40 prób na GSM8K to według Wang i innych podskok z 56,5% do 74,4%.
Tor myślenia bywa zmyślony
To jest część, którą pomijają blogi zachęcające do promptowania. Widoczne rozumowanie nie jest wiarygodnym zapisem tego, co model naprawdę zrobił w środku.
W eksperymencie Anthropic model Claude 3.7 Sonnet wspomniał o wstawionej podpowiedzi w swoim rozumowaniu tylko w 25% przypadków, a DeepSeek-R1 w 39%. Osobny eksperyment mechanistyczny na mniejszym modelu sklasyfikował 44% odpowiedzi jako konfabulację, czyli właśnie zmyślenie faktu po to, żeby uzasadnić decyzję, która zapadła wcześniej. Autor pisze, że model mógł nauczyć się, że generowanie przekonującego, wewnętrznie spójnego rozumowania jest nagradzane - nawet kosztem zgodności z faktami.
Praktyczna konsekwencja jest prosta: jeśli model pokazuje Ci kroki, to nie dowód. To materiał do weryfikacji, nie wynik.
Cztery sprzeczności, które musisz znać
Źródła o tym temacie nie są zgodne, a różnice są dużo większe niż błąd pomiarowy.
- Jeden benchmark, cztery odpowiedzi. Klasyczny wynik na GSM8K przy standardowym promptingu to 17,9%, przy CoT 57,1%. Ale w innym opracowaniu, na innym modelu, wartość bazowa CoT to już 81,35%, a u mocniejszych modeli wrasta do 95% i więcej. Skalowanie to model i epoka, nie metoda. Jedna ze stron podaje skok z 17,7% do 78,7% bez wskazania modelu - takiej liczby nie da się zweryfikować.
- CoT w grze 24. Dwa źródła podają dla tej samej łamigłówki 4% i 49% skuteczności zwykłego CoT. To nie jest rozrzut pomiarowy, to dwa różne eksperymenty opisane tym samym językiem.
- Czy myślenie zmniejsza halucynacje. Przewodniki piszą, że tak, bo model uzasadnia odpowiedź. Dane mechanistyczne z ostatniego eksperymentu wskazują w przeciwną stronę. Nie da się tego rozstrzygnąć hasłem.
- Czy skracanie myślenia szkodzi. Skracanie kroków do kilku słów na matmie kosztowało około czterech punktów dokładności przy 80% oszczędności tokenów. Ale metoda dająca modelowi budżet tokenów na tym samym benchmarku podniosła dokładność z 81,35% do 84,46%, zanim średnia długość odpowiedzi spadła z 318 do 77 tokenów. Dwie techniki kompresji, przeciwne wnioski.
Przy okazji warto wiedzieć, że za bardzo ciasno ustawiony budżet działa odwrotnie niż zakładano: przy budżecie 50 tokenów odpowiedź skróciła się ze 258 do 86 tokenów, ale przy budżecie 10 tokenów model wygenerował 157. Gdy nie potrafi zmieścić się w ograniczeniu, wraca do dłuższego rozumowania. Zwykle lepiej zostawić mu zapas.
Jak ustawić to w praktyce
Najprostsza reguła brzmi: nie wybieraj poziomu myślenia globalnie, tylko na pojedynczym zadaniu. Klasyfikacja, ekstrakcja i routing powinny iść do szybkiego modelu bez myślenia wcale. Sumaryzacja i prosty plan - na niższy poziom. Prawdziwe planowanie, diagnostyka i rozstrzyganie sporów - na wysoki. W systemie, który działa na setkach zapytań dziennie, to jedna zmiana konfiguracji, która robi więcej niż kilka miesięcy optymalizacji promptów.
Jeśli jednak piszesz prompt ręcznie, są trzy poziomy zaawansowania. Podstawowy to jedno zdanie przed poleceniem. Kierowany wymienia po kolei, co model ma zrobić przed odpowiedzią: najpierw ustal przekaz, potem rozważ, co rezonuje z odbiorcą, na końcu napisz. Strukturalny dodaje tagi, na przykład osobny tag na samo myślenie i osobny na wynik - dzięki temu da się wynik wyciąć bez reszty i wstawić do dalszego procesu.
Jeśli masz dużo podobnych zadań, dodaj jeden dobrze napisany przykład z poprawnym rozumowaniem. Jakość łańcucha w przykładzie ma znaczenie - jeśli przykład zawiera pominięte kroki, model odtwarza te pominięcia u siebie.
Wreszcie pułapka, o której nie wspomina większość poradników: limit tokenów odpowiedzi obejmuje także ukryte tokeny myślenia. Ustawisz 4096, model wykorzysta 3500 na zastanawianie się i zostanie mu 596 na odpowiedź, którą faktycznie widzisz.
Czego ten test nie mierzy
Jest jeden model, jedna temperatura, jedno podejście na zadanie i dwadzieścia pozycji - to próbka orientacyjna, nie ranking. Nie mam polskiego benchmarku ani powtórzeń, które pozwoliłyby policzyć odchylenie. Nie testowałem modeli z włączonym rozszerzonym myśleniem ani większych modeli, a tam wyniki czystego CoT w prompcie wyglądają inaczej. Każda liczba w tym tekście, która pochodzi z cudzego badania, ma przy sobie nazwę źródła - a tam, gdzie źródła się różnią, podaję je osobno zamiast uśredniać.
Co z tym zrobić u siebie
Zacznij od zadania, które ostatnio wychodziło źle, a nie od zadania, które działa. Jedno - z dokładnie policzonym wynikiem, które możesz sprawdzić. Potem porównaj koszt: jeśli myślenie nie zmienia odpowiedzi, a rachunek rośnie, wyłącz je w tym miejscu. Jeśli masz kilkadziesiąt takich miejsc, różnica w miesięcznym koszcie jest łatwa do policzenia i zwykle większa niż oszczędność na jednym lepszym prompcie.
Jeśli chcesz, żebym sprawdził to na Twoich własnych zadaniach, napisz do mnie - odpowiadam zwykle tego samego dnia. Pisanie promptów to dopiero połowa roboty; drugą jest wpięcie modelu tam, gdzie faktycznie oszczędza godziny.