İçeriğe geç

Lab: 10K vs 50K vs 200K — Accuracy Karşılaştırma

Aynı reasoning task'ını 10K, 50K, 200K context'te çalıştır, accuracy karşılaştırması yap. Context rot'u kendi gözlerinle gör.

Şükrü Yusuf KAYA
16 dakikalık okuma
Orta

Lab #8: Context Size vs Accuracy

Bu lab gerçek bir reasoning task'ını farklı context boyutlarında çalıştırır. Lost-in-middle ve context rot'u somut sayılarla göreceksin.
Senaryo: Multi-hop sorgu — "Hangi şirket Trabzon'da kuruldu ve 2008'den önce halka açıldı?"
Her bir context boyutunda 50 farklı multi-hop sorgu test edilecek.

Adım 1 — Test Veri Hazırlığı#

python
# 100 hayali şirket — multi-hop reasoning için
COMPANIES = [
{"name": "TrabzonTech", "city": "Trabzon", "founded": 2003, "ipo": 2007},
{"name": "İstanbulSoft", "city": "İstanbul", "founded": 2010, "ipo": 2015},
{"name": "EgeBio", "city": "İzmir", "founded": 1998, "ipo": 2005},
# ... 97 daha
]
 
def make_company_text(c):
return (
f"{c['name']} şirketi {c['city']}'de {c['founded']} yılında kurulmuştur. "
f"Şirket {c['ipo']} yılında halka açılmıştır."
)
 
def make_context(size_target: int):
"""Hedef token boyutuna kadar şirket bilgilerini ekle."""
text = ""
while len(text) // 3 < size_target: # Türkçe ~3 char/token
c = random.choice(COMPANIES)
text += make_company_text(c) + " "
return text
 
# Multi-hop sorular — context'teki bilgilerle cevaplanabilir olmalı
QUESTIONS = [
"Hangi şirket Trabzon'da kuruldu ve 2008'den önce halka açıldı?",
"İzmir'de 2000 öncesi kurulan kaç şirket var?",
"İstanbul'da kurulan ve 2015'ten sonra halka açılan şirketlerin sayısı?",
# ... 47 daha (multi-hop reasoning gerektiren)
]
Test data: multi-hop reasoning soruları

Adım 2 — Context Boyutlarında Test#

python
import anthropic
 
client = anthropic.Anthropic()
 
CONTEXT_SIZES = [10_000, 50_000, 200_000]
results = {size: {"correct": 0, "total": 0, "latency": 0.0} for size in CONTEXT_SIZES}
 
for size in CONTEXT_SIZES:
context = make_context(size)
print(f"\n═══ Context size: {size:,} token ═══")
 
for q in QUESTIONS[:10]: # 10 sorgu/size, hızlı için
start = time.perf_counter()
resp = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=200,
system=[{
"type": "text",
"text": "Aşağıdaki şirket bilgilerini dikkatle oku ve soruları doğru cevapla.\n\n" + context,
"cache_control": {"type": "ephemeral"},
}],
messages=[{"role": "user", "content": q + "\n\nCevabı liste halinde ver."}],
)
latency = time.perf_counter() - start
 
# Cevap doğrulamayı manuel kontrol etmen lazım
# Burada placeholder: gerçek labında ground truth ile karşılaştır
is_correct = manual_check(resp.content[0].text, q)
results[size]["total"] += 1
if is_correct:
results[size]["correct"] += 1
results[size]["latency"] += latency
 
# Özet
print(f"\n{'Size':<10} {'Accuracy':>10} {'Avg latency':>12}")
print("─" * 35)
for size in CONTEXT_SIZES:
r = results[size]
acc = r["correct"] / r["total"] * 100
avg_lat = r["latency"] / r["total"]
print(f"{size:>8,}K {acc:>9.1f}% {avg_lat:>10.2f}s")
10K, 50K, 200K context için accuracy ölç

Beklenen Sonuçlar (Claude Sonnet 4.6)#

ContextAccuracyLatencyCost (cache açık)
10K%92-951.4s$0.005
50K%85-921.8s$0.015
100K%80-882.4s$0.030
200K%75-853.0s$0.060
Trend: Context büyüdükçe accuracy düşer, latency artar, cost artar. Optimum 50K-100K çoğu use case için.
Less is More
Pratik karar: 200K mümkün diye 200K kullanma. Use case'in 50K'da %90 accuracy veriyorsa, 50K ile devam et. Daha az = daha hızlı + ucuz + doğru.

Cache'in Rolü#

Bu testte 50 sorguyu hep aynı context'le sorduğumuz için cache hit rate %98 (ilk sorgu write, gerisi read). Cache cost'u kontrol ediyor ama accuracy'yi değiştirmiyor. Yani cache ile/sız aynı %75 200K'da.
Anahtar bilgi: Cache cost optimization aracı, quality aracı değil.

✓ Pekiştir#

Bir Sonraki Derste#

Long-context'in caching ile etkileşimi — özellikle "200K cache + 1K dynamic" patterns.

Yorumlar & Soru-Cevap

(0)
Yorum yazmak için giriş yap.
Yorumlar yükleniyor...

İlgili İçerikler