Skuteczne prompty dla extended thinking
Proszę zachowywać prostotę promptów, unikać instrukcji krok po kroku i ufać modelowi w kwestii rozumowania.
Skuteczne prompty dla extended thinking to bezpłatna lekcja AI Prompt Engineering 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 Prompt Engineering, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Prompt Engineering zawiera 4 lekcji w sumie.
Promptowanie modeli rozumujących wygląda inaczej
Intuicje dotyczące promptowania, które wypracowano dla standardowych modeli — łańcuch rozumowania, instrukcje krok po kroku i przykłady few-shot — często szkodzą w przypadku modeli rozumujących.
Modele rozumujące już wykonują zaawansowane rozumowanie wewnętrzne. Określanie im dokładnie, jak mają myśleć, może zakłócać ten proces. Najlepsze prompty dla modeli rozumujących są prostsze i bardziej bezpośrednie niż prompty dla standardowych modeli.
Nie należy instruować modelu krok po kroku
W przypadku standardowych modeli można napisać: „Myśl krok po kroku. Najpierw rozważ X, następnie rozważ Y, a na koniec wyciągnij wniosek Z.” Taka struktura pomaga, ponieważ standardowe modele nie wykonują tego automatycznie.
W przypadku modeli rozumujących taka struktura może ograniczyć ich wewnętrzne rozumowanie do nieoptymalnej ścieżki. Zamiast tego należy jasno przedstawić problem i pozwolić modelowi samodzielnie określić sposób jego rozumowania.
# Standard model: needs scaffolding
STANDARD_PROMPT = (
'Let us think step by step.\n'
'First, identify the variables.\n'
'Then, set up the equation.\n'
'Then, solve for x.\n'
'Finally, verify your answer.\n\n'
'Problem: If 3x + 7 = 22, what is x?'
)
# Reasoning model: just state the problem clearly
REASONING_PROMPT = (
'Solve: If 3x + 7 = 22, what is x?'
# The model handles the step-by-step internally
)
# Both produce correct answers; the reasoning model prompt is simpler
print('Reasoning model prefers the cleaner prompt')Należy jasno i kompletnie przedstawić problem
Choć należy upraszczać sposób instruowania modeli rozumujących, trzeba dokładnie określić, czego się od nich wymaga. Należy z wyprzedzeniem podać cały kontekst, ograniczenia i wymagania — model wykorzysta je podczas wewnętrznego rozumowania.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
# Poor: vague problem statement
BAD_PROMPT = 'Write me a good sorting algorithm.'
# Good: clear, complete problem specification
GOOD_PROMPT = (
'Write a Python sorting algorithm with these requirements:\n'
'- Must sort a list of integers in ascending order\n'
'- Must work correctly on empty lists, single-element lists, and lists with duplicates\n'
'- Target time complexity: O(n log n) average case\n'
'- Must not use Python built-in sort() or sorted()\n'
'- Include a brief docstring and 3 test cases\n\n'
'Return only the code, no explanation.'
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=8000,
thinking={'type': 'enabled', 'budget_tokens': 5000},
messages=[{'role': 'user', 'content': GOOD_PROMPT}]
)
print(next(b.text for b in response.content if b.type == 'text')[:300])Odpowiednie ustawianie budget_tokens
budget_tokens określa maksymalną liczbę tokenów przeznaczonych na rozumowanie. Prawidłowe ustawienie tej wartości jest głównym parametrem dostrajania modeli rozumujących:
- 1000–2000: proste problemy i szybkie obliczenia
- 5000–10 000: programowanie i analiza o średnim poziomie złożoności
- 16 000+: najtrudniejsze problemy matematyczne, złożone projektowanie systemów i problemy na poziomie badań naukowych
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
def reasoning_call(prompt, budget_tokens=5000):
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=budget_tokens + 2048, # max_tokens must exceed budget_tokens
thinking={
'type': 'enabled',
'budget_tokens': budget_tokens
},
messages=[{'role': 'user', 'content': prompt}]
)
answer = next((b.text for b in response.content if b.type == 'text'), '')
thinking_blocks = [b for b in response.content if b.type == 'thinking']
print(f'Thinking blocks: {len(thinking_blocks)}')
return answer
# Simple problem: small budget
reasoning_call('What is 17 * 23?', budget_tokens=1000)
# Complex problem: larger budget
reasoning_call(
'Design a distributed rate limiter that handles 100k requests/second.',
budget_tokens=10000
)Minimalne prompty systemowe
W przypadku modeli rozumujących należy ograniczyć prompty systemowe do minimum. Wewnętrzne rozumowanie modelu jest jego główną zdolnością — nie należy nadmiernie ograniczać go długimi instrukcjami dotyczącymi zachowania.
Dobre prompty systemowe dla modeli rozumujących określają rolę, format wyniku i ograniczenia. To wszystko.
# Over-engineered system prompt (hurts reasoning models)
BAD_SYSTEM = (
'You are an expert Python developer. '
'Always think step by step. '
'First understand the problem. '
'Then plan your approach. '
'Then implement step by step. '
'Check each step before proceeding. '
'Finally review your solution. '
'Format all code with comments. '
'Add error handling to every function. '
'...'
)
# Minimal system prompt (helps reasoning models)
GOOD_SYSTEM = (
'You are an expert Python developer. '
'Return only code unless explanation is explicitly requested. '
'Use type hints and docstrings.'
)
# The model's internal reasoning handles the restInstrukcje dotyczące formatu wyniku nadal mają znaczenie
Choć nie należy instruować modelu, jak ma rozumować, trzeba jasno określić oczekiwany format wyniku. Różni się to od instrukcji dotyczących rozumowania — informuje model, co ma zwrócić, a nie jak ma myśleć.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
# Clear output format instructions are still important
prompt = (
'Analyze the time and space complexity of this Python function:\n\n'
'def bubble_sort(arr):\n'
' n = len(arr)\n'
' for i in range(n):\n'
' for j in range(0, n-i-1):\n'
' if arr[j] > arr[j+1]:\n'
' arr[j], arr[j+1] = arr[j+1], arr[j]\n\n'
'Return your answer as JSON with keys: '
'time_complexity, space_complexity, explanation (2 sentences max).'
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=5000,
thinking={'type': 'enabled', 'budget_tokens': 3000},
messages=[{'role': 'user', 'content': prompt}]
)
print(next(b.text for b in response.content if b.type == 'text'))Mniej przykładów few-shot
Standardowe modele odnoszą duże korzyści z 3–5 przykładów few-shot. Modele rozumujące korzystają z nich w mniejszym stopniu, a zbyt duża liczba przykładów może wręcz zaszkodzić, wypełniając okno kontekstowe treścią, która zakłóca wewnętrzne rozumowanie.
W przypadku modeli rozumujących często optymalna jest liczba 0–1 przykładu. Przykładów należy używać tylko wtedy, gdy format wyniku jest nietypowy lub niejednoznaczny.
# Standard model: 3 few-shot examples improve performance significantly
STANDARD_FEW_SHOT = (
'Q: 2 + 2 = ?\nA: 4\n\n'
'Q: 5 * 6 = ?\nA: 30\n\n'
'Q: 100 / 4 = ?\nA: 25\n\n'
'Q: 17 + 38 = ?\nA:'
)
# Reasoning model: 0 examples is fine; 1 is enough if format is unclear
REASONING_DIRECT = 'What is 17 + 38?'
# The reasoning model already knows math — examples are overhead, not signal
# Only use 1 example when the output format needs clarification:
REASONING_FORMAT_EXAMPLE = (
'Answer math questions returning only the number.\n'
'Example: Q: 2 + 2 A: 4\n\n'
'Q: 17 + 38'
)Obsługa niepewności w wynikach modeli rozumujących
Modele rozumujące częściej wyrażają autentyczną niepewność niż standardowe modele (ponieważ rzeczywiście przeanalizowały problem). Aplikacje należy projektować tak, aby poprawnie obsługiwały odpowiedzi zawierające zastrzeżenia.
import anthropic
import re
client = anthropic.Anthropic(api_key='sk-ant-...')
def reasoning_with_confidence(question):
prompt = (
f'{question}\n\n'
f'At the end of your answer, include a confidence statement: '
f'Confidence: [HIGH/MEDIUM/LOW] — [one sentence why]'
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=8000,
thinking={'type': 'enabled', 'budget_tokens': 5000},
messages=[{'role': 'user', 'content': prompt}]
)
text = next(b.text for b in response.content if b.type == 'text')
# Parse confidence
match = re.search(r'Confidence: (HIGH|MEDIUM|LOW)', text)
confidence = match.group(1) if match else 'UNKNOWN'
print(f'Confidence: {confidence}')
return text, confidence
answer, conf = reasoning_with_confidence(
'What will AI capabilities look like in 2030?'
)Buforowanie wyników modeli rozumujących
Wywołania modeli rozumujących są kosztowne i wolne. Wyniki zapytań, które się powtarzają lub są przewidywalne, należy buforować. Ponieważ tokenów przeznaczonych na rozumowanie może być bardzo dużo, buforowanie pozwala uniknąć ponownego ponoszenia kosztów i oczekiwania na wynik przy kolejnych wywołaniach.
import hashlib
import json
import os
cache_dir = '/tmp/reasoning_cache'
os.makedirs(cache_dir, exist_ok=True)
def cached_reasoning_call(prompt, budget_tokens=5000):
# Create cache key from prompt
key = hashlib.sha256(f'{prompt}:{budget_tokens}'.encode()).hexdigest()
cache_file = os.path.join(cache_dir, f'{key}.json')
if os.path.exists(cache_file):
with open(cache_file) as f:
cached = json.load(f)
print('Cache hit!')
return cached['answer']
# Cache miss: call the model
answer = reasoning_call(prompt, budget_tokens)
with open(cache_file, 'w') as f:
json.dump({'prompt': prompt, 'answer': answer}, f)
return answerWeryfikowanie wyników modeli rozumujących
Modele rozumujące popełniają mniej błędów, ale nie są nieomylne — szczególnie w przypadku faktów specyficznych dla danej dziedziny lub najnowszych tematów. Wyniki, na podstawie których będą podejmowane działania w sytuacjach o dużej wadze, należy zawsze weryfikować.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
def reasoning_with_verification(question):
# Step 1: Get reasoning model answer
r1 = client.messages.create(
model='claude-opus-4-5',
max_tokens=10000,
thinking={'type': 'enabled', 'budget_tokens': 8000},
messages=[{'role': 'user', 'content': question}]
)
answer = next(b.text for b in r1.content if b.type == 'text')
# Step 2: Independent verification call
verify_prompt = (
f'Question: {question}\n\n'
f'Proposed answer: {answer}\n\n'
f'Is this answer correct? Respond with CORRECT, INCORRECT, or UNCERTAIN, '
f'followed by a brief explanation.'
)
r2 = client.messages.create(
model='claude-opus-4-5',
max_tokens=256,
messages=[{'role': 'user', 'content': verify_prompt}]
)
verification = r2.content[0].text
print(f'Verification: {verification[:100]}')
return answer, verificationPraktyczna lista kontrolna promptów dla modeli rozumujących
Podczas tworzenia promptów dla modeli rozumujących należy stosować następującą listę kontrolną:
- Należy jasno i kompletnie przedstawić problem
- NIE należy dołączać instrukcji dotyczących rozumowania krok po kroku
- Należy zachować krótki prompt systemowy (wyłącznie rola + format + ograniczenia)
- Należy użyć maksymalnie 0–1 przykładu few-shot
- Należy wyraźnie określić format wyniku
- Wartość
budget_tokensnależy ustawić proporcjonalnie do złożoności problemu - Należy uwzględnić opóźnienie odpowiedzi wynoszące od 10 do 60 sekund
Sprawdzenie wiedzy: promptowanie modeli rozumujących
Dlaczego w porównaniu ze standardowymi modelami zaleca się używanie prostszych promptów w przypadku modeli rozumujących?
Podsumowanie: skuteczne prompty dla rozszerzonego rozumowania
Modele rozumujące wymagają prostszych i bardziej bezpośrednich promptów niż standardowe modele. Nie należy instruować ich, jak mają rozumować — trzeba jasno i kompletnie przedstawić problem, a następnie pozwolić, aby wewnętrzna analiza modelu zajęła się strategią. Prompty systemowe powinny być minimalne: wyłącznie rola, format wyniku i ograniczenia. Należy używać 0–1 przykładu few-shot. Wartość budget_tokens należy dopasować do złożoności problemu (1K dla prostych problemów, ponad 10K dla trudnych). Trzeba uwzględnić znaczne opóźnienia i w miarę możliwości buforować wyniki. Należy wyraźnie określić format wyniku — to jedyny obszar, w którym szczegółowe instrukcje nadal pomagają.
Ucz się AI Prompt Engineering dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 53
- Lekcje
- 199
Często zadawane pytania
Czy lekcja „Skuteczne prompty dla extended thinking” jest bezpłatna?
Tak — pełny tekst „Skuteczne prompty dla extended thinking” 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 „Skuteczne prompty dla extended thinking”?
Proszę zachowywać prostotę promptów, unikać instrukcji krok po kroku i ufać modelowi w kwestii rozumowania. Ć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 2 z 4.
Ile czasu zajmuje lekcja „Skuteczne prompty dla extended thinking”?
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
- Czym różnią się modele rozumujące
- Skuteczne prompty dla extended thinking
- Kiedy używać modeli rozumujących, a kiedy standardowych
- Kompromisy między kosztem a opóźnieniem