Kuhifadhi Prompt kwa Kuzingatia Mtoa Huduma
Superdav AI Agent v1.12.0 inatangulia uhifadhi wa prompt kwa kuzingatia mtoa huduma (provider-aware prompt caching), ambayo hufanya kazi ya kuboresha gharama za API na kasi (latency) kwa kuhifadhi prompts katika watoa huduma tofauti wa LLM. Kila mtoa huduma ana njia na mipangilio yake ya kuhifadhi data.
Muhtasari
Uhifadhi wa prompt unakuwezesha:
- Kuhifadhi prompts kubwa na zinazotumika mara kwa mara
- Kupunguza gharama za API kwa kuepuka kufanya kazi zile zile mara kwa mara
- Kuboresha kasi (latency) kwa maombi yaliyohifadhiwa
- Kudhibiti mzunguko wa maelezo ya cache kwa uwazi
Watoa huduma tofauti wanatekeleza uhifadhi kwa njia tofauti:
- Google Gemini: API ya
cachedContents - Azure OpenAI: Uhifadhi wa prompt kwa TTL
- OpenRouter: Uhifadhi wa cache unaotegemea mtoa huduma
- Vertex Anthropic: Uhifadhi wa prompt kwa udhibiti wa cache
Google Gemini: API ya cachedContents
Google Gemini inatoa usimamizi wa cache kwa uwazi kupitia API ya cachedContents.
Mpangilio (Configuration)
$config = [
'provider' => 'google-gemini',
'model' => 'gemini-2.0-flash',
'caching' => [
'enabled' => true,
'ttl' => 3600, // Saa 1 kwa sekunde
'max_tokens' => 1000000, // Tokens za juu za kuhifadhi
],
];
Kuunda Prompt Iliyohifadhiwa (Creating a Cached Prompt)
use Superdav\AI\Providers\GoogleGemini;
$gemini = new GoogleGemini( $config );
$cached_content = $gemini->create_cached_content(
[
'system_prompt' => 'Wewe ni msaidizi msaidizi...',
'context' => 'Waraka mkubwa wa muktadha...',
'ttl' => 3600,
]
);
// Inarejesha: ['cache_id' => 'abc123', 'expires_at' => timestamp]
Kutumia Prompt Iliyohifadhiwa (Using a Cached Prompt)
$response = $gemini->generate(
[
'cache_id' => 'abc123',
'prompt' => 'Swali la mtumiaji hapa',
]
);
Mzunguko wa Cache (Cache Lifecycle)
// Orodhesha yaliyohifadhiwa
$caches = $gemini->list_cached_contents();
// Pata maelezo ya cache
$cache = $gemini->get_cached_content( 'abc123' );
// Upanua TTL ya cache
$gemini->update_cached_content(
'abc123',
['ttl' => 7200] // Upanua hadi saa 2
);
// Futa cache
$gemini->delete_cached_content( 'abc123' );
Mazoea Bora kwa Gemini
- Weka TTL inayofaa: Zingatia usawa kati ya kuokoa gharama na kuzeeka kwa cache
- Hifadhi system prompts: Tumia prompt ile ile ya mfumo katika maombi mengi
- Fuata matumizi ya cache: Tambua cache zipi zinatumika zaidi
- Safisha caches zilizopita: Futa mara kwa mara caches zisizotumika
Azure OpenAI: Uhifadhi wa Prompt
Azure OpenAI inasaidia uhifadhi wa prompt kwa usimamizi wa TTL kiotomatiki.
Mpangilio (Configuration)
$config = [
'provider' => 'azure-openai',
'model' => 'gpt-4-turbo',
'api_version' => '2024-08-01-preview',
'caching' => [
'enabled' => true,
'cache_control' => 'max_age=3600',
],
];
Kuwezesha Cache (Enabling Caching)
use Superdav\AI\Providers\AzureOpenAI;
$azure = new AzureOpenAI( $config );
$response = $azure->generate(
[
'system_prompt' => 'Wewe ni msaidizi msaidizi...',
'context' => 'Waraka mkubwa wa muktadha...',
'prompt' => 'Swali la mtumiaji hapa',
'cache_control' => 'max_age=3600',
]
);
// Jibu linajumuisha matumizi ya cache:
// [
// 'content' => '...',
// 'cache_creation_input_tokens' => 1000,
// 'cache_read_input_tokens' => 500,
// ]
Headers za Cache
Azure OpenAI inatumia headers za HTTP kwa udhibiti wa cache:
Cache-Control: max_age=3600
Thamani zinazodumishwa:
max_age=<seconds>: Hifadhi kwa muda uliowekwano_cache: Usihifadhi ombi hilino_store: Usihifadhi na usitumie tena
Ufuatiliaji wa Matumizi ya Cache
$response = $azure->generate( [...] );
$cache_tokens = $response['cache_creation_input_tokens'] ?? 0;
$cache_hits = $response['cache_read_input_tokens'] ?? 0;
echo "Uundaji wa cache: $cache_tokens tokens\n";
echo "Kupata cache: $cache_hits tokens\n";
Mazoea Bora kwa Azure OpenAI
- Tumia prompts thabiti: Prompts ile ile zinapata faida kutoka kwa cache
- Weka TTL inayofaa: Zingatia usawa kati ya gharama na ubora
- Fuata vipimo vya cache: Tambua uundaji wa cache dhidi ya kupata cache
- Unganisha maombi yanayofanana: Weka maombi pamoja ili kuongeza kupata cache
OpenRouter: Uhifadhi Unaotegemea Mtoa Huduma
OpenRouter inasaidia uhifadhi kupitia watoa huduma wa chini (OpenAI, Anthropic, n.k.).
Mpangilio (Configuration)
$config = [
'provider' => 'openrouter',
'model' => 'openai/gpt-4-turbo',
'caching' => [
'enabled' => true,
'provider_cache' => 'openai', // Tumia uhifadhi wa OpenAI
],
];
Kutumia Cache ya OpenRouter
use Superdav\AI\Providers\OpenRouter;
$router = new OpenRouter( $config );
$response = $router->generate(
[
'system_prompt' => 'Wewe ni msaidizi msaidizi...',
'context' => 'Waraka mkubwa wa muktadha...',
'prompt' => 'Swali la mtumiaji hapa',
'cache_control' => 'max_age=3600',
]
);
Chaguo Maalum kwa Mtoa Huduma
Watoa huduma tofauti wana njia tofauti za kuhifadhi cache:
// Cache inayolingana na OpenAI
$response = $router->generate(
[
'model' => 'openai/gpt-4-turbo',
'cache_control' => 'max_age=3600',
]
);
// Cache inayolingana na Anthropic
$response = $router->generate(
[
'model' => 'anthropic/claude-3-opus',
'cache_control' => [
'type' => 'ephemeral',
'max_tokens' => 1000000,
],
]
);
Mazoea Bora kwa OpenRouter
- Jua uhifadhi wa mtoa huduma wako: Kila mtoa huduma ana njia tofauti
- Jaribu tabia ya cache: Thibitisha kuwa cache inafanya kazi na mtoa huduma uliyonchagua
- Fuata gharama: Tambua akimatuzi kutoka kwa cache
- Tumia mifumo thabiti: Kubadilisha mifumo huoharibu kupata cache
Vertex Anthropic: Uhifadhi wa Prompt kwa Udhibiti wa Cache
Vertex Anthropic (Google Cloud) inasaidia uhifadhi wa prompt kwa udhibiti wa cache kwa uwazi.
Mpangilio (Configuration)
$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,
],
],
];
Kutumia Cache ya Vertex Anthropic
use Superdav\AI\Providers\VertexAnthropic;
$vertex = new VertexAnthropic( $config );
$response = $vertex->generate(
[
'system_prompt' => 'Wewe ni msaidizi msaidizi...',
'context' => 'Waraka mkubwa wa muktadha...',
'prompt' => 'Swali la mtumiaji hapa',
'cache_control' => [
'type' => 'ephemeral',
'max_tokens' => 1000000,
],
]
);
// Jibu linajumuisha vipimo vya cache:
// [
// 'content' => '...',
// 'usage' => [
// 'input_tokens' => 1000,
// 'cache_creation_input_tokens' => 500,
// 'cache_read_input_tokens' => 300,
// ],
// ]
Aina za Udhibiti wa Cache
- ephemeral: Hifadhi kwa muda wa ombi (default)
- persistent: Hifadhi katika maombi mengi (ikiwa inasaudiwa)
Ufuatiliaji wa Matumizi ya Cache
$response = $vertex->generate( [...] );
$usage = $response['usage'];
$cache_created = $usage['cache_creation_input_tokens'] ?? 0;
$cache_read = $usage['cache_read_input_tokens'] ?? 0;
echo "Cache iloundwa: $cache_created tokens\n";
echo "Cache ilisomwa: $cache_read tokens\n";
Mazoea Bora kwa Vertex Anthropic
- Tumia ephemeral caching: Nzuri kwa kuhifadhi ndani ya kikao kimoja
- Weka max_tokens ipasavyo: Zingatia usawa kati ya ukubwa wa cache na gharama
- Fuata vipimo vya cache: Tambua ufanisi wa cache
- Jaribu na kazi yako: Thibitisha kuwa cache inafaa kwa matumizi yako
Mikakati ya Cache ya Watoa Huduma Mbalimbali
Mpangilio Mmoja (Unified Configuration)
$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,
],
],
],
],
];
Kugundua Mtoa Huduma (Provider Detection)
$provider = $config['provider'];
$cache_config = $config['caching']['providers'][ $provider ]
?? $config['caching'];
// Tumia mpangilio wa cache unaotegemea mtoa huduma
Mkakati wa Kurudi Nyuma (Fallback Strategy)
try {
// Jaribu kuhifadhi kwa mtoa huduma mkuu
$response = $primary_provider->generate( $request );
} catch ( CacheException $e ) {
// Rudi nyuma kwa ombi lisilohifadhiwa
$response = $primary_provider->generate(
array_merge( $request, ['cache_control' => 'no_cache'] )
);
}
Kuboresha Gharama (Cost Optimization)
Kuhesabu Akimatuzi (Calculate Savings)
$cache_created_tokens = $response['cache_creation_input_tokens'] ?? 0;
$cache_read_tokens = $response['cache_read_input_tokens'] ?? 0;
$regular_tokens = $response['input_tokens'] ?? 0;
// Bei za kawaida (zinabadilika kulingana na mtoa huduma):
$cache_creation_cost = $cache_created_tokens * 0.00001; // Bei 10x nafuu
$cache_read_cost = $cache_read_tokens * 0.000001; // Bei 100x nafuu
$regular_cost = $regular_tokens * 0.00001;
$total_cost = $cache_creation_cost + $cache_read_cost + $regular_cost;
$savings = ($regular_tokens * 0.00001) - $total_cost;
echo "Akimatuzi yanayokadiriwa: \$$savings\n";
Vidokezo vya Kuboresha (Optimization Tips)
- Hifadhi system prompts kubwa: Akimatuzi kubwa zaidi ya gharama
- Tumia muktadha upya: Hifadhi waraka wa muktadha unaotumika mara kwa mara
- Unganisha maombi: Weka maombi yanayofanana pamoja ili kuongeza kupata cache
- Fuata ufanisi wa cache: Tambua akimatuzi halisi
- Sawa TTL: Zingatia usawa kati ya gharama na ubora
Kutatua Matatizo (Troubleshooting)
Cache haitumiki
- Thibitisha kuwa cache imewashwa katika mpangilio
- Angalia kuwa prompts ni sawa (cache inahitaji kufanana kabisa)
- Thibitisha kuwa cache haijapita muda wake
- Angalia mipaka ya cache maalum kwa mtoa huduma
Kuunda cache kushindwa
- Thibitisha kuwa ukubwa wa cache uko ndani ya mipaka ya mtoa huduma
- Angalia kuwa sintaks ya udhibiti wa cache ni sahihi
- Hakikisha mtoa huduma anasaidia cache kwa mfumo wako
- Pitia waraka wa mtoa huduma kwa mapungufu
Gharama zisizotarajiwa
- Fuata uundaji wa cache dhidi ya tokens za kusoma cache
- Thibitisha kuwa cache inatumika kweli
- Angalia kwa ajili ya cache misses kutokana na mabadiliko ya prompts
- Zingatia kurekebisha TTL au mkakati wa cache
Kulinganisha Watoa Huduma (Provider Comparison)
| Kipengele | Gemini | Azure OpenAI | OpenRouter | Vertex Anthropic |
|---|---|---|---|---|
| API ya Cache | cachedContents | HTTP headers | Provider-specific | Cache control |
| Udhibiti wa TTL | Uwazi | Kupitia headers | Kulingana na mtoa huduma | Ephemeral/persistent |
| Ukubwa wa cache | 1M tokens | Kulingana na mtoa huduma | Kulingana na mtoa huduma | 1M tokens |
| Kupunguza gharama | 90% | 90% | Kulingana na mtoa huduma | 90% |
| Ufuatiliaji | Kina | Kupitia vipimo | Kulingana na mtoa huduma | Kupitia matumizi |
Hatua Zijazo (Next Steps)
- Chagua mtoa huduma wako: Chagua kulingana na mahitaji yako
- Panga cache: Weka upangilio wa cache unaotegemea mtoa huduma
- Jaribu cache: Thibitisha kuwa inafanya kazi na prompts zako
- Fuata matumizi: Tambua kupata cache na akimatuzi ya kuokoa
- Boresha: Rekebisha TTL na mkakati wa cache kulingana na matokeo