Cache Poisoning: Yanlış Bilgi Cache'lendi, Nasıl Düzeltirsin?
Cache'e yanlış doc'lar yazıldı, eski bilgi var. Cache invalidation stratejileri. Anthropic / OpenAI / Gemini için ne mümkün?
Şükrü Yusuf KAYA
12 min read
IntermediateCache Poisoning ve Invalidation
Bir senaryo: "Kargo süresi 1-2 gün" diye doc'unu cache'e yazdın. Sonra şirket politika değişti, "2-5 gün" oldu. Cache'teki eski bilgiyle yanlış cevaplar veriyor.
Bu cache poisoning. Nasıl temizlersin?
Problem: Cache Provider'ları Manuel Silme API'si Sunmuyor#
Anthropic: cache_delete API yok.
OpenAI: cache_delete API yok.
Gemini: API var.
cache.delete()İlk ikisi için manuel silme yok. Sadece TTL bekleyebilir veya prefix değiştirebilir.
Çözüm 1: Versiyon Markeri#
En basit yöntem: prompt'un başına bir versiyon stringi koy.
python
CACHE_VERSION = "v2026-03-15-001" # ← KB değişince bunu artır system_blocks = [ { "type": "text", "text": f"[Knowledge base version: {CACHE_VERSION}]\n\n{KB}", "cache_control": {"type": "ephemeral"}, }] # Eski cache (version v2026-03-14) artık kullanılmaz# Yeni version ile yeni prefix → yeni cacheVersiyon marker ile manuel invalidation
CI/CD Best Practice
KB güncellendiğinde CI/CD pipeline'ında bu CACHE_VERSION'ı otomatik artır. Bir env var olabilir, git commit hash olabilir, KB checksum olabilir.
Çözüm 2: TTL Beklemek#
5dk TTL: en fazla 5 dakika eski bilgi.
1h TTL: en fazla 1 saat.
Eğer "anlık invalidation" gerekmiyorsa, TTL doğal mekanizma. Ama mission-critical değişimlerde (örn. fiyat değişti) yeterli değil.
Çözüm 3: Gemini Manual Delete#
Gemini'de cache delete var:
old_cache = genai.caching.CachedContent.get(name="cachedContents/abc123") old_cache.delete() # Yeni cache yarat new_cache = genai.caching.CachedContent.create( contents=[{"role": "user", "parts": [{"text": UPDATED_DOC}]}], ttl="3600s", )
Gemini'nin bu avantajı kritik bir use case'te (real-time data) onu seçim sebebi.
Cache Poisoning Pratik Senaryolar#
Olay: Bir doc'a yanlış bilgi yazıldı, cache'lendi.
Çözüm:
- Doc'u DB'de düzelt
- CACHE_VERSION'ı artır
- Sonraki sorgular yeni version ile cache miss → yeniden write
Etki: ~1-5 dakika içinde tüm sistemde fix.
Cache Versioning Best Practice#
python
import hashlib def get_cache_version(kb_content: str) -> str: """KB content'in checksum'undan otomatik version üret.""" sha = hashlib.sha256(kb_content.encode()).hexdigest()[:12] return f"kb-{sha}" # KB değişince checksum değişir, version otomatik artarKB_VERSION = get_cache_version(LOAD_KB()) system_blocks = [ { "type": "text", "text": f"[KB: {KB_VERSION}]\n\n{LOAD_KB()}", "cache_control": {"type": "ephemeral", "ttl": "1h"}, }]Auto-versioning ile cache invalidation
Editor Pattern
Bu pattern Cursor, Continue gibi code editor'larda kullanılıyor — file checksum değişince cache yeniden inşa.
✓ Pekiştir#
Bir Sonraki Derste#
Modül 7 bitirme sınavı. RAG + Caching hybrid tüm dersleri.
Yorumlar & Soru-Cevap
(0)Yorum yazmak için giriş yap.
Yorumlar yükleniyor...
Related Content
1. Temeller — Context Penceresi Ekonomisi
Bu Eğitim Hakkında ve Prompt Caching Neden Önemli?
Start Learning1. Temeller — Context Penceresi Ekonomisi
Token Ekonomisi 101: Input vs Output Cost Asimetrisi
Start Learning1. Temeller — Context Penceresi Ekonomisi