OpenAI İstem Öneki Önbellekleme
Tekrarlanan uzun sistem istemi öneklerini yüzde 50 indirimle önbelleğe alan OpenAI otomatik istem önbelleklemesinden yararlanın ve önbellek isabet oranlarını en üst düzeye çıkaracak şekilde istemlerinizi yapılandırın.
OpenAI İstem Öneki Önbellekleme, CoddyKit'te ücretsiz bir AI Engineering Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Engineering Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Engineering Academy kursu toplamda 4 dersten oluşur.
İstem Ön Eki Önbellekleme Nedir?
İstem ön eki önbellekleme, OpenAI API'sine yerleşik sunucu tarafı bir optimizasyondur ve yakın zamanda yapılan önceki bir istekte görülen istem ön eki belirteçleri için otomatik olarak indirim uygular. Saklanan bir yanıt döndüren uygulama düzeyindeki önbelleklemenin aksine, istem ön eki önbelleklemesi modeli yine çağırır; ancak önbelleğe alınan ön ek bölümü için %50 daha düşük girdi belirteci fiyatı uygulanır. Böylece yeni üretimden ödün vermeden maliyet azaltılır.
Ön Ek Önbelleklemesi Arka Planda Nasıl Çalışır?
Modern LLM'ler istemleri GPU belleğindeki KV (anahtar-değer) önbellekleri olarak temsil eder. Bir istemin işlenmesi, her belirteç için dikkat anahtarlarının ve değerlerinin hesaplanmasını gerektirir. Ardışık iki isteğin ilk N belirteci aynıysa OpenAI, ilk istekteki KV önbelleğini yeniden kullanarak bu belirteçler için maliyetli hesaplamayı atlayabilir. API bunu otomatik ve şeffaf biçimde yapar; özellik geçerli olduğunda yalnızca daha düşük önbelleğe alınmış belirteç ücretini ödersiniz.
# No code changes needed to enable prefix caching!
# It is automatic on supported models.
# The API response shows you how many tokens were cached:
# response.usage.prompt_tokens_details.cached_tokens
# Example response usage:
# ChatCompletionUsage(
# prompt_tokens=2048,
# completion_tokens=256,
# total_tokens=2304,
# prompt_tokens_details=PromptTokensDetails(
# cached_tokens=1984, # these tokens were served from KV cache
# audio_tokens=0,
# )
# )Yanıtta Önbellek İsabetini Kontrol Etme
Her API çağrısından sonra, kaç girdi belirtecinin KV önbelleğinden sunulduğunu görmek için response.usage.prompt_tokens_details.cached_tokens değerini inceleyin. cached_tokens > 0 ise bu belirteçler için %50 indirimli ücreti ödemişsinizdir. Bu değeri günlük kaydına yazmak, gerçek önbellek verimliliğinizi izlemenizi ve ön ek önbelleklemesinden zaman içinde elde edilen maliyet tasarrufunu hesaplamanızı sağlar.
from openai import OpenAI
client = OpenAI()
SYSTEM_PROMPT = 'You are an expert AI engineer assistant. ' * 100 # long system prompt
def call_with_cache_check(user_message: str):
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{'role': 'system', 'content': SYSTEM_PROMPT},
{'role': 'user', 'content': user_message},
],
)
usage = response.usage
cached = usage.prompt_tokens_details.cached_tokens if usage.prompt_tokens_details else 0
print(f'Total prompt tokens: {usage.prompt_tokens}')
print(f'Cached tokens: {cached} ({100*cached//usage.prompt_tokens}%)')
return response.choices[0].message.contentÖn Ek Birebir Aynı Olmalıdır
Ön ek önbelleklemesi yalnızca ilk N belirteç, yakın zamanda yapılan önceki bir istekle bayt düzeyinde tamamen aynıysa uygulanır. Sistem istemindeki tek bir karakter değişikliği bile önbelleği geçersiz kılar. OpenAI önbelleğe almayı 128 belirteçlik parçalar hâlinde yapar; önbellek yalnızca birebir eşleşen tam parçalar için uygulanır. Bu nedenle, isteğe göre değişen istem bölümünüz, önbelleğe alınan belirteç sayısını en üst düzeye çıkarmak için uzun ve sabit ön ekten sonra gelmelidir.
# Optimal structure for prefix caching:
# [LONG STABLE SYSTEM PROMPT] [CACHED DOCUMENTS] [USER QUERY]
# ↑ ↑ ↑
# always same always same varies per request
# → cached at 50% → cached at 50% → not cached, full price
# BAD structure (defeats prefix caching):
# [USER QUERY] [CACHED DOCUMENTS] [LONG STABLE SYSTEM PROMPT]
# ↑ ↑
# changes every request never cached because
# so prefix never matches it comes after the queryEn Yüksek Önbellek Verimliliği İçin İstemleri Yapılandırma
Önbellek isabet oranlarını en üst düzeye çıkarmak için istemlerinizi sabit bölümler önce gelecek şekilde yapılandırın. Bir RAG sisteminde sıra şu şekilde olmalıdır: (1) yönergeleri ve kişiliği içeren sistem istemi, (2) yalnızca sorgu önemli ölçüde değiştiğinde değişen alınmış belgeler, (3) konuşma geçmişi, (4) en sonda kullanıcı sorgusu. Tek başına sistem istemi (çoğunlukla 500-2000 belirteç) genellikle önbelleğe alınır ve girdi belirteci maliyetlerinin %25-50'sinden tasarruf sağlar.
def build_rag_prompt_for_caching(
system_prompt: str,
retrieved_docs: list[str],
conversation_history: list[dict],
user_query: str,
) -> list[dict]:
# Order: stable → semi-stable → variable
context_block = '\n\n'.join(
f'[Document {i+1}]\n{doc}' for i, doc in enumerate(retrieved_docs)
)
return [
# 1. Stable system prompt (always cached after first request)
{'role': 'system', 'content': system_prompt},
# 2. Context injection as a user message (cached when same docs retrieved)
{'role': 'user', 'content': f'Context documents:\n{context_block}'},
{'role': 'assistant', 'content': 'I have read the documents.'},
# 3. Conversation history (semi-stable)
*conversation_history,
# 4. Current user query (always different → never cached prefix)
{'role': 'user', 'content': user_query},
]Önbellek Süresi ve Önbellekten Çıkarma
OpenAI'nin KV önbelleği GPU üzerinde bellekte tutulur ve bir çıkarma politikasına sahiptir. Yaklaşık 5-10 dakika içinde yeniden kullanılmayan ön ekler, diğer istekler GPU belleğini kullandıkça önbellekten çıkarılır. Bu nedenle ön ek önbelleklemesinin faydaları, aynı ön eki paylaşan sık isteklerin bulunduğu yüksek trafikli uygulamalarda en büyüktür. Düşük trafikli uygulamalarda, aralıklı istekler arasında ön ek önbellekten çıkarıldığı için az sayıda önbellek isabeti görülebilir.
Desteklenen Modeller ve Fiyatlandırma
2025 itibarıyla istem ön eki önbelleklemesi GPT-4o, GPT-4o-mini, o1 ve o3-mini modellerinde kullanılabilir. Önbelleğe alınmış belirteç fiyatı, çoğu model için standart girdi belirteci fiyatının %50'sidir. Önbelleğe alınabilen ön ekin minimum uzunluğu 1024 belirteçtir; daha kısa ön eklerde indirim uygulanmaz. Özellik geliştikçe fiyatlandırma değişebileceğinden güncel ücretler için her zaman OpenAI fiyatlandırma sayfasını kontrol edin.
# Rough pricing reference (verify at platform.openai.com/pricing)
PRICING = {
'gpt-4o': {
'input_per_1M': 2.50,
'cached_input_per_1M': 1.25, # 50% off
'output_per_1M': 10.00,
},
'gpt-4o-mini': {
'input_per_1M': 0.15,
'cached_input_per_1M': 0.075, # 50% off
'output_per_1M': 0.60,
},
}
def estimate_cost_with_caching(prompt_tokens, cached_tokens, output_tokens, model):
p = PRICING[model]
uncached = (prompt_tokens - cached_tokens) * p['input_per_1M'] / 1_000_000
cached_cost = cached_tokens * p['cached_input_per_1M'] / 1_000_000
output_cost = output_tokens * p['output_per_1M'] / 1_000_000
return uncached + cached_cost + output_costAnthropic İstem Önbelleklemesi
Anthropic, Claude modelleri için istem önbellekleme adı verilen benzer bir özellik sunar; ancak istemdeki önbellek kesme noktalarının cache_control alanıyla işaretlenmesi gerekir. OpenAI'nin otomatik önbelleklemesinden farklı olarak, istemin hangi bölümlerinin önbelleğe alınacağını açıkça işaretlersiniz (istek başına en fazla 4 önbellek kesme noktası). Önbelleğe alınan belirteçlerin maliyeti standart girdi fiyatının %10'udur ve bu belirteçler 5 dakika boyunca saklanır.
import anthropic
client = anthropic.Anthropic()
LONG_DOCUMENT = 'This is a very long reference document...' * 500 # 2000+ tokens
response = client.messages.create(
model='claude-sonnet-4-5',
max_tokens=1024,
system=[
{
'type': 'text',
'text': 'You are a helpful assistant.',
},
{
'type': 'text',
'text': LONG_DOCUMENT,
'cache_control': {'type': 'ephemeral'}, # mark for caching
}
],
messages=[{'role': 'user', 'content': 'Summarize the document.'}],
)
print(response.usage.cache_read_input_tokens) # tokens served from cache
print(response.usage.cache_creation_input_tokens) # tokens written to cacheÖn Ek Önbelleklemesini Uygulama Önbelleklemesiyle Birleştirme
Ön ek önbelleklemesi ile uygulama düzeyindeki önbellekleme birbirini tamamlar. Ön ek önbelleklemesi her API çağrısının maliyetini azaltır, ancak LLM'yi yine çağırır. Uygulama düzeyindeki kesin ve anlamsal önbellekler, tekrarlanan sorgular için API çağrılarını tamamen ortadan kaldırır. Her istekte çağrı başına girdi maliyetini azaltmak için ön ek önbelleklemesini kullanın; sık tekrarlanan sorgularda çağrıları tamamen ortadan kaldırmak için bunun üzerine uygulama düzeyinde önbellekleme ekleyin. Birlikte kullanıldıklarında yapay zekâ altyapısı maliyetlerini %60-80 oranında azaltabilirler.
# Three-layer cost optimization stack
#
# Layer 1: Exact cache (Redis, hash-based)
# → Eliminates 100% of API cost for identical requests
# → Miss rate: ~60-80% (most queries are unique)
#
# Layer 2: Semantic cache (vector similarity)
# → Eliminates 100% of API cost for semantically similar requests
# → Miss rate: ~40-60% of remaining queries
#
# Layer 3: OpenAI prefix caching (automatic)
# → Reduces input token cost by 50% for long stable prefixes
# → Applies to ALL remaining API calls that escape layers 1 and 2
#
# Combined effect: 60-80% cost reduction in FAQ/support applicationsÖnbellek Verimliliğinizi Ölçme
önbellek verimlilik oranını bileşik bir ölçüm olarak izleyin: tam fiyat üzerinden hesaplanan toplam belirteçlerin gerçekte ücretlendirilen toplam belirteçlere oranı. Bu, tüm önbellekleme katmanlarını hesaba katar. Her API yanıtındaki cached_tokens değerini günlük kaydına yazın ve bunları haftalık olarak toplayın. Tüm API çağrılarındaki belirteçlerin %50'sini önbelleğe alan bir sistem, ön ek önbelleklemesi için uygulama kodunda değişiklik yapmaya gerek kalmadan girdi belirteci maliyetlerini fiilen yarıya indirir.
from dataclasses import dataclass, field
from typing import ClassVar
@dataclass
class CachingMetrics:
total_prompt_tokens: int = 0
total_cached_tokens: int = 0
app_cache_hits: int = 0
app_cache_misses: int = 0
@property
def prefix_cache_ratio(self) -> float:
if self.total_prompt_tokens == 0:
return 0
return self.total_cached_tokens / self.total_prompt_tokens
@property
def app_cache_hit_rate(self) -> float:
total = self.app_cache_hits + self.app_cache_misses
return self.app_cache_hits / total if total > 0 else 0
def report(self):
print(f'App cache hit rate: {self.app_cache_hit_rate:.1%}')
print(f'Prefix cache ratio: {self.prefix_cache_ratio:.1%}')
savings_multiplier = (1 - self.app_cache_hit_rate) * (1 - 0.5 * self.prefix_cache_ratio)
print(f'Effective cost vs no-cache: {savings_multiplier:.1%}')Ön Ek Önbelleklemesinin Fayda Sağlamadığı Durumlar
Ön ek önbelleklemesi şu durumlarda fayda sağlamaz: (1) minimum önbelleğe alınabilir uzunluk olan 1024 belirtecin altındaki kısa istemler, (2) sistem isteminin kullanıcıya veya isteğe göre değiştiği son derece değişken ön ekler, (3) istekler arasında KV önbelleğinin çıkarıldığı düşük trafikli uygulamalar veya (4) zaten minimum belirteç ücretini ödediğiniz durumlar. Bu durumlarda optimizasyon çalışmalarınızı uygulama düzeyindeki anlamsal önbelleklemeye yönlendirin.
Hızlı Kontrol
Bu derste OpenAI istem ön eki önbelleklemesi konusundaki anlayışınızı sınayın.
Ders Özeti
Bu derste şunları öğrendiniz: OpenAI istem ön eki önbelleklemesi, istem ön eki yakın zamanda yapılan önceki bir istekle eşleştiğinde önbelleğe alınan girdi belirteçlerine otomatik olarak %50 indirim uygular; önbelleğe alınan belirteç sayısını en üst düzeye çıkarmak için ileti yapınızda sabit içerik önce gelmelidir (sistem istemi, belgeler ve ardından kullanıcı sorgusu); Anthropic benzer bir Claude özelliği için açık cache_control işaretleyicileri gerektirir. Maliyeti en fazla azaltmak için bunu uygulama düzeyindeki önbellekleme ile birleştirin. Sırada, optimizasyon araç setimizi tamamlamak için toplu işlemlere, model yönlendirmeye ve maliyet panolarına bakacağız.
Sıkça Sorulan Sorular
“OpenAI İstem Öneki Önbellekleme” dersi ücretsiz mi?
Evet — “OpenAI İstem Öneki Önbellekleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Engineering Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Engineering Academy kursu toplamda 4 dersten oluşur.
“OpenAI İstem Öneki Önbellekleme” dersinde ne öğreneceğim?
Tekrarlanan uzun sistem istemi öneklerini yüzde 50 indirimle önbelleğe alan OpenAI otomatik istem önbelleklemesinden yararlanın ve önbellek isabet oranlarını en üst düzeye çıkaracak şekilde istemleri… AI Engineering Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AI Engineering Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AI Engineering Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“OpenAI İstem Öneki Önbellekleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AI Engineering Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AI Engineering Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Redis ile Tam Önbellekleme
- Gömme Tabanlı Anlamsal Önbellekleme
- OpenAI İstem Öneki Önbellekleme
- Toplu İşleme, Model Yönlendirme ve Maliyet Panoları