Sağlayıcıya Özel Prompt Önbellekleme
Superdav AI Agent v1.12.0, farklı LLM sağlayıcıları arasında prompt'ları önbelleğe alarak API maliyetlerini ve gecikmeyi optimize eden sağlayıcıya özel prompt önbellekleme özelliğini getiriyor. Her sağlayıcının farklı önbellekleme mekanizmaları ve yapılandırmaları vardır.
Genel Bakış
Prompt önbellekleme sayesinde şunları yapabilirsiniz:
- Sık kullanılan büyük prompt'ları önbelleğe almak
- Gereksiz işlemleri engelleyerek API maliyetlerini düşürmek
- Önbelleğe alınmış istekler için gecikmeyi iyileştirmek
- Önbellek yaşam döngüsünü açıkça yönetmek
Farklı sağlayıcılar önbellekleme özelliğini farklı şekillerde uyguluyor:
- Google Gemini:
cachedContentsAPI - Azure OpenAI: TTL ile Prompt önbellekleme
- OpenRouter: Sağlayıcıya özel önbellekleme
- Vertex Anthropic: Önbellek kontrolü ile Prompt önbellekleme
Google Gemini: cachedContents API
Google Gemini, cachedContents API aracılığıyla açık önbellek yönetimi sağlar.
Yapılandırma
$config = [
'provider' => 'google-gemini',
'model' => 'gemini-2.0-flash',
'caching' => [
'enabled' => true,
'ttl' => 3600, // 1 saat saniye cinsinden
'max_tokens' => 1000000, // Önbelleklenebilecek maksimum token
],
];
Önbelleklenmiş Prompt Oluşturma
use Superdav\AI\Providers\GoogleGemini;
$gemini = new GoogleGemini( $config );
$cached_content = $gemini->create_cached_content(
[
'system_prompt' => 'Yardımcı bir asistan olduğunuzu varsayın...',
'context' => 'Büyük bağlam belgesi...',
'ttl' => 3600,
]
);
// Dönüş: ['cache_id' => 'abc123', 'expires_at' => timestamp]
Önbelleklenmiş Prompt Kullanma
$response = $gemini->generate(
[
'cache_id' => 'abc123',
'prompt' => 'Kullanıcı sorusu burada',
]
);
Önbellek Yaşam Döngüsü
// Önbelleklenmiş içerikleri listele
$caches = $gemini->list_cached_contents();
// Önbellek detaylarını al
$cache = $gemini->get_cached_content( 'abc123' );
// Önbellek TTL'sini uzat
$gemini->update_cached_content(
'abc123',
['ttl' => 7200] // 2 saate uzat
);
// Önbelleği sil
$gemini->delete_cached_content( 'abc123' );
Gemini İçin En İyi Uygulamalar
- Uygun TTL belirleyin: Maliyet tasarrufu ile önbellek güncelliği arasında denge kurun
- Sistem prompt'larını önbelleğe alın: İstekler arasında aynı sistem prompt'unu yeniden kullanın
- Önbellek kullanımını izleyin: Hangi önbelleklerin en çok kullanıldığını takip edin
- Süresi dolmuş önbellekleri temizleyin: Kullanılmayan önbellekleri periyodik olarak silin
Azure OpenAI: Prompt Önbellekleme
Azure OpenAI, otomatik TTL yönetimi ile prompt önbellekleme desteği sunar.
Yapılandırma
$config = [
'provider' => 'azure-openai',
'model' => 'gpt-4-turbo',
'api_version' => '2024-08-01-preview',
'caching' => [
'enabled' => true,
'cache_control' => 'max_age=3600',
],
];
Önbellekleme Etkinleştirme
use Superdav\AI\Providers\AzureOpenAI;
$azure = new AzureOpenAI( $config );
$response = $azure->generate(
[
'system_prompt' => 'Yardımcı bir asistan olduğunuzu varsayın...',
'context' => 'Büyük bağlam belgesi...',
'prompt' => 'Kullanıcı sorusu burada',
'cache_control' => 'max_age=3600',
]
);
// Yanıt, önbellek kullanımını içerir:
// [
// 'content' => '...',
// 'cache_creation_input_tokens' => 1000,
// 'cache_read_input_tokens' => 500,
// ]
Önbellek Başlıkları (Cache Headers)
Azure OpenAI, önbellek kontrolü için HTTP başlıkları kullanır:
Cache-Control: max_age=3600
Desteklenen değerler:
max_age=<saniye>: Belirtilen süre boyunca önbellek tutarno_cache: Bu isteği önbelleğe almano_store: Önbellekleme yapma ve yeniden kullanmama
Önbellek Kullanımını İzleme
$response = $azure->generate( [...] );
$cache_tokens = $response['cache_creation_input_tokens'] ?? 0;
$cache_hits = $response['cache_read_input_tokens'] ?? 0;
echo "Önbellek oluşturma: $cache_tokens token\n";
echo "Önbellek okuma: $cache_hits token\n";
Azure OpenAI İçin En İyi Uygulamalar
- Tutarlı prompt'lar kullanın: Aynı prompt'lar önbelleklemeden faydalanır
- Makul TTL belirleyin: Maliyet ile tazelik arasında denge kurun
- Önbellek metriklerini izleyin: Önbellek oluşturma ile okuma sayısını takip edin
- Benzer istekleri toplu işleyin: Önbellek isabetini en üst düzeye çıkarmak için istekleri gruplayın
OpenRouter: Sağlayıcıya Özel Önbellekleme
OpenRouter, alttaki sağlayıcılar (OpenAI, Anthropic vb.) aracılığıyla önbellekleme desteği sunar.
Yapılandırma
$config = [
'provider' => 'openrouter',
'model' => 'openai/gpt-4-turbo',
'caching' => [
'enabled' => true,
'provider_cache' => 'openai', // OpenAI'nin önbelleklemesini kullan
],
];
OpenRouter Önbellekleme Kullanma
use Superdav\AI\Providers\OpenRouter;
$router = new OpenRouter( $config );
$response = $router->generate(
[
'system_prompt' => 'Yardımcı bir asistan olduğunuzu varsayın...',
'context' => 'Büyük bağlam belgesi...',
'prompt' => 'Kullanıcı sorusu burada',
'cache_control' => 'max_age=3600',
]
);
Sağlayıcıya Özel Seçenekler
Farklı sağlayıcıların farklı önbellekleme mekanizmaları vardır:
// OpenAI uyumlu önbellekleme
$response = $router->generate(
[
'model' => 'openai/gpt-4-turbo',
'cache_control' => 'max_age=3600',
]
);
// Anthropic uyumlu önbellekleme
$response = $router->generate(
[
'model' => 'anthropic/claude-3-opus',
'cache_control' => [
'type' => 'ephemeral',
'max_tokens' => 1000000,
],
]
);
OpenRouter İçin En İyi Uygulamalar
- Sağlayıcınızın önbelleklemesini bilin: Her sağlayıcının farklı mekanizmaları vardır
- Önbellekleme davranışını test edin: Seçtiğiniz sağlayıcıyla önbelleklemenin çalıştığından emin olun
- Maliyetleri izleyin: Önbelleklemeden elde edilen tasarrufları takip edin
- Tutarlı modeller kullanın: Model değiştirmek önbellek isabetini bozar
Vertex Anthropic: Önbellek Kontrollü Prompt Önbellekleme
Vertex Anthropic (Google Cloud), açık önbellek kontrolü ile prompt önbellekleme desteği sunar.
Yapılandırma
$config = [
'provider' => 'vertex-anthropic',
'model' => 'claude-3-opus',
'project_id' => 'your-gcp-project',
'region' => 'us-central1',
'caching' => [
'enabled' => true,
'cache_control' => [
'type' => 'ephemeral',
'max_tokens' => 1000000,
],
],
];
Vertex Anthropic Önbellekleme Kullanma
use Superdav\AI\Providers\VertexAnthropic;
$vertex = new VertexAnthropic( $config );
$response = $vertex->generate(
[
'system_prompt' => 'Yardımcı bir asistan olduğunuzu varsayın...',
'context' => 'Büyük bağlam belgesi...',
'prompt' => 'Kullanıcı sorusu burada',
'cache_control' => [
'type' => 'ephemeral',
'max_tokens' => 1000000,
],
]
);
// Yanıt, önbellek metriklerini içerir:
// [
// 'content' => '...',
// 'usage' => [
// 'input_tokens' => 1000,
// 'cache_creation_input_tokens' => 500,
// 'cache_read_input_tokens' => 300,
// ],
// ]
Önbellek Kontrol Türleri
- ephemeral: İstek süresi boyunca önbellek tutar (varsayılan)
- persistent: Birden fazla istek boyunca önbellek tutar (desteklenirse)
Önbellek Kullanımını İzleme
$response = $vertex->generate( [...] );
$usage = $response['usage'];
$cache_created = $usage['cache_creation_input_tokens'] ?? 0;
$cache_read = $usage['cache_read_input_tokens'] ?? 0;
echo "Oluşturulan önbellek: $cache_created token\n";
echo "Okunan önbellek: $cache_read token\n";
Vertex Anthropic İçin En İyi Uygulamalar
- Ephemeral önbellekleme kullanın: Tek oturum önbelleklemesi için iyidir
- max_tokens'ı uygun şekilde ayarlayın: Önbellek boyutu ile maliyet arasında denge kurun
- Önbellek metriklerini izleyin: Önbellek etkinliğini takip edin
- İş yükünüzle test edin: Önbelleklemenin kullanım senaryonuza fayda sağladığını doğrulayın
Sağlayıcılar Arası Önbellekleme Stratejisi
Birleştirilmiş Yapılandırma
$config = [
'caching' => [
'enabled' => true,
'default_ttl' => 3600,
'providers' => [
'google-gemini' => [
'ttl' => 3600,
'max_tokens' => 1000000,
],
'azure-openai' => [
'cache_control' => 'max_age=3600',
],
'vertex-anthropic' => [
'cache_control' => [
'type' => 'ephemeral',
'max_tokens' => 1000000,
],
],
],
],
];