Skip to content

Bağlam (Context) Sağlama: Tekniği, Tuzakları, Limitleri

Modelin bilmesi gereken arka plan bilgisini nasıl ve nereye yerleştirirsin? Bağlam pencereleri, lost-in-the-middle problemi ve XML/Markdown ayraç teknikleri.

Şükrü Yusuf KAYA
13 min read
Beginner

Bağlam Sağlama: LLM'in Görüş Alanı

Modelin eğitim verisinde olmayan bilgileri prompt içinde sunmana bağlam (context) denir.
3 ana yöntem:
Bu derste Inline Context'e odaklanıyoruz.

Bağlamı Nereye Yerleştirmeli?#

3 seçenek var:
Sabit, oturum boyunca değişmez bilgi için. Şirket politikası, davranış kuralı, sabit referans dökümanı.
system: "Sen X şirketinin destek asistanısın. İade politikası: 14 gün, kullanılmamış olmalı. İletişim: support@x.com, 0850-XXX-XXXX..."
Anthropic önerisi: Uzun bağlamı prompt'un başında koy, kullanıcı sorusunu sona koy. Bu, modelin "yeni" bilgiyi (soruyu) en iyi hatırladığı yerdir.

Lost-in-the-Middle Problemi#

Uzun bağlamda LLM'ler başı ve sonu çok iyi hatırlar, ortayı kaçırabilir.

Çözümler:#

  1. Önemli bilgiyi başa veya sona koy
  2. Açık olarak işaretle: "ÖNEMLİ: ..."
  3. Her belgeye sıra numarası ver (XML ile)
  4. Talimatı sonda tekrarla: Uzun bir belge sonrası "Hatırlatma: cevabı JSON formatında ver"

Context Window Limitleri (2026)#

Bağlam Penceresi (Token)#

ModelWindow
Claude Opus 4.61M
Claude Sonnet 4.61M
Claude Haiku 4.5200K
GPT-5256K
GPT-4o128K
Gemini 2.5 Pro2M
Llama 4 Behemoth128K
Mistral Large 3128K

Pratik Anlam#

  • 1 sayfa kitap ≈ 250-500 token
  • 1 saatlik podcast transcript ≈ 30K-50K token
  • "Savaş ve Barış" tamamı ≈ 600K token
Yani: Claude Sonnet 4.6 tüm Tolstoy romanını tek prompt'ta okuyabilir!
Ama unutma:
  • Daha uzun = daha pahalı (token başı ücret)
  • Daha uzun = daha yavaş (latans artar)
  • Çoğu görev 5K-30K token ile zaten halloluyor

Bağlam Sıkıştırma#

python
# Bağlam ÇOK uzun — sıkıştır
# Strateji: özet → soru-cevap
 
import os
from anthropic import Anthropic
from dotenv import load_dotenv
load_dotenv()
 
client = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
 
# Aşama 1: Belgeyi özetle (başka bir model çağrısı)
def summarize(long_doc: str) -> str:
r = client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=500,
system="Verilen belgeyi en önemli 5 bullet'ta özetle.",
messages=[{"role": "user", "content": long_doc}],
)
return r.content[0].text
 
# Aşama 2: Özet üzerinden soru cevap
def ask(summary: str, question: str) -> str:
r = client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=500,
system="Verilen özet bağlamını kullanarak soruyu cevapla.",
messages=[
{"role": "user", "content": f"<context>\n{summary}\n</context>\n\nSoru: {question}"}
],
)
return r.content[0].text
 
long_doc = """[Buraya 50 sayfalık belge gelir]
Bir e-ticaret şirketinin 2025 yıllık raporu...
[uzun metin]"""
 
ozet = summarize(long_doc)
print("Özet:", ozet)
 
cevap = ask(ozet, "Şirketin en kârlı kategorisi neydi?")
print("Cevap:", cevap)
 
Iki aşamalı sıkıştırma: maliyet ve hız azalır.
Sıkıştırmanın bedeli: Detay kayıp. Eğer cevap belgenin "ortasında" küçük bir not ise özet onu kaçırabilir. Hassas vakalarda RAG (Modül 7) daha iyi.

Frequently Asked Questions

Evet ama dikkatli. Maliyet katlanır, latans artar, lost-in-the-middle riski büyür. Çoğu zaman RAG + 30K token bağlam, 1M token bağlamdan daha iyi sonuç verir.

Yorumlar & Soru-Cevap

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

Related Content