OpenAI Rolling Cache: Implicit Multi-Turn Mekaniği
OpenAI'da multi-turn caching otomatik. Mesaj array büyüse de cache hit kalır. Bu derste OpenAI'a özel rolling cache pattern'ini öğreneceksin.
Şükrü Yusuf KAYA
11 dakikalık okuma
OrtaOpenAI Rolling Cache
OpenAI'da multi-turn caching automatic + implicit:
# Turn 1 messages = [ {"role": "system", "content": SYSTEM}, {"role": "user", "content": "Soru 1"} ] # OpenAI: messages prefix'i hashleyip cache miss → write # Turn 2 (1 dakika sonra) messages = [ {"role": "system", "content": SYSTEM}, # ← aynı {"role": "user", "content": "Soru 1"}, # ← aynı {"role": "assistant", "content": "Cevap 1"}, # ← aynı {"role": "user", "content": "Soru 2"} # ← yeni ] # OpenAI: ilk 3 mesaj prefix match → cache hit (ilk 3 mesaj %50 indirim)
OpenAI'ın Multi-Turn Davranışı#
| Mesaj | Cache Davranışı |
|---|---|
| System | İlk turn write, sonra hep hit |
| User 1 | İlk turn write |
| Assistant 1 | İlk turn write |
| User 2 | Turn 2'de write |
| Assistant 2 | Turn 2'de write |
| User N | Turn N'de write, sonra hit |
Yani rolling: her turn'de yeni 2 mesaj cache'e ekleniyor, eskiler hit.
Limit: 1024 Token Eşiği#
Multi-turn'de prefix toplam 1024+ token olmalı. Yani conversation ilk 2-3 turn'de cache henüz aktif değil olabilir.
Turn 1: System (200) + User (50) = 250 token → cache çalışmaz Turn 2: + Assistant (200) + User (50) = 750 → hâlâ cache yok Turn 3: + Assistant (300) + User (50) = 1300 → cache aktif!
İlk 2-3 turn'de cache yok, sonra her turn hit oluyor.
Workaround
Pratik: System prompt'unu uzun tutarsan (örn. 2K token KB ile birlikte) ilk turn'den itibaren cache aktif. Bu yüzden çoğu production OpenAI uygulaması system'i KB ile birleştirir.
Türk Geliştirici İçin Uyarı: Tokenizer#
OpenAI'da Türkçe %50-100 daha fazla token harcar. Yani:
- "Sen bir asistansın" (TR): ~10 token
- "You are an assistant" (EN): ~5 token
Multi-turn'de Türkçe conversation'lar daha hızlı 1024 eşiğine ulaşır → cache erken aktif olur. Türkçe için aslında iyi haber.
Pratik Telemetri#
python
from openai import OpenAI client = OpenAI()SYSTEM_LONG = "Sen müşteri destek asistanısın. " * 50 # ~500 token conversation = [{"role": "system", "content": SYSTEM_LONG}] print(f"{'Turn':<5} {'Prompt':>8} {'Cached':>8} {'Hit %':>6}")print("─" * 35) for turn in range(1, 11): conversation.append({"role": "user", "content": f"Soru {turn}: Detayını anlat..."}) resp = client.chat.completions.create( model="gpt-4o", max_tokens=100, messages=conversation, ) u = resp.usage cached = u.prompt_tokens_details.cached_tokens if u.prompt_tokens_details else 0 hit_pct = cached / u.prompt_tokens * 100 if u.prompt_tokens else 0 print(f"{turn:<5} {u.prompt_tokens:>8} {cached:>8} {hit_pct:>5.1f}%") # Conversation history'ye assistant cevabını ekle conversation.append({"role": "assistant", "content": resp.choices[0].message.content})10 turn'lük Türkçe diyalog, hit rate trend'i
Gözlem: Turn 4'te cache devreye giriyor (1024 eşiği), sonra her turn hit rate artıyor.
✓ Pekiştir#
Bir Sonraki Derste#
Lab: 50 turn'lük gerçek diyalog, cache hit rate trend.
Yorumlar & Soru-Cevap
(0)Yorum yazmak için giriş yap.
Yorumlar yükleniyor...
İlgili İçerikler
1. Temeller — Context Penceresi Ekonomisi
Bu Eğitim Hakkında ve Prompt Caching Neden Önemli?
Öğrenmeye Başla1. Temeller — Context Penceresi Ekonomisi
Token Ekonomisi 101: Input vs Output Cost Asimetrisi
Öğrenmeye Başla1. Temeller — Context Penceresi Ekonomisi