Skip to main content

Providerə Uyğun Prompt Cacheləmə

Superdav AI Agent v1.12.0, müxtəlif LLM (Böyük Dil Modeli) providerları arasında promptları cacheləyərək API xərclərini və gecikməni (latency) optimallaşdıran providerə uyğun prompt cacheləmə funksionallığını təqdim edir. Hər bir providerun özünəməxsus cacheləmə mexanizmləri və konfiqurasiyaları var.

Ümumi Baxış

Prompt cacheləmə sizə aşağıdakıları etməyə imkan verir:

  • Tez-tez istifadə olunan böyük promptları cacheləmək
  • Təkrar emal etməkdən çəkinərək API xərclərini azaltmaq
  • Cachelənmiş sorğular üçün gecikməni yaxşılaşdırmaq
  • Cache həyat dövrünü (lifecycle) açıq şəkildə idarə etmək

Fərqli providerlar cacheləməni fərqli şəkildə tətbiq edir:

  • Google Gemini: cachedContents API
  • Azure OpenAI: TTL ilə Prompt cacheləmə
  • OpenRouter: Providerə xas cacheləmə
  • Vertex Anthropic: Cache nəzarəti ilə Prompt cacheləmə

Google Gemini: cachedContents API

Google Gemini, cachedContents API vasitəsilə açıq cache idarəetməsi təmin edir.

Konfiqurasiya

$config = [
'provider' => 'google-gemini',
'model' => 'gemini-2.0-flash',
'caching' => [
'enabled' => true,
'ttl' => 3600, // 1 saat saniyə ilə
'max_tokens' => 1000000, // Cachelənməyə maksimum token sayı
],
];

Cachelənmiş Prompt Yaratmaq

use Superdav\AI\Providers\GoogleGemini;

$gemini = new GoogleGemini( $config );

$cached_content = $gemini->create_cached_content(
[
'system_prompt' => 'Siz köməkçi bir asistanınız...',
'context' => 'Böyük kontekst sənədi...',
'ttl' => 3600,
]
);

// Nəticə: ['cache_id' => 'abc123', 'expires_at' => timestamp]

Cachelənmiş Promptdan İstifadə Etmək

$response = $gemini->generate(
[
'cache_id' => 'abc123',
'prompt' => 'İstifadəçi sualı burda',
]
);

Cache Həyat Dövrü

// Cachelənmiş məzmunları siyahıla
$caches = $gemini->list_cached_contents();

// Cache detallarını al
$cache = $gemini->get_cached_content( 'abc123' );

// Cache TTL-ni uzatmaq
$gemini->update_cached_content(
'abc123',
['ttl' => 7200] // 2 saatə qədər uzat
);

// Cache-i silmək
$gemini->delete_cached_content( 'abc123' );

Gemini üçün Ən Yaxşı Praktikalara Nəzarət

  • Uyğun TTL təyin edin: Xərclərdən qənaət və cache köhnəlməsi arasında balans tapın
  • Sistem promptlarını cacheləyin: Sorğular arasında eyni sistem promptundan istifadə edin
  • Cache istifadəsini monitorinq edin: Hansı cachelərin ən çox istifadə olunduğunu izləyin
  • Expired cacheləri təmizləyin: İstifadə edilməyən cacheləri müntəzəm olaraq silin

Azure OpenAI: Prompt Cacheləmə

Azure OpenAI, avtomatik TTL idarəetməsi ilə prompt cacheləməni dəstəkləyir.

Konfiqurasiya

$config = [
'provider' => 'azure-openai',
'model' => 'gpt-4-turbo',
'api_version' => '2024-08-01-preview',
'caching' => [
'enabled' => true,
'cache_control' => 'max_age=3600',
],
];

Cacheləməni Aktivləşdirmək

use Superdav\AI\Providers\AzureOpenAI;

$azure = new AzureOpenAI( $config );

$response = $azure->generate(
[
'system_prompt' => 'Siz köməkçi bir asistanınız...',
'context' => 'Böyük kontekst sənədi...',
'prompt' => 'İstifadəçi sualı burda',
'cache_control' => 'max_age=3600',
]
);

// Cavabda cache istifadəsi daxildir:
// [
// 'content' => '...',
// 'cache_creation_input_tokens' => 1000,
// 'cache_read_input_tokens' => 500,
// ]

Cache Başlıqları (Cache Headers)

Azure OpenAI, cache nəzarəti üçün HTTP başlıqlarından istifadə edir:

Cache-Control: max_age=3600

Dəstəklənən dəyərlər:

  • max_age=<saniyə>: Müəyyən müddət üçün cacheləyin
  • no_cache: Bu sorğunu cacheləməyin
  • no_store: Cacheləməyin və yenidən istifadə etməyin

Cache İstifadəsinin Monitorinqi

$response = $azure->generate( [...] );

$cache_tokens = $response['cache_creation_input_tokens'] ?? 0;
$cache_hits = $response['cache_read_input_tokens'] ?? 0;

echo "Cache yaratma: $cache_tokens token\n";
echo "Cache tutuşu (hits): $cache_hits token\n";

Azure OpenAI üçün Ən Yaxşı Praktikalara Nəzarət

  • Müəyyən promptlardan istifadə edin: Eyni promptlar cachelənmədən faydalanır
  • Məntiq bir TTL təyin edin: Xərc və təzəlik arasında balans tapın
  • Cache metrikalarını monitorinq edin: Cache yaratma ilə tutuşları izləyin
  • Oxşar sorğuları toplu (batch) göndərin: Cache tutuşlarını maksimallaşdırmaq üçün sorğuları qruplaşdırın

OpenRouter: Providerə Xas Cacheləmə

OpenRouter, əsas providerlar (OpenAI, Anthropic və s.) vasitəsilə cacheləməni dəstəkləyir.

Konfiqurasiya

$config = [
'provider' => 'openrouter',
'model' => 'openai/gpt-4-turbo',
'caching' => [
'enabled' => true,
'provider_cache' => 'openai', // OpenAI-nin cacheləməsindən istifadə et
],
];

OpenRouter Cacheləməsindən İstifadə Etmək

use Superdav\AI\Providers\OpenRouter;

$router = new OpenRouter( $config );

$response = $router->generate(
[
'system_prompt' => 'Siz köməkçi bir asistanınız...',
'context' => 'Böyük kontekst sənədi...',
'prompt' => 'İstifadəçi sualı burda',
'cache_control' => 'max_age=3600',
]
);

Providerə Xas Seçimlər

Fərqli providerların fərqli cacheləmə mexanizmləri var:

// OpenAI-uyumlu cacheləmə
$response = $router->generate(
[
'model' => 'openai/gpt-4-turbo',
'cache_control' => 'max_age=3600',
]
);

// Anthropic-uyumlu cacheləmə
$response = $router->generate(
[
'model' => 'anthropic/claude-3-opus',
'cache_control' => [
'type' => 'ephemeral',
'max_tokens' => 1000000,
],
]
);

OpenRouter üçün Ən Yaxşı Praktikalara Nəzarət

  • Providerunuzun cacheləməsini bilin: Hər providerun fərqli mexanizmləri var
  • Cacheləmə davranışını test edin: Seçdiyiniz provider ilə cacheləmənin işlədiyini yoxlayın
  • Xərcləri monitorinq edin: Cacheləmədən qənaətləri izləyin
  • Müəyyən modellərdən istifadə edin: Model dəyişmək cache tutuşlarını pozur

Vertex Anthropic: Cache Nəzarəti ilə Prompt Cacheləmə

Vertex Anthropic (Google Cloud) açıq cache nəzarəti ilə prompt cacheləməni dəstəkləyir.

Konfiqurasiya

$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 Cacheləməsindən İstifadə Etmək

use Superdav\AI\Providers\VertexAnthropic;

$vertex = new VertexAnthropic( $config );

$response = $vertex->generate(
[
'system_prompt' => 'Siz köməkçi bir asistanınız...',
'context' => 'Böyük kontekst sənədi...',
'prompt' => 'İstifadəçi sualı burda',
'cache_control' => [
'type' => 'ephemeral',
'max_tokens' => 1000000,
],
]
);

// Cavabda cache metrikaları daxildir:
// [
// 'content' => '...',
// 'usage' => [
// 'input_tokens' => 1000,
// 'cache_creation_input_tokens' => 500,
// 'cache_read_input_tokens' => 300,
// ],
// ]

Cache Nəzarəti Tipləri

  • ephemeral: Sorğu müddətində cacheləyin (default)
  • persistent: Bir neçə sorğu boyunca cacheləyin (dəstəklənirsə)

Cache İstifadəsinin Monitorinqi

$response = $vertex->generate( [...] );

$usage = $response['usage'];
$cache_created = $usage['cache_creation_input_tokens'] ?? 0;
$cache_read = $usage['cache_read_input_tokens'] ?? 0;

echo "Cache yaradıldı: $cache_created token\n";
echo "Cache oxundu: $cache_read token\n";

Vertex Anthropic üçün Ən Yaxşı Praktikalara Nəzarət

  • Ephemeral cacheləmə istifadə edin: Bir sessiya ərzində cacheləmə üçün yaxşıdır
  • max_tokens-i uyğun təyin edin: Cache ölçüsü və xərc arasında balans tapın
  • Cache metrikalarını monitorinq edin: Cache effektivliyini izləyin
  • Yükünüzlə test edin: Cacheləmənin istifadə halınıza fayda verdiyini yoxlayın

Providerlararası Cacheləmə Strategiyası

Birləşdirilmiş Konfiqurasiya

$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,
],
],
],
],
];

Provider Müəyyən Etmə

$provider = $config['provider'];

$cache_config = $config['caching']['providers'][ $provider ]
?? $config['caching'];

// Providerə xas cacheləmə konfiqurasiyasından istifadə et

Fallback Strategiyası

try {
// Əsas provider ilə cacheləməni cəhd et
$response = $primary_provider->generate( $request );
} catch ( CacheException $e ) {
// Cachelənməmiş sorğuya geri dön
$response = $primary_provider->generate(
array_merge( $request, ['cache_control' => 'no_cache'] )
);
}

Xərc Optimallaşdırılması

Qənaətləri Hesablamaq

$cache_created_tokens = $response['cache_creation_input_tokens'] ?? 0;
$cache_read_tokens = $response['cache_read_input_tokens'] ?? 0;
$regular_tokens = $response['input_tokens'] ?? 0;

// Tipik qiymətləndirmə (providerdan providera dəyişir):
$cache_creation_cost = $cache_created_tokens * 0.00001; // 10x ucuzdur
$cache_read_cost = $cache_read_tokens * 0.000001; // 100x ucuzdur
$regular_cost = $regular_tokens * 0.00001;

$total_cost = $cache_creation_cost + $cache_read_cost + $regular_cost;
$savings = ($regular_tokens * 0.00001) - $total_cost;

echo "Təxmini qənaət: \$$savings\n";

Optimallaşdırma Məsləhətləri

  • Böyük sistem promptlarını cacheləyin: Ən böyük xərc qənaəti
  • Konteksti yenidən istifadə edin: Tez-tez istifadə olunan kontekst sənədlərini cacheləyin
  • Sorğuları toplu (batch) göndərin: Cache tutuşlarını maksimallaşdırmaq üçün oxşar sorğuları qruplaşdırın
  • Cache effektivliyini monitorinq edin: Faktiki qənaətləri izləyin
  • TTL-ni tənzimləyin: Xərc və təzəlik arasında balans tapın

Problemlərin Həlli (Troubleshooting)

Cache istifadə edilmir

  • Konfiqurasiyada cacheləmənin aktiv olduğundan əmin olun
  • Promptların eyni olduğundan əmin olun (cacheləmə dəqiq uyğunluğu tələb edir)
  • Cachenin bitmədiyini yoxlayın
  • Providerə xas cache limitlərini yoxlayın

Cache yaratmaq uğursuz olur

  • Cache ölçüsünün provider limitləri daxilində olduğundan əmin olun
  • Cache nəzarəti sintaksisinin düzgün olduğundan əmin olun
  • Providerun modeliniz üçün cacheləməni dəstəklədiyini yoxlayın
  • Məhdudiyyətlər üçün provider sənədlərinə nəzər salın

Gözlənilməz xərclər

  • Cache yaratma ilə cache oxuma tokenlarını monitorinq edin
  • Cachenin həqiqətən istifadə olunduğunu yoxlayın
  • Prompt fərqlilikləri səbəbindən cache çatışmazlığını yoxlayın
  • TTL (Time To Live)