Teikėją atpažįstantis promptų podėlio naudojimas
Superdav AI Agent v1.12.0 pristato teikėją atpažįstantį promptų podėlio naudojimą, kuris optimizuoja API sąnaudas ir delsą talpindamas promptus podėlyje skirtinguose LLM teikėjuose. Kiekvienas teikėjas turi skirtingus podėlio mechanizmus ir konfigūracijas.
Apžvalga
Promptų podėlio naudojimas leidžia:
- Talpinti podėlyje didelius, dažnai naudojamus promptus
- Sumažinti API sąnaudas išvengiant perteklinio apdorojimo
- Pagerinti delsą podėlyje esančioms užklausoms
- Aiškiai valdyti podėlio gyvavimo ciklą
Skirtingi teikėjai podėlio naudojimą įgyvendina skirtingai:
- Google Gemini:
cachedContentsAPI - Azure OpenAI: promptų podėlio naudojimas su TTL
- OpenRouter: teikėjui specifinis podėlio naudojimas
- Vertex Anthropic: promptų podėlio naudojimas su podėlio valdymu
Google Gemini: cachedContents API
Google Gemini suteikia aiškų podėlio valdymą per cachedContents API.
Konfigūracija
$config = [
'provider' => 'google-gemini',
'model' => 'gemini-2.0-flash',
'caching' => [
'enabled' => true,
'ttl' => 3600, // 1 hour in seconds
'max_tokens' => 1000000, // Max tokens to cache
],
];
Podėlyje talpinamo prompto kūrimas
use Superdav\AI\Providers\GoogleGemini;
$gemini = new GoogleGemini( $config );
$cached_content = $gemini->create_cached_content(
[
'system_prompt' => 'You are a helpful assistant...',
'context' => 'Large context document...',
'ttl' => 3600,
]
);
// Returns: ['cache_id' => 'abc123', 'expires_at' => timestamp]
Podėlyje talpinamo prompto naudojimas
$response = $gemini->generate(
[
'cache_id' => 'abc123',
'prompt' => 'User question here',
]
);
Podėlio gyvavimo ciklas
// List cached contents
$caches = $gemini->list_cached_contents();
// Get cache details
$cache = $gemini->get_cached_content( 'abc123' );
// Extend cache TTL
$gemini->update_cached_content(
'abc123',
['ttl' => 7200] // Extend to 2 hours
);
// Delete cache
$gemini->delete_cached_content( 'abc123' );
Geriausios praktikos Gemini
- Nustatykite tinkamą TTL: suderinkite sąnaudų taupymą ir podėlio pasenimą
- Talpinkite sistemos promptus podėlyje: pakartotinai naudokite tą patį sistemos promptą skirtingoms užklausoms
- Stebėkite podėlio naudojimą: sekite, kurie podėliai naudojami dažniausiai
- Išvalykite pasibaigusio galiojimo podėlius: periodiškai ištrinkite nenaudojamus podėlius
Azure OpenAI: promptų podėlio naudojimas
Azure OpenAI palaiko promptų podėlio naudojimą su automatiniu TTL valdymu.
Konfigūracija
$config = [
'provider' => 'azure-openai',
'model' => 'gpt-4-turbo',
'api_version' => '2024-08-01-preview',
'caching' => [
'enabled' => true,
'cache_control' => 'max_age=3600',
],
];
Podėlio naudojimo įjungimas
use Superdav\AI\Providers\AzureOpenAI;
$azure = new AzureOpenAI( $config );
$response = $azure->generate(
[
'system_prompt' => 'You are a helpful assistant...',
'context' => 'Large context document...',
'prompt' => 'User question here',
'cache_control' => 'max_age=3600',
]
);
// Response includes cache usage:
// [
// 'content' => '...',
// 'cache_creation_input_tokens' => 1000,
// 'cache_read_input_tokens' => 500,
// ]
Podėlio antraštės
Azure OpenAI podėlio valdymui naudoja HTTP antraštes:
Cache-Control: max_age=3600
Palaikomos reikšmės:
max_age=<seconds>: talpinti podėlyje nurodytą trukmęno_cache: netalpinti šios užklausos podėlyjeno_store: netalpinti podėlyje ir nenaudoti pakartotinai
Podėlio naudojimo stebėjimas
$response = $azure->generate( [...] );
$cache_tokens = $response['cache_creation_input_tokens'] ?? 0;
$cache_hits = $response['cache_read_input_tokens'] ?? 0;
echo "Cache creation: $cache_tokens tokens\n";
echo "Cache hits: $cache_hits tokens\n";
Geriausios praktikos Azure OpenAI
- Naudokite nuoseklius promptus: identiški promptai gauna naudos iš podėlio naudojimo
- Nustatykite pagrįstą TTL: suderinkite sąnaudas ir šviežumą
- Stebėkite podėlio metrikas: sekite podėlio kūrimą ir pataikymus
- Grupuokite panašias užklausas: sugrupuokite užklausas, kad maksimaliai padidintumėte podėlio pataikymus
OpenRouter: teikėjui specifinis podėlio naudojimas
OpenRouter palaiko podėlio naudojimą per pagrindinius teikėjus (OpenAI, Anthropic ir kt.).
Konfigūracija
$config = [
'provider' => 'openrouter',
'model' => 'openai/gpt-4-turbo',
'caching' => [
'enabled' => true,
'provider_cache' => 'openai', // Use OpenAI's caching
],
];
OpenRouter podėlio naudojimas
use Superdav\AI\Providers\OpenRouter;
$router = new OpenRouter( $config );
$response = $router->generate(
[
'system_prompt' => 'You are a helpful assistant...',
'context' => 'Large context document...',
'prompt' => 'User question here',
'cache_control' => 'max_age=3600',
]
);
Teikėjui specifinės parinktys
Skirtingi teikėjai turi skirtingus podėlio mechanizmus:
// OpenAI-compatible caching
$response = $router->generate(
[
'model' => 'openai/gpt-4-turbo',
'cache_control' => 'max_age=3600',
]
);
// Anthropic-compatible caching
$response = $router->generate(
[
'model' => 'anthropic/claude-3-opus',
'cache_control' => [
'type' => 'ephemeral',
'max_tokens' => 1000000,
],
]
);
Geriausios praktikos OpenRouter
- Žinokite savo teikėjo podėlio naudojimą: kiekvienas teikėjas turi skirtingus mechanizmus
- Išbandykite podėlio elgseną: patikrinkite, ar podėlio naudojimas veikia su jūsų pasirinktu teikėju
- Stebėkite sąnaudas: sekite sutaupymą dėl podėlio naudojimo
- Naudokite nuoseklius modelius: modelių keitimas nutraukia podėlio pataikymus
Vertex Anthropic: promptų podėlio naudojimas su podėlio valdymu
Vertex Anthropic (Google Cloud) palaiko promptų podėlio naudojimą su aiškiu podėlio valdymu.
Konfigūracija
$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 kešavimo naudojimas
use Superdav\AI\Providers\VertexAnthropic;
$vertex = new VertexAnthropic( $config );
$response = $vertex->generate(
[
'system_prompt' => 'You are a helpful assistant...',
'context' => 'Large context document...',
'prompt' => 'User question here',
'cache_control' => [
'type' => 'ephemeral',
'max_tokens' => 1000000,
],
]
);
// Response includes cache metrics:
// [
// 'content' => '...',
// 'usage' => [
// 'input_tokens' => 1000,
// 'cache_creation_input_tokens' => 500,
// 'cache_read_input_tokens' => 300,
// ],
// ]
Kešo valdymo tipai
- ephemeral: Kešuoti užklausos trukmei (numatyta)
- persistent: Kešuoti per kelias užklausas (jei palaikoma)
Kešo naudojimo stebėjimas
$response = $vertex->generate( [...] );
$usage = $response['usage'];
$cache_created = $usage['cache_creation_input_tokens'] ?? 0;
$cache_read = $usage['cache_read_input_tokens'] ?? 0;
echo "Cache created: $cache_created tokens\n";
echo "Cache read: $cache_read tokens\n";
Geriausios praktikos Vertex Anthropic
- Naudokite ephemeral kešavimą: Tinka vienos sesijos kešavimui
- Tinkamai nustatykite max_tokens: Subalansuokite kešo dydį ir kainą
- Stebėkite kešo metrikas: Sekite kešo veiksmingumą
- Testuokite su savo darbo krūviu: Patikrinkite, ar kešavimas naudingas jūsų naudojimo atvejui
Kelių tiekėjų kešavimo strategija
Suvienodinta konfigūracija
$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,
],
],
],
],
];
Tiekėjo aptikimas
$provider = $config['provider'];
$cache_config = $config['caching']['providers'][ $provider ]
?? $config['caching'];
// Use provider-specific caching configuration
Atsarginė strategija
try {
// Try caching with primary provider
$response = $primary_provider->generate( $request );
} catch ( CacheException $e ) {
// Fall back to non-cached request
$response = $primary_provider->generate(
array_merge( $request, ['cache_control' => 'no_cache'] )
);
}
Kainos optimizavimas
Sutaupymų skaičiavimas
$cache_created_tokens = $response['cache_creation_input_tokens'] ?? 0;
$cache_read_tokens = $response['cache_read_input_tokens'] ?? 0;
$regular_tokens = $response['input_tokens'] ?? 0;
// Typical pricing (varies by provider):
$cache_creation_cost = $cache_created_tokens * 0.00001; // 10x cheaper
$cache_read_cost = $cache_read_tokens * 0.000001; // 100x cheaper
$regular_cost = $regular_tokens * 0.00001;
$total_cost = $cache_creation_cost + $cache_read_cost + $regular_cost;
$savings = ($regular_tokens * 0.00001) - $total_cost;
echo "Estimated savings: \$$savings\n";
Optimizavimo patarimai
- Kešuokite didelius sistemos promptus: Didžiausias kainos sutaupymas
- Pakartotinai naudokite kontekstą: Kešuokite dažnai naudojamus konteksto dokumentus
- Grupuokite užklausas: Grupuokite panašias užklausas, kad maksimaliai padidintumėte kešo pataikymus
- Stebėkite kešo veiksmingumą: Sekite faktinius sutaupymus
- Koreguokite TTL: Subalansuokite kainą ir naujumą
Trikčių šalinimas
Kešas nenaudojamas
- Patikrinkite, ar kešavimas įjungtas konfigūracijoje
- Patikrinkite, ar promptai identiški (kešavimui reikia tikslaus sutapimo)
- Patikrinkite, ar kešo galiojimas nėra pasibaigęs
- Patikrinkite tiekėjui būdingus kešo apribojimus
Nepavyksta sukurti kešo
- Patikrinkite, ar kešo dydis neviršija tiekėjo apribojimų
- Patikrinkite, ar kešo valdymo sintaksė teisinga
- Įsitikinkite, kad tiekėjas palaiko kešavimą jūsų modeliui
- Peržiūrėkite tiekėjo dokumentaciją dėl apribojimų
Netikėtos išlaidos
- Stebėkite kešo kūrimo ir kešo skaitymo tokenus
- Patikrinkite, ar kešas iš tikrųjų naudojamas
- Patikrinkite, ar nėra kešo nepataikymų dėl promptų variacijų
- Apsvarstykite TTL arba kešavimo strategijos koregavimą
Tiekėjų palyginimas
| Funkcija | Gemini | Azure OpenAI | OpenRouter | Vertex Anthropic |
|---|---|---|---|---|
| Kešo API | cachedContents | HTTP headers | Tiekėjui būdinga | Kešo valdymas |
| TTL valdymas | Aiškus | Per headers | Priklauso nuo tiekėjo | Ephemeral/persistent |
| Maks. kešo dydis | 1M tokenų | Priklauso nuo tiekėjo | Priklauso nuo tiekėjo | 1M tokenų |
| Kainos sumažinimas | 90% | 90% | Priklauso nuo tiekėjo | 90% |
| Stebėjimas | Išsamus | Per metrikas | Priklauso nuo tiekėjo | Per naudojimą |
Kiti veiksmai
- Pasirinkite tiekėją: Pasirinkite pagal savo poreikius
- Sukonfigūruokite kešavimą: Nustatykite tiekėjui būdingą kešavimą
- Ištestuokite kešavimą: Patikrinkite, ar jis veikia su jūsų promptais
- Stebėkite naudojimą: Sekite kešo pataikymus ir kainos sutaupymus
- Optimizuokite: Koreguokite TTL ir kešavimo strategiją pagal rezultatus