# Few-Shot Learning: Teaching by Example

> Source: https://sukruyusufkaya.com/en/learn/chatgpt-ustaligi/few-shot-learning
> Updated: 2026-05-11T13:48:58.790Z
> Category: ChatGPT Ustalığı
> Module: 2. Prompt Engineering Foundations
**TLDR:** 2-5 well-chosen examples beat pages of explanation. Learn how to pick and place few-shot examples.

> **Bu derste**
>
> Few-shot örnekleri nasıl seçilir, nereye konur, kaç tane idealdir, antipattern'ler nelerdir — hepsini canlı örneklerle öğreneceğiz.

# Few-Shot Nedir?

Eğer "şu kuralla yap" demek yerine **birkaç doğru örnek** veriyorsan, buna *few-shot prompting* denir. Modelin in-context learning yeteneği sayesinde, bir görüşten daha güçlüdür.

İyi yapılmış 3 örnek genelde şunlardan daha etkilidir:

- "Şöyle yap" stili 200 kelimelik açıklama
- 12 maddelik kural listesi
- Sadece "şuna benzet" diye sözlü açıklama

![Few-shot örneklerinin model davranışını şekillendirme süreci](/images/learn/claude-ustaligi/diagram-fewshot.svg)

_Few-shot örnekleri Claude'un cevap formatını ve karar tarzını programlar._

## İki Yaygın Format

Few-shot örnekleri Claude'a iki şekilde verilir: **inline metin** veya **multi-turn message**.

### Inline metin (tek mesajda)

```text
<role>Sen bir destek bileti sınıflandırıcısın.</role>

<format>
JSON: {"category": "...", "confidence": 0.0-1.0}
</format>

<examples>
Input: "Hesabıma giremiyorum"
Output: {"category": "auth", "confidence": 0.95}

Input: "Faturam yanlış geldi"
Output: {"category": "billing", "confidence": 0.92}

Input: "API rate limit aşıldı diyor"
Output: {"category": "tech", "confidence": 0.88}
</examples>

<input>{$user_message}</input>
```

Tek mesaj içinde örnek + görev. Pratik ve yeniden kullanılabilir.

### Multi-turn (API'de assistant prefix)

API üzerinden örnekleri `messages` dizisinde rol oynatarak verebilirsin:

```json
[
  {"role": "user", "content": "Hesabıma giremiyorum"},
  {"role": "assistant", "content": "{\"category\": \"auth\", \"confidence\": 0.95}"},
  {"role": "user", "content": "Faturam yanlış geldi"},
  {"role": "assistant", "content": "{\"category\": \"billing\", \"confidence\": 0.92}"},
  {"role": "user", "content": "<gerçek soru>"}
]
```

Multi-turn yaklaşımı daha "doğal" gelir ve özellikle uzun cevap formatlarında daha tutarlı çalışır.

## İyi Bir Few-Shot Setinin 5 Kuralı

### 1) Sayı: 2-5 idealdir

Tek örnek ezberletir. 2-3 örnek paterni yakalatır. 5'ten fazlası context büyütür ve kazanımı azalır. İstisnalar: çok karmaşık formatlar (10-20 örnek), çok dar sınıflandırma (sınıf başına 1).

### 2) Çeşitlilik: dağılımı temsil etsin

Sadece 'kolay' örnekleri verme; gerçek dağılımdaki edge case'leri de katmalısın. Aksi halde model kolay senaryoda parlar, gerçek dünyada başarısız olur.

### 3) Format birliği: aynı şablonda yaz

Bütün örnekler tıpkı aynı yapıda olsun: aynı alanlar, aynı sıra, aynı stil. Format dağılırsa model paterni öğrenemez.

### 4) Doğruluk: yanlış örnek koyma

Bir örnekte yanlış cevap varsa Claude bunu paterni sanır. Örnekleri eklemeden önce bizzat doğrula.

### 5) Yerleşim: örnekleri ASIL göreve yakın koy

Sistem prompt'undan sonra ya da kullanıcı mesajının hemen başında. Çok uzun konuşmalarda en iyisi her döngüde örnekleri yeniden yerleştirmek (otomasyonda templating ile).

**Önce:**
```text
# Anti-pattern: tutarsız format
Input: "şifre sıfırla"
Output: kategori = auth

Input: "ödeme yansımadı"
Output: BILLING (yüksek güven)

Input: "API hatası"
Output: {"k":"tech"}
```

**Sonra:**
```text
# İyi: aynı şablon, tutarlı format
Input: "şifre sıfırla"
Output: {"category":"auth","confidence":0.94}

Input: "ödeme yansımadı"
Output: {"category":"billing","confidence":0.91}

Input: "API hatası"
Output: {"category":"tech","confidence":0.86}
```

## Sentetik Few-Shot Üretimi

İyi örneklerin yoksa, Claude'a **kendi few-shot örneklerini ürettir**. Süreç şöyle:

1. Görevi açıkla.
2. "Bu görev için 8 yüksek kaliteli örnek üret" de.
3. Örnekleri **bizzat** denetle, en iyi 4-5'ini seç.
4. Bu seçilmişleri asıl prompt'a few-shot olarak ekle.

Bu döngü hem hızlı hem ölçeklenebilir.

```python
# Sentetik örnek üretimi simülasyonu (yerel)
import json

def render_fewshot(examples):
    return "\n\n".join(
        f'Input: "{e["input"]}"\nOutput: {json.dumps(e["output"], ensure_ascii=False)}'
        for e in examples
    )

ornekler = [
    {"input": "şifremi unuttum", "output": {"category": "auth", "confidence": 0.96}},
    {"input": "kredi kartım reddedildi", "output": {"category": "billing", "confidence": 0.93}},
    {"input": "iki faktörlü doğrulama gelmiyor", "output": {"category": "auth", "confidence": 0.9}},
]

print(render_fewshot(ornekler))
```

**Boşluk doldurma egzersizi (text):**
```text
Few-shot örneklerinin sayısı genelde _____ ile _____ arasında olmalıdır. Tüm örnekler aynı _____ taşımalıdır. Yanlış bir örnek koyarsan model onu _____ sanır.
```

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