Chain-of-thought i rozumowanie krok po kroku
Uczestnicy użyją promptów chain-of-thought, aby prowadzić model przez złożone problemy krok po kroku i znacząco poprawić dokładność w zadaniach matematycznych, logicznych oraz wymagających rozumowania wieloetapowego.
Chain-of-thought i rozumowanie krok po kroku to bezpłatna lekcja AI Engineering Academy na CoddyKit. To lekcja 2 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 Engineering Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Engineering Academy zawiera 4 lekcji w sumie.
Czym jest promptowanie chain-of-thought?
Promptowanie chain-of-thought (CoT) to technika polegająca na poproszeniu modelu o przedstawienie toku rozumowania krok po kroku przed podaniem ostatecznej odpowiedzi. Zamiast od razu przechodzić do wniosku, model generuje pośrednie kroki rozumowania prowadzące do odpowiedzi. Ta prosta zmiana znacznie zwiększa dokładność w złożonych zadaniach obejmujących matematykę, logikę i wieloetapowe rozumowanie.
Technikę tę przedstawiono w artykule Google Brain z 2022 roku, w którym wykazano, że promptowanie CoT może umożliwić dużym modelom językowym rozwiązywanie tekstowych zadań matematycznych, z którymi zupełnie sobie nie radziły przy bezpośrednim promptowaniu. Kluczowy wniosek jest taki, że generowanie kroków pośrednich zmusza model do przeznaczenia większej mocy obliczeniowej na trudne problemy.
Magia wyrażenia „Zastanówmy się krok po kroku”
Najprostsza forma promptowania chain-of-thought polega na dodaniu do promptu wyrażenia „Zastanówmy się krok po kroku”. Ten wyzwalacz zero-shot CoT odkryli badacze, którzy zauważyli, że pojedyncze wyrażenie powodowało spontaniczne generowanie przez modele łańcuchów rozumowania, nawet bez przykładów few-shot.
import openai
client = openai.OpenAI()
# Without CoT - the model often gets multi-step math wrong
direct_prompt = 'A store has 48 apples. They sell 3/4 of them, then receive a new shipment of 20. How many apples do they have?'
# With zero-shot CoT
cot_prompt = direct_prompt + "\n\nLet's think step by step."
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': cot_prompt}]
)
print(response.choices[0].message.content)Dlaczego CoT działa: przydzielanie mocy obliczeniowej
LLM-y generują tekst po jednym tokenie, a każdy token jest tworzony przy stałej ilości obliczeń (jednym przebiegu w przód modelu). Gdy proszą Państwo o bezpośrednią odpowiedź, model musi dojść do poprawnego wyniku w jednym kroku wnioskowania, co często oznacza zbyt małą ilość obliczeń w przypadku złożonych problemów.
Chain-of-thought zapewnia modelowi budżet tokenów na pracę nad problemem. Każdy krok rozumowania jest tokenem, a generowanie tych tokenów odpowiada dodatkowym obliczeniom. Dlatego CoT działa nawet w zadaniach, w których model wyraźnie zna wszystkie poszczególne fakty — wąskim gardłem nie jest wiedza, lecz umiejętność łączenia faktów w wielu krokach rozumowania podczas jednego przebiegu.
Chain-of-thought few-shot
Aby uzyskać maksymalną niezawodność, należy połączyć przykłady few-shot z rozumowaniem chain-of-thought. Każdy przykład pokazuje pełny łańcuch rozumowania prowadzący do poprawnej odpowiedzi. Uczy to model zarówno oczekiwanego stylu rozumowania, jak i właściwego formatu ostatecznej odpowiedzi.
import openai
client = openai.OpenAI()
prompt = '''Solve these math problems step by step.
Problem: A recipe needs 2.5 cups of flour for 12 cookies. How much flour for 30 cookies?
Reasoning: First, find flour per cookie: 2.5 / 12 = 0.208 cups each.
Then multiply by 30: 0.208 * 30 = 6.25 cups.
Answer: 6.25 cups
Problem: A train travels 180 km in 2.5 hours. At the same speed, how long to travel 270 km?
Reasoning: First, find speed: 180 / 2.5 = 72 km/h.
Time = distance / speed = 270 / 72 = 3.75 hours.
Answer: 3.75 hours
Problem: A shirt costs $45 after a 25% discount. What was the original price?
'''
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': prompt}]
)
print(response.choices[0].message.content)CoT w rozumowaniu wieloetapowym
Chain-of-thought nie ogranicza się do matematyki. Znacznie poprawia skuteczność w zadaniach wymagających rozumowania wieloetapowego, w których trzeba połączyć kilka faktów, aby odpowiedzieć na pytanie. Na przykład odpowiedź na pytanie „Kto był prezydentem Stanów Zjednoczonych, gdy wynaleziono iPhone'a?” wymaga ustalenia, kiedy wynaleziono iPhone'a, a następnie sprawdzenia, kto był wówczas prezydentem — są to dwa odrębne wyszukania informacji połączone w łańcuch.
Bez CoT model musi skrócić ten łańcuch do jednego kroku i często podaje błędną odpowiedź. Dzięki CoT jawnie pobiera każdy fakt w kolejnym kroku rozumowania, znacznie zwiększając dokładność w takich zadaniach.
Strukturyzowanie wyniku za pomocą CoT
W aplikacjach produkcyjnych często chcą Państwo oddzielić rozumowanie od ostatecznej odpowiedzi, aby móc programistycznie przetwarzać odpowiedź. Typowy schemat polega na poinstruowaniu modelu, aby umieszczał rozumowanie w znacznikach, a ostateczną odpowiedź w osobnej sekcji. Ułatwia to wyodrębnienie odpowiedzi bez konieczności analizowania całego tekstu rozumowania.
import openai
import re
client = openai.OpenAI()
prompt = '''Analyze the following customer complaint and determine the priority level.
First think through the issue, then state your final classification.
Format your response exactly as:
<reasoning>
Your step-by-step analysis here.
</reasoning>
<priority>HIGH | MEDIUM | LOW</priority>
Complaint: "The checkout page crashes every time I try to buy something. I have tried three times and lost my cart each time."
'''
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': prompt}]
)
content = response.choices[0].message.content
priority = re.search(r'<priority>(.*?)</priority>', content).group(1)
print('Priority:', priority)Samozgodność: głosowanie między wieloma łańcuchami
Samozgodność to rozszerzenie CoT, które polega na wygenerowaniu wielu niezależnych łańcuchów rozumowania dla tego samego problemu przy użyciu wysokiej temperatury, a następnie przeprowadzeniu głosowania większościowego nad ostatecznymi odpowiedziami. Intuicja jest taka, że poprawne ścieżki rozumowania zwykle prowadzą do tej samej odpowiedzi, podczas gdy błędne ścieżki mają tendencję do rozbiegania się.
Znacznie poprawia to dokładność w testach matematycznego i zdroworozsądkowego rozumowania kosztem dodatkowych wywołań API. Technika ta jest najbardziej przydatna, gdy dokładność jest ważniejsza niż opóźnienie lub koszt, na przykład w zastosowaniach naukowych i finansowych, gdzie błędna odpowiedź może mieć poważne konsekwencje.
import openai
from collections import Counter
client = openai.OpenAI()
def self_consistent_answer(question, n=5):
prompt = question + '\n\nLet\'s think step by step. State your final answer as: Answer: <value>'
answers = []
for _ in range(n):
resp = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': prompt}],
temperature=0.7
)
text = resp.choices[0].message.content
# Extract final answer
if 'Answer:' in text:
ans = text.split('Answer:')[-1].strip().split('\n')[0]
answers.append(ans)
# Majority vote
return Counter(answers).most_common(1)[0]
result, count = self_consistent_answer('What is 15% of 240?')
print(f'Answer: {result} (agreed by {count}/5 chains)')Tree of Thought: badanie wielu ścieżek
Tree of Thought (ToT) rozszerza chain-of-thought o jednoczesne badanie wielu gałęzi rozumowania i ocenianie, która z nich jest najbardziej obiecująca, zanim nastąpi kontynuacja. Można to porównać do algorytmu wyszukiwania: zamiast wybierać jedną ścieżkę rozumowania, generuje się kilka częściowych myśli, ocenia je i rozwija te najbardziej obiecujące.
Jest to szczególnie przydatne w planowaniu i problemach otwartych, w których optymalna ścieżka rozumowania nie jest od razu jasna. ToT wymaga znacznie większej liczby wywołań API niż podstawowe CoT, ale może rozwiązywać problemy, z którymi liniowe CoT sobie nie radzi, takie jak wieloetapowe łamigłówki i zadania wymagające kreatywnego rozwiązywania problemów.
Kiedy nie stosować chain-of-thought
CoT zwiększa opóźnienie i koszt tokenów każdego żądania. Nie zawsze jest właściwym wyborem. Należy unikać CoT, gdy:
- zadanie jest proste, a model niezawodnie wykonuje je poprawnie bez rozumowania (np. klasyfikacja jednoetapowa)
- potrzebują Państwo bardzo małego opóźnienia i nie mogą sobie pozwolić na dodatkowe tokeny
- samo rozumowanie utrudniałoby analizowanie wyniku przez kolejny etap (choć znaczniki ustrukturyzowanego wyniku rozwiązują ten problem)
- używają Państwo bardzo małego modelu, który nie odnosi korzyści z kroków rozumowania
CoT daje największą wartość w złożonych, wieloetapowych zadaniach, w których model wyraźnie zawodzi bez tej techniki. Przed dodaniem CoT do promptu produkcyjnego należy zawsze zmierzyć jego wpływ.
CoT w programowaniu i debugowaniu
Chain-of-thought jest bardzo skuteczne w zadaniach związanych z generowaniem kodu i debugowaniem. Poproszenie modelu o wyjaśnienie planu przed napisaniem kodu — „Najpierw wyjaśnij swoje podejście, a następnie napisz kod” — prowadzi do poprawniejszych implementacji, ponieważ etap planowania wychwytuje błędy logiczne, zanim zostaną zakodowane w implementacji.
W przypadku debugowania znacznie skuteczniejsze od samego pytania „co jest nie tak z tym kodem?” jest polecenie modelowi, aby „prześledził kod krok po kroku i wskazał, w którym miejscu wynik odbiega od wartości oczekiwanej”. Śledzenie krok po kroku działa jak symulacja wykonywania kodu w ramach rozumowania modelu.
Łączenie CoT z promptami systemowymi
Można na stałe umieścić instrukcje chain-of-thought w prompcie systemowym, aby każda wiadomość użytkownika korzystała z rozumowania krok po kroku bez konieczności jawnego żądania tego przez użytkowników. Jest to standardowy schemat w aplikacjach produkcyjnych, w których oczekują Państwo niezawodnego działania CoT dla wszystkich zapytań.
import openai
client = openai.OpenAI()
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{
'role': 'system',
'content': ('You are a precise analytical assistant. '
'For any question involving calculation, logic, or multi-step reasoning, '
'always think through the problem step by step before giving your answer. '
'Show your reasoning clearly before stating the final answer.')
},
{
'role': 'user',
'content': 'If I invest $5000 at 7% annual interest compounded annually, how much will I have after 10 years?'
}
]
)
print(response.choices[0].message.content)Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat koncepcji inżynierii AI z tej lekcji.
Podsumowanie lekcji
W tej lekcji poznali Państwo następujące zagadnienia: promptowanie chain-of-thought poprawia dokładność, skłaniając model do generowania jawnych kroków rozumowania przed udzieleniem odpowiedzi, samozgodność uruchamia wiele łańcuchów i przeprowadza głosowanie większościowe, aby uzyskać bardziej niezawodne wyniki, a CoT jest najbardziej wartościowe w matematyce, rozumowaniu wieloetapowym i debugowaniu, ale zwiększa opóźnienie i koszt. W następnej części omówimy, jak pisać skuteczne prompty systemowe i definiować persony AI.
Często zadawane pytania
Czy lekcja „Chain-of-thought i rozumowanie krok po kroku” jest bezpłatna?
Tak — pełny tekst „Chain-of-thought i rozumowanie krok po kroku” 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 Engineering Academy, przejdź na CoddyKit PRO. Kurs AI Engineering Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Chain-of-thought i rozumowanie krok po kroku”?
Uczestnicy użyją promptów chain-of-thought, aby prowadzić model przez złożone problemy krok po kroku i znacząco poprawić dokładność w zadaniach matematycznych, logicznych oraz wymagających rozumowani… Ćwiczysz AI Engineering Academy 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 Engineering Academy?
Nie wymagamy żadnego doświadczenia. AI Engineering Academy 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 2 z 4.
Ile czasu zajmuje lekcja „Chain-of-thought i rozumowanie krok po kroku”?
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 Engineering Academy?
Tak. Każda lekcja AI Engineering Academy 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
- Prompting zero-shot i few-shot
- Chain-of-thought i rozumowanie krok po kroku
- Prompty systemowe i definiowanie persony
- Iteracyjne doskonalenie i debugowanie promptów