İçeriğe geç
edumintsBlog
LLM3 dk okuma

Sistem İstemi Tasarımınız Prompt Önbelleğinizi Sessizce Öldürüyor

Kaynak: dev.to

Paylaş
İçindekiler 4 başlık

LLM tabanlı sohbet veya rol yapma (roleplay) uygulamalarında sistem mesajları genellikle modele iletilen en büyük veri bloğudur. Karakter kartları, kurgu rehberleri (lorebook) ve uzun vadeli hafıza özetleri on binlerce token tutar ve her konuşma turunda tekrarlanır. DeepSeek gibi modellerin sunduğu bağlam önbellekleme (context caching) mekanizması bu süreci ucuzlatmak için geliştirilmiştir. Varsayılan olarak etkindir ve önbelleklenmiş girdi maliyeti önbelleğe alınmamış girdiye kıyasla 50 kat daha düşüktür ($0.15 yerine $0.003 / milyon token). Ancak pratikte birçok uygulama bu avantajı neredeyse hiç kullanamaz. Bunun nedeni önbelleğin bozuk olması değil, sistem isteminin en başına eklenen tek bir satır koddur.

Yaklaşık 30 token'lık dinamik bir başlığı sistem mesajının başından sonuna taşımak, kararlı durum çıkarım (inference) maliyetini %96 oranında düşürmektedir.

Test Düzeneği#

20.000 token'lık sabit bir rol yapma istemi (karakter kartı, 20 lorebook girdisi, uzun vadeli hafıza ve ilişki durumu) hazırlanmış ve bayt düzeyinde birebir aynı tutulmuştur. Tek değişken, yaklaşık 30 token'lık dinamik başlığın (yerel zaman damgası, tur sayısı, oturum UUID'si, duygu durumu indeksi) konumudur:

  • Varyant A (Naive): Değişken başlık sistem mesajının en başında yer alır (tipik ilk uygulamalar).
  • Varyant B (Minimal Düzeltme): Değişken başlık sistem mesajının en sonuna taşınmıştır (tek satırlık değişiklik).
  • Varyant C (Optimize): Değişken başlık en güncel kullanıcı turunun sonuna eklenir; sistem mesajı asla değişmez (yalnızca sona eklemeli / append-only mimari).

Her varyant deepseek-flash üzerinde (düşünme modu kapalı) 8 turluk gerçek bir konuşma ile test edilmiş ve API'nin resmi prompt_cache_hit_tokens ile prompt_cache_miss_tokens sayaçlarıyla ölçülmüştür.

Sonuçlar#

  • Varyant A: %0.0 önbellek isabet oranı, 8 turda $0.021006 toplam maliyet (tur başına $0.002626).
  • Varyant B: %85.8 önbellek isabet oranı, $0.003465 toplam maliyet (Varyant A'ya göre %83.5 tasarruf).
  • Varyant C: %86.8 önbellek isabet oranı, $0.003326 toplam maliyet (Varyant A'ya göre %84.2 tasarruf).

İlk turdaki soğuk başlangıç (cold start) hariç tutulup kararlı duruma bakıldığında; Varyant B'nin tur başı maliyeti $0.000127 (%95.2 düşüş), Varyant C'nin ise $0.000107 (%95.9 düşüş) seviyesine gerilemiştir. Varyant A ise baştaki 30 token her turda farklı olduğu için tek bir önbellek isabeti bile alamamış ve 17.000 token'lık öneki her turda tam fiyattan işlemiştir.

İncelenmeye Değer İki Kritik Detay#

  • 1. Tek satırlık düzeltme neredeyse tüm kazanımı sağlar: B ve C arasındaki fark yalnızca 0.7 yüzdelik puandır. Önbellek avantajının büyük kısmını yakalamak için tüm mimariyi baştan tasarlamak gerekmez; tek bir metin bloğunu sona taşımak yeterlidir.
  • 2. Konuşma uzadıkça C varyantı öne geçer: 64 token'lık önbellek ayrıntı düzeyi (granularity) nedeniyle B varyantı 16.896 token isabetinde sabitlenirken (tur 2, 4, 6 ve 8'de 16.896 token), C varyantı konuşma geçmişini de önbelleğe dahil ederek her turda büyümeye devam eder (tur 8'de 17.536 token).

Geliştiriciler İçin Pratik Çıkarımlar#

  • Önek Eşleme Mantığı: LLM önbellek sistemleri girdiyi soldan sağa eşleştirir. İstemin başına eklenen tek bir dinamik değişken, sonrasındaki devasa sabit bloğun önbellekten düşmesine yol açar.
  • Sistem İstemini Dondurma: Tarih ve sayaç gibi dinamik bağlamları sistem istemi yerine son kullanıcı iletisine ekleyerek önbellek verimini en üst düzeye çıkarabilirsiniz.

Bu konuyu derinlemesine öğrenmek isterseniz: Ölçeklendirme ve Optimizasyon modülüne göz atın.

Kaynak ve atıf

Bu yazı, dev.to üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:

  • dev.to/chenyu-ai/your-system-prompt-is-silently-killing-your-prompt-cache-28oa