AI Maliyet Yönetimi ve Caching Teknikleri
Yapay zeka modelleri (GPT-4, Claude 3.5 vb.) her istekte gönderilen token miktarı üzerinden ücretlendirilir. Eğer kullanıcılarınız benzer soruları tekrar tekrar soruyorsa, her seferinde API'ye gitmek hem maliyetli hem de yavaştır.
Önbelleklemenin Avantajları
- Maliyet: Tekrarlanan isteklerde %0 maliyet.
- Hız: API yanıtı (2-10 sn) yerine önbellek yanıtı (<10 ms).
- Süreklilik: API limitleriniz (Rate Limit) dolsa bile önbellekteki veriyi sunmaya devam edebilirsiniz.
1) Basit PHP File Caching
Küçük projeler için prompt'un hash değerine göre dosya tabanlı saklama yöntemi.
$prompt = "Yapay zeka nedir?";
$cacheFile = "cache/" . md5($prompt) . ".json";
$cacheTime = 3600 * 24; // 24 saat
if (file_exists($cacheFile) && (time() - filemtime($cacheFile) < $cacheTime)) {
// Önbellekten oku
$result = json_decode(file_get_contents($cacheFile), true);
} else {
// API'ye git
$result = callAI($prompt);
// Sonucu kaydet
file_put_contents($cacheFile, json_encode($result));
}
2) Profesyonel Çözüm: Redis ile Caching
Yüksek trafikli uygulamalarda RAM üzerinden veri okumak için Redis en ideal çözümdür.
// Redis bağlantısı
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$key = "ai_response:" . sha1($prompt);
if ($redis->exists($key)) {
return $redis->get($key);
} else {
$response = $apiClient->generate($prompt);
$redis->setex($key, 86400, $response); // 1 gün sakla
return $response;
}
3) İleri Seviye: Semantic Caching
Sadece birebir aynı cümleleri değil, aynı anlama gelen soruları da önbellekten getirmek mümkündür. Bunun için sorulan soruyu vektörleştirip (Embedding), vektör veritabanında (Pinecone/Milvus) "benzer bir soru daha önce sorulmuş mu?" araması yapılır.
Token Tasarrufu İpucu
Sadece yanıtı değil, sistem mesajlarını (system prompt) kısa tutmak da maliyeti düşürür. Gereksiz örnekleri (few-shot) her istekte göndermek yerine, sadece karmaşık durumlarda ekleyin.