Skip to main content

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: cachedContents API
  • 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ėlyje
  • no_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

FunkcijaGeminiAzure OpenAIOpenRouterVertex Anthropic
Kešo APIcachedContentsHTTP headersTiekėjui būdingaKešo valdymas
TTL valdymasAiškusPer headersPriklauso nuo tiekėjoEphemeral/persistent
Maks. kešo dydis1M tokenųPriklauso nuo tiekėjoPriklauso nuo tiekėjo1M tokenų
Kainos sumažinimas90%90%Priklauso nuo tiekėjo90%
StebėjimasIšsamusPer metrikasPriklauso nuo tiekėjoPer naudojimą

Kiti veiksmai

  1. Pasirinkite tiekėją: Pasirinkite pagal savo poreikius
  2. Sukonfigūruokite kešavimą: Nustatykite tiekėjui būdingą kešavimą
  3. Ištestuokite kešavimą: Patikrinkite, ar jis veikia su jūsų promptais
  4. Stebėkite naudojimą: Sekite kešo pataikymus ir kainos sutaupymus
  5. Optimizuokite: Koreguokite TTL ir kešavimo strategiją pagal rezultatus