Skip to main content

Нийлүүлэгчийг харгалздаг сануулгын кэшлэлт

Superdav AI Agent v1.12.0 нь нийлүүлэгчийг харгалздаг сануулгын кэшлэлт-ийг танилцуулж байгаа бөгөөд энэ нь өөр өөр LLM нийлүүлэгчдийн хооронд сануулгуудыг кэшлэснээр API зардал болон хоцролтыг оновчилдог. Нийлүүлэгч бүр өөр өөр кэшлэх механизм болон тохиргоотой.

Тойм

Сануулгын кэшлэлт танд дараах боломжийг олгоно:

  • Том, байнга ашиглагддаг сануулгуудыг кэшлэх
  • Давхардсан боловсруулалтаас зайлсхийж API зардлыг бууруулах
  • Кэшлэгдсэн хүсэлтүүдийн хоцролтыг сайжруулах
  • Кэшийн амьдралын мөчлөгийг ил тод удирдах

Өөр өөр нийлүүлэгчид кэшлэлтийг өөр өөрөөр хэрэгжүүлдэг:

  • Google Gemini: cachedContents API
  • Azure OpenAI: TTL-тэй сануулгын кэшлэлт
  • OpenRouter: Нийлүүлэгчид тусгайлсан кэшлэлт
  • Vertex Anthropic: Кэшийн хяналттай сануулгын кэшлэлт

Google Gemini: cachedContents API

Google Gemini нь cachedContents API-аар дамжуулан кэшийн ил тод удирдлагыг хангадаг.

Тохиргоо

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

Кэшлэгдсэн сануулга үүсгэх

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]

Кэшлэгдсэн сануулга ашиглах

$response = $gemini->generate(
[
'cache_id' => 'abc123',
'prompt' => 'User question here',
]
);

Кэшийн амьдралын мөчлөг

// 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' );

Gemini-д зориулсан шилдэг туршлагууд

  • Тохиромжтой TTL тохируулах: Зардлын хэмнэлт ба кэшийн хуучралтын тэнцвэрийг барих
  • Системийн сануулгуудыг кэшлэх: Хүсэлтүүдийн хооронд ижил системийн сануулгыг дахин ашиглах
  • Кэшийн хэрэглээг хянах: Аль кэшүүд хамгийн их ашиглагдаж байгааг мөрдөх
  • Хугацаа нь дууссан кэшүүдийг цэвэрлэх: Ашиглагдаагүй кэшүүдийг үе үе устгах

Azure OpenAI: Сануулгын кэшлэлт

Azure OpenAI нь автомат TTL удирдлагатай сануулгын кэшлэлтийг дэмждэг.

Тохиргоо

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

Кэшлэлтийг идэвхжүүлэх

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,
// ]

Кэшийн толгойнууд

Azure OpenAI нь кэшийн хяналтад HTTP толгойнуудыг ашигладаг:

Cache-Control: max_age=3600

Дэмжигдэх утгууд:

  • max_age=<seconds>: Заасан хугацаанд кэшлэх
  • no_cache: Энэ хүсэлтийг кэшлэхгүй
  • no_store: Кэшлэхгүй бөгөөд дахин ашиглахгүй

Кэшийн хэрэглээг хянах

$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";

Azure OpenAI-д зориулсан шилдэг туршлагууд

  • Тогтвортой сануулгууд ашиглах: Ижил сануулгууд кэшлэлтээс ашиг хүртэнэ
  • Боломжийн TTL тохируулах: Зардал ба шинэлэг байдлын тэнцвэрийг барих
  • Кэшийн хэмжүүрүүдийг хянах: Кэш үүсгэлт ба оноолтыг мөрдөх
  • Төстэй хүсэлтүүдийг багцлах: Кэшийн оноолтыг дээд хэмжээнд хүргэхийн тулд хүсэлтүүдийг бүлэглэх

OpenRouter: Нийлүүлэгчид тусгайлсан кэшлэлт

OpenRouter нь суурь нийлүүлэгчдээр (OpenAI, Anthropic гэх мэт) дамжуулан кэшлэлтийг дэмждэг.

Тохиргоо

$config = [
'provider' => 'openrouter',
'model' => 'openai/gpt-4-turbo',
'caching' => [
'enabled' => true,
'provider_cache' => 'openai', // Use OpenAI's caching
],
];

OpenRouter кэшлэлт ашиглах

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',
]
);

Нийлүүлэгчид тусгайлсан сонголтууд

Өөр өөр нийлүүлэгчид өөр өөр кэшлэх механизмтай:

// 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,
],
]
);

OpenRouter-д зориулсан шилдэг туршлагууд

  • Өөрийн нийлүүлэгчийн кэшлэлтийг мэдэх: Нийлүүлэгч бүр өөр өөр механизмтай
  • Кэшлэлтийн үйлдлийг турших: Сонгосон нийлүүлэгчтэйгээ кэшлэлт ажиллаж байгааг баталгаажуулах
  • Зардлыг хянах: Кэшлэлтийн хэмнэлтийг мөрдөх
  • Тогтвортой загварууд ашиглах: Загвар солих нь кэшийн оноолтыг тасалдуулдаг

Vertex Anthropic: Кэшийн хяналттай сануулгын кэшлэлт

Vertex Anthropic (Google Cloud) нь ил тод кэшийн хяналттай сануулгын кэшлэлтийг дэмждэг.

Тохиргоо

$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 кэшийг ашиглах

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,
// ],
// ]

Кэшийн хяналтын төрлүүд

  • ephemeral: Хүсэлтийн үргэлжлэх хугацаанд кэшлэх (өгөгдмөл)
  • persistent: Олон хүсэлтийн хооронд кэшлэх (дэмжигдсэн бол)

Кэш ашиглалтыг хянах

$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";

Vertex Anthropic-д зориулсан шилдэг туршлагууд

  • Түр кэшлэлтийг ашиглах: Нэг сессийн кэшлэлтийн хувьд тохиромжтой
  • max_tokens-ийг тохиромжтой тохируулах: Кэшийн хэмжээ ба зардлын тэнцвэрийг хадгалах
  • Кэшийн хэмжүүрүүдийг хянах: Кэшийн үр нөлөөг хянах
  • Өөрийн ажлын ачааллаар турших: Кэшлэлт таны хэрэглээний тохиолдолд ашигтай эсэхийг баталгаажуулах

Нийлүүлэгч хоорондын кэшлэлтийн стратеги

Нэгдсэн тохиргоо

$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 = $config['provider'];

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

// Use provider-specific caching configuration

Нөөц стратеги

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'] )
);
}

Зардлын оновчлол

Хэмнэлтийг тооцоолох

$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";

Оновчлолын зөвлөмжүүд

  • Том системийн prompt-уудыг кэшлэх: Хамгийн их зардал хэмнэнэ
  • Контекстийг дахин ашиглах: Түгээмэл ашиглагддаг контекст баримт бичгүүдийг кэшлэх
  • Хүсэлтүүдийг багцлах: Кэш тааралтыг нэмэгдүүлэхийн тулд төстэй хүсэлтүүдийг бүлэглэх
  • Кэшийн үр нөлөөг хянах: Бодит хэмнэлтийг хянах
  • TTL-ийг тохируулах: Зардал ба шинэлэг байдлын тэнцвэрийг хадгалах

Алдааг олж засварлах

Кэш ашиглагдахгүй байна

  • Тохиргоонд кэшлэлт идэвхжсэн эсэхийг шалгах
  • Prompt-ууд яг ижил байгаа эсэхийг шалгах (кэшлэлтэд яг таарах шаардлагатай)
  • Кэшийн хугацаа дуусаагүй эсэхийг шалгах
  • Нийлүүлэгчийн тусгай кэшийн хязгааруудыг шалгах

Кэш үүсгэхэд алдаа гарч байна

  • Кэшийн хэмжээ нийлүүлэгчийн хязгаарын дотор байгаа эсэхийг шалгах
  • Кэшийн хяналтын синтакс зөв эсэхийг шалгах
  • Нийлүүлэгч таны model-д кэшлэлтийг дэмждэг эсэхийг баталгаажуулах
  • Хязгаарлалтуудын талаар нийлүүлэгчийн баримт бичгийг хянах

Гэнэтийн зардал

  • Кэш үүсгэх токен ба кэш унших токеныг хянах
  • Кэш үнэхээр ашиглагдаж байгаа эсэхийг баталгаажуулах
  • Prompt-ийн хувилбаруудаас болж кэш таарахгүй байгаа эсэхийг шалгах
  • TTL эсвэл кэшийн стратегийг тохируулахыг бодолцох

Нийлүүлэгчдийн харьцуулалт

ОнцлогGeminiAzure OpenAIOpenRouterVertex Anthropic
Кэшийн APIcachedContentsHTTP headersНийлүүлэгчийн тусгайКэшийн хяналт
TTL хяналтИл тодHeader-уудаарНийлүүлэгчээс хамаарнаТүр/байнгын
Кэшийн дээд хэмжээ1M токенНийлүүлэгчээс хамаарнаНийлүүлэгчээс хамаарна1M токен
Зардлын бууралт90%90%Нийлүүлэгчээс хамаарна90%
ХяналтДэлгэрэнгүйХэмжүүрүүдээрНийлүүлэгчээс хамаарнаАшиглалтаар

Дараагийн алхмууд

  1. Нийлүүлэгчээ сонгох: Өөрийн хэрэгцээнд үндэслэн сонгох
  2. Кэшлэлтийг тохируулах: Нийлүүлэгчийн тусгай кэшлэлтийг тохируулах
  3. Кэшлэлтийг турших: Энэ нь таны prompt-уудтай ажиллаж буй эсэхийг баталгаажуулах
  4. Ашиглалтыг хянах: Кэш тааралт болон зардлын хэмнэлтийг хянах
  5. Оновчлох: Үр дүнд үндэслэн TTL болон кэшийн стратегийг тохируулах