Promptowanie Chain-of-Thought
Uzyskiwanie rozumowania krok po kroku
Promptowanie Chain-of-Thought to bezpłatna lekcja AI Prompt Engineering na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Prompt Engineering, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Prompt Engineering zawiera 4 lekcji w sumie.
Rozumowanie jako budżet tokenów
Promptowanie chain-of-thought (CoT) wywołuje pośrednie kroki rozumowania przed udzieleniem końcowej odpowiedzi. Kluczowa obserwacja jest taka, że transformatory wykonują stałą ilość obliczeń na token, więc umożliwienie modelowi generowania tokenów rozumowania skutecznie zapewnia mu więcej sekwencyjnych obliczeń potrzebnych do uzyskania odpowiedzi.
Wymuszenie natychmiastowej odpowiedzi ogranicza moc obliczeniową dostępną dla trudnego problemu; CoT usuwa to ograniczenie, rozkładając obliczenia na generowane tokeny.
# Direct: model must compute everything before the first token
DIRECT = 'Q: ' + q + '\nA:'
# CoT: model can use tokens as scratch space
COT = 'Q: ' + q + '\nA: Let us reason step by step.'CoT zero-shot
Słynna fraza wyzwalająca Let us think step by step (Kojima et al., 2022) wywołuje rozumowanie bez przykładów. Działa to, ponieważ modele dostrojone instrukcyjnie przyswoiły wzorzec, zgodnie z którym taka fraza poprzedza rozwiązanie przedstawione krok po kroku.
CoT zero-shot jest tanie i zaskakująco skuteczne, ale jakość rozumowania jest w nim trudniejsza do kontrolowania niż w CoT few-shot z wyselekcjonowanymi przykładami.
def zero_shot_cot(question):
stage1 = llm('Q: ' + question + '\nA: Let us think step by step.')
# Extract the final answer in a second, constrained call
stage2 = llm(stage1 + '\nTherefore, the final answer is:')
return parse_answer(stage2)CoT few-shot
CoT few-shot (Wei et al., 2022) dostarcza przykłady demonstracyjne zawierające ślad rozumowania, a nie tylko odpowiedź. Uczy to zarówno sposobu rozumowania, jak i pożądanego formatu, zapewniając bardziej niezawodne i spójne łańcuchy niż podejście zero-shot.
Należy wybierać przykłady demonstracyjne, których styl, szczegółowość i długość rozumowania odpowiadają temu, co ma zostać skopiowane. Niespójne rozumowanie w przykładach demonstracyjnych prowadzi do niespójnych łańcuchów.
FS_COT = (
'Q: Roger has 5 balls, buys 2 cans of 3. How many balls?\n'
'A: 5 + 2*3 = 5 + 6 = 11. The answer is 11.\n\n'
'Q: ' + question + '\nA:'
)Oddzielanie rozumowania od odpowiedzi
Należy zawsze zapewnić, aby końcową odpowiedź można było wyodrębnić maszynowo: łańcuch powinien kończyć się stałym znacznikiem (na przykład The answer is X lub polem JSON). Parsowanie łańcuchów w dowolnym formacie jest kruche.
W produktach skierowanych do użytkowników można ukryć łańcuch i wyświetlać wyłącznie sparsowaną odpowiedź, zachowując rozumowanie jako wewnętrzny notatnik roboczy.
import re
def extract(chain):
m = re.search(r'[Tt]he answer is\s*(.+?)[.\n]', chain)
if not m:
raise ValueError('no answer marker found')
return m.group(1).strip()Wierność nie jest gwarantowana
Istnieje istotne zastrzeżenie: zwerbalizowany łańcuch może nie odzwierciedlać rzeczywistych obliczeń modelu. Badania pokazują, że modele mogą generować wiarygodnie brzmiące rozumowanie, które post hoc racjonalizuje odpowiedź wynikającą z ukrytych uprzedzeń (na przykład z pozycji opcji).
Nie należy traktować CoT jako wiernego wyjaśnienia ani ścieżki audytowej. Poprawia on dokładność w wielu zadaniach, ale nie zapewnia wglądu w rzeczywisty mechanizm modelu.
# Faithfulness probe: perturb an irrelevant cue (e.g., always make
# option A correct in the few-shot). If the chain still 'justifies'
# choosing A, the stated reasoning is unfaithful to the real cause.Ustawienia dekodowania dla CoT
W przypadku pojedynczego deterministycznego łańcucha niska temperatura zmniejsza wariancję. Jednak CoT bardzo dobrze współdziała z próbkowaniem: przy umiarkowanej temperaturze można wygenerować wiele różnorodnych łańcuchów i połączyć ich wyniki (co omówiono przy samospójności).
Należy unikać dekodowania zachłannego, gdy planują Państwo próbkować wiele ścieżek; dekodowanie zachłanne ogranicza różnorodność i uniemożliwia agregację.
single = llm(COT, temperature=0.0) # one stable chain
paths = [llm(COT, temperature=0.7) for _ in range(10)] # diverseStrukturyzowane i tabelaryczne rozumowanie
W przypadku złożonych problemów należy nadać łańcuchowi strukturę: zastosować numerowane kroki, tabelę stanu albo podział na planowanie i wykonanie. Struktura ogranicza pomijanie kroków i ułatwia weryfikację stanu pośredniego.
Podejścia wspomagane programem idą jeszcze dalej: generują wykonywalny kod jako tok rozumowania i przekazują obliczenia arytmetyczne interpreterowi, eliminując całą klasę błędów obliczeniowych.
PAL = (
'Solve by writing Python. Q: ' + q + '\n'
'A:\ndef solve():\n'
' # the model writes code here, then we exec() it\n'
)
# Offload arithmetic to a deterministic interpreterDługość, koszt i opóźnienie
CoT zwielokrotnia liczbę tokenów wyjściowych, zwiększając koszty i opóźnienia. W przypadku łatwych zadań ten narzut nic nie daje, natomiast przy trudnych zadaniach jest niezbędny. Praktycznym rozwiązaniem jest adaptacyjne rozumowanie: należy uruchamiać CoT tylko wtedy, gdy uzasadnia to tani estymator trudności lub bezpośrednia odpowiedź o niskiej pewności.
W przypadku modeli rozumujących z wbudowanym procesem myślenia zamiast samodzielnie wywoływać łańcuch należy sterować budżetem wysiłku przeznaczonego na rozumowanie.
def adaptive(question):
direct = llm('Q: ' + question + '\nA (answer only):', temperature=0)
if confidence(direct) > 0.85:
return direct
return zero_shot_cot(question) # escalate to reasoning only if neededCoT w modelach natywnie obsługujących rozumowanie
Współczesne modele rozumujące automatycznie wykonują wydłużone wewnętrzne rozważania. Zasypywanie ich rozwlekłymi instrukcjami Let us think step by step może być zbędne, a nawet przynosić efekt przeciwny do zamierzonego, zakłócając wyuczony proces rozumowania.
W przypadku tych modeli należy preferować zwięzłe opisy zadań i jednoznaczne wymagania dotyczące formatu odpowiedzi, a także dostrajać parametr wysiłku przeznaczonego na rozumowanie zamiast ręcznie tworzyć łańcuchy.
# Reasoning-native model: let it think, just constrain the output
resp = reasoning_model(
prompt=question,
reasoning_effort='medium',
output_format='Final answer on the last line as: ANSWER=<x>'
)Kiedy CoT przynosi odwrotny skutek
CoT może szkodzić w zadaniach, w których namysł wypiera poprawną intuicję, w prostym dopasowywaniu wzorców lub gdy werbalizacja wprowadza błędy, których model nie popełniłby przy rozumowaniu niejawnym. Zwiększa także powierzchnię ataku dla prompt injection w długich łańcuchach.
Należy porównywać CoT z bezpośrednim udzielaniem odpowiedzi dla każdego zadania; nie wolno zakładać, że prompty nakłaniające do rozumowania są zawsze korzystne.
def should_use_cot(task_acc_cot, task_acc_direct, cot_cost_mult):
gain = task_acc_cot - task_acc_direct
# Only adopt CoT if accuracy gain justifies the token multiplier
return gain > MIN_GAIN and gain / cot_cost_mult > MIN_EFFICIENCYWdrażanie CoT na produkcji
CoT w środowisku produkcyjnym: należy dobierać spójne przykłady (lub polegać na natywnym rozumowaniu modelu), wymuszać możliwy do sparsowania znacznik odpowiedzi, próbkować wiele łańcuchów dla trudnych elementów, w miarę możliwości weryfikować obliczenia arytmetyczne przez wykonanie kodu oraz uruchamiać rozumowanie tylko po oszacowaniu trudności, aby kontrolować koszty.
Należy rejestrować łańcuchy na potrzeby analizy offline, ale nigdy nie udostępniać ich jako wyjaśnień referencyjnych.
def production_solve(q):
if easy(q):
return extract(llm(DIRECT_PROMPT.format(q=q), temperature=0))
chains = [llm(FS_COT.format(q=q), temperature=0.7) for _ in range(8)]
return majority_vote([extract(c) for c in chains])Szybkie sprawdzenie
Proszę przeanalizować, dlaczego CoT pomaga i w jakich sytuacjach nie działa.
Podsumowanie
Najważniejsze wnioski:
- CoT wymienia dodatkowe tokeny na dodatkowe szeregowe obliczenia; pomaga w zadaniach wieloetapowych, ale nie w trywialnych.
- CoT zero-shot wykorzystuje frazę wyzwalającą, a CoT few-shot dostarcza spójnych przykładów rozumowania.
- Należy zawsze kończyć odpowiedź możliwym do wyodrębnienia maszynowo znacznikiem odpowiedzi; łańcuchy nie są wiernymi wyjaśnieniami.
- Dla trudnych elementów należy próbkować wiele łańcuchów, przekazywać obliczenia arytmetyczne do kodu i uruchamiać CoT tylko po ocenie trudności.
- W przypadku modeli z natywnym rozumowaniem należy preferować zwięzłe prompty oraz budżet wysiłku na rozumowanie zamiast rozwlekłych instrukcji dotyczących łańcucha.
Często zadawane pytania
Czy lekcja „Promptowanie Chain-of-Thought” jest bezpłatna?
Tak — pełny tekst „Promptowanie Chain-of-Thought” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Prompt Engineering, przejdź na CoddyKit PRO. Kurs AI Prompt Engineering zawiera 4 lekcji w sumie.
Co nauczysz się w „Promptowanie Chain-of-Thought”?
Uzyskiwanie rozumowania krok po kroku Ćwiczysz AI Prompt Engineering z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Prompt Engineering?
Nie wymagamy żadnego doświadczenia. AI Prompt Engineering w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Promptowanie Chain-of-Thought”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Prompt Engineering?
Tak. Każda lekcja AI Prompt Engineering zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Promptowanie Chain-of-Thought
- Próbkowanie self-consistency
- Eksploracja Tree-of-Thought
- Kiedy prompty rozumowania pomagają