# Chain-of-Thought: Step-by-Step Reasoning

> Source: https://sukruyusufkaya.com/en/learn/chatgpt-ustaligi/chain-of-thought
> Updated: 2026-05-11T13:48:59.066Z
> Category: ChatGPT Ustalığı
> Module: 2. Prompt Engineering Foundations
**TLDR:** On complex problems, asking Claude to 'think first, answer second' dramatically improves accuracy. Cover the four flavors of CoT and practical use.

> **Bir kelime farkı, %30 isabet farkı**
>
> 'Doğrudan cevapla' yerine 'önce adım adım düşün, sonra cevap ver' demek; matematik, mantık ve kod görevlerinde isabeti %20-40 artırır.

# Chain-of-Thought (CoT) Nedir?

Chain-of-Thought, modelin **cevabı vermeden önce ara akıl yürütme adımlarını yazmasını** istemektir. İnsanlar zor problemde "kâğıda yazıp düşünür" — CoT da aynı işi LLM'e yaptırır.

İki sebebi var:

1. **Token bandwidth:** Model her adımı yazarken bir sonraki adıma bağlam üretir.
2. **Hata fırsatı:** Yanlış bir ara adım, sonradan görülüp düzeltilebilir.

![CoT zinciri: problem → adım 1 → adım 2 → ... → cevap](/images/learn/claude-ustaligi/diagram-cot.svg)

_CoT — problem ile cevap arasında düşünce zinciri katmanı._

## CoT'un 4 Çeşidi

### 1) Zero-shot CoT — Tek satırla aktif et

Sadece şu cümleyi ekle:

> "Önce adım adım düşün, sonra cevabı ver."

Gerçekten çalışır. En düşük efor, en geniş kapsam. Birçok matematik / mantık görevinde isabeti %20-30 artırır.

### 2) Few-shot CoT — Örneklerde de düşünce zinciri göster

Few-shot örneklerini sadece "input → output" değil, "input → düşünce zinciri → output" formatında ver:

```text
Input: "Bir kalem 5 lira, 12 kalem ne tutar?"
Reasoning: 5 * 12 = 60.
Output: 60 lira

Input: ...
```

Bu format Claude'a "ben de cevap vermeden zincir kurayım" sinyalini verir.

### 3) Self-Consistency — Birden çok zincir, oy çokluğu

Aynı soruyu Claude'a (veya temperature > 0 ile birden fazla kere) sor, farklı zincirler çıkar. Sonra oy çokluğuyla cevabı seç. Matematik / mantık benchmark'larında kalite sıçramasıyla bilinir.

Maliyetlidir; sadece kritik kararlarda uygulanır.

### 4) Extended Thinking — Modelin gizli scratch pad'i

Claude'un belirli sürümlerinde "extended thinking" modu, modelin cevap vermeden önce iç bir düşünce alanı kullanmasını sağlar. Bu alan kullanıcıya **gösterilmez**, ama isabeti artırır.

Açtığında:
- Latency artar (cevap geç gelir).
- Output token'lar 2-3 katına çıkar.
- Karmaşık matematik, çok dosyalı kod refactor, agent planlamada belirgin kazanım sağlar.

Modül 7'de derinlemesine işleyeceğiz.

## CoT'u Yapılandırma

Yalnızca "adım adım düşün" demek bazen yetmez. Daha güçlüsü, **iç düşünceyi belirli bir XML bloğuna yerleştirmektir**:

```text
<task>
Karmaşık matematik problemini çöz.
</task>

<format>
1. Önce <thinking>...</thinking> bloğunda
   problemi adım adım çöz.
2. Sonra <answer>...</answer> bloğunda
   sadece nihai sayısal cevabı ver.
</format>

<problem>
Bir trende 120 yolcu var. İlk istasyonda
%25'i iner, sonra 20 kişi biner. İkinci
istasyonda kalan yolcuların 1/3'ü iner.
Şu an trende kaç yolcu var?
</problem>
```

```python
# Aynı problemi kontrol için kodla doğrulayalım
yolcu = 120
yolcu = yolcu - int(yolcu * 0.25)   # ilk istasyon iniş
yolcu = yolcu + 20                  # ilk istasyon biniş
yolcu = yolcu - yolcu // 3          # ikinci istasyon iniş
print("Şu anki yolcu:", yolcu)
```

> **CoT'un sınırı**
>
> CoT bilgi eksikliğini dolduramaz. Modelin bilmediği bir gerçek varsa, ne kadar adım adım düşünürse düşünsün uydurur. CoT akıl yürütmeyi geliştirir, **bilgiyi getirmez**. Bilgi için RAG (Modül 11) gerekir.

### CoT iyi çalışır
- Mantık bulmacaları
- Çok adımlı matematik
- Kod debug
- Karar ağaçları
- Test case türetimi

---

### CoT yetersiz kalır
- Bilgi eksikliği (cutoff, niş alan)
- Format / sözdizimi sıkı
- Hız / latency kritik UX
- Birden fazla 'doğru' cevap olan yaratıcı görevler

## Bir CoT Mock — modelin cevap kalitesini ölç
Bu Python parçası, model cevaplarının doğru zinciri kuran/kurmayanlara ayrılmasını taklit eder.

```python
cevaplar = [
    {"q":"5 * 12 = ?", "a":"60", "zincir":"5*12 = 60", "dogru": True},
    {"q":"5 * 12 = ?", "a":"50", "zincir":"", "dogru": False},
    {"q":"7! = ?", "a":"5040", "zincir":"7*6*5*4*3*2*1=5040", "dogru": True},
]

zincirli = [c for c in cevaplar if c["zincir"]]
zincirsiz_dogru = sum(1 for c in cevaplar if not c["zincir"] and c["dogru"])
zincirli_dogru = sum(1 for c in cevaplar if c["zincir"] and c["dogru"])

print("Zincirli isabet:", zincirli_dogru, "/", len(zincirli))
print("Zincirsiz isabet:", zincirsiz_dogru, "/", len(cevaplar)-len(zincirli))
```

**Boşluk doldurma egzersizi (text):**
```text
CoT'un en basit aktivasyonu prompt'a _____ adım adım _____ cümlesini eklemektir. Model cevap vermeden önce gizli bir scratch pad kullanma moduna _____ thinking denir.
```

> ✋ Kontrol noktası: `q-204-mc1`