ပံ့ပိုးပေးသူအလိုက် သိရှိသော Prompt Caching
Superdav AI Agent v1.12.0 မှာ provider-aware prompt caching ကိ ု မိတ်ဆက်ပေးလိုက်ပါတယ်။ ဒီအင်္ဂါရပ်က LLM ပံ့ပိုးပေးသူ (providers) အမျိုးမျိုးမှာ prompt တွေကို cache လုပ်ပေးခြင်းအားဖြင့် API ကုန်ကျစရိတ်နဲ့ အချိန်နှောင့်နှေးမှု (latency) တွေကို အကောင်းဆုံးဖြစ်အောင် လုပ်ဆောင်ပေးပါတယ်။ ပံ့ပိုးပေးသူ တစ်ခုချင်းစီမှာ cache လုပ်တဲ့ ယန္တရားနဲ့ စနစ်ဖွဲ့စည်းမှုတွေ မတူညီပါဘူး။
အကျဉ်းချုပ် (Overview)
Prompt caching ကို အသုံးပြုခြင်းအားဖြင့် အောက်ပါအရာများကို လုပ်ဆောင်နိုင်ပါတယ်-
- မကြာခဏ အသုံးပြုရတဲ့ prompt ကြီးတွေကို cache လုပ်ထားနိုင်ခြင်း
- ထပ်ခါထပ်ခါ လုပ်ဆောင်ရတဲ့ အလုပ်တွေကို ရှောင်ရှားခြင်းအားဖြင့် API ကုန်ကျစရိတ်ကို လျှော့ချနိုင်ခြင်း
- cache လုပ်ထားတဲ့ request တွေအတွက် အချိန်နှောင့်နှေးမှု (latency) ကို မြှင့်တင်ပေးနိုင်ခြင်း
- cache ရဲ့ ဘဝသ ံသရာ (lifecycle) ကို ကိုယ်တိုင် စီမံခန့်ခွဲနိုင်ခြင်း
ပံ့ပိုးပေးသူ အမျိုးမျိုးက cache လုပ်တဲ့ နည်းလမ်းတွေကို မတူညီစွာ အကောင်အထည်ဖော်ထားပါတယ်-
- Google Gemini:
cachedContentsAPI ကို အသုံးပြုသည် - Azure OpenAI: TTL (Time To Live) နဲ့ Prompt caching ကို အသုံးပြုသည်
- OpenRouter: ပံ့ပိုးပေးသူအလိုက် cache လုပ်သည်
- Vertex Anthropic: Cache control နဲ့ Prompt caching ကို အသုံးပြုသည်
Google Gemini: cachedContents API
Google Gemini က cachedContents API ကို အသုံးပြုပြီး cache ကို ရှင်းရှင်းလင်းလင်း စီမံခန့်ခွဲနိုင်ပါတယ်။
စနစ်ဖွဲ့စည်းမှု (Configuration)
$config = [
'provider' => 'google-gemini',
'model' => 'gemini-2.0-flash',
'caching' => [
'enabled' => true,
'ttl' => 3600, // စက္ကန့် ၁ နာရီ
'max_tokens' => 1000000, // cache လုပ်နိုင်တဲ့ အများဆုံး tokens
],
];
Cache လုပ်ထားတဲ့ Prompt တစ်ခုကို ဖန်တီးခြင်း (Creating a Cached Prompt)
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,
]
);
// ပြန်ရသည်: ['cache_id' => 'abc123', 'expires_at' => timestamp]
Cache လုပ်ထားတဲ့ Prompt ကို အသုံးပြုခြင်း (Using a Cached Prompt)
$response = $gemini->generate(
[
'cache_id' => 'abc123',
'prompt' => 'User question here',
]
);
Cache ဘဝသံသရာ (Cache Lifecycle)
// cache လုပ်ထားတဲ့ အကြောင်းအရာတွေကို စာရင်းထုတ်ခြင်း
$caches = $gemini->list_cached_contents();
// cache အသေးစိတ်အချက်အလက် ရယူခြင်း
$cache = $gemini->get_cached_content( 'abc123' );
// cache TTL ကို တိုးမြှင့်ခြင်း
$gemini->update_cached_content(
'abc123',
['ttl' => 7200] // ၂ နာရီအထိ တိုးမြှင့်သည်
);
// cache ဖျက်ခြင်း
$gemini->delete_cached_content( 'abc123' );
Gemini အတွက် အကောင်းဆုံး လုပ်ဆောင်မှုများ (Best Practices for Gemini)
- သင့်တော်တဲ့ TTL ကို သတ်မှတ်ပါ: ကုန်ကျစ ရိတ်သက်သာမှုနဲ့ cache ဟောင်းနွမ်းမှုကြား မျှတအောင် လုပ်ပါ။
- System prompts တွေကို cache လုပ်ပါ: request အများအပြားမှာ တူညီတဲ့ system prompt ကို ပြန်လည်အသုံးပြုပါ။
- Cache အသုံးပြုမှုကို စောင့်ကြည့်ပါ: ဘယ် cache တွေက အများဆုံး အသုံးပြုလဲဆိုတာ စစ်ဆေးပါ။
- သက်တမ်းကုန်တဲ့ cache တွေကို ရှင်းလင်းပါ: အသုံးမပြုတော့တဲ့ cache တွေကို ပုံမှန်ဖျက်ပေးပါ။
Azure OpenAI: Prompt Caching
Azure OpenAI က automatic TTL စီမံခန့်ခွဲမှုနဲ့ prompt caching ကို ပံ့ပိုးပေးပါတယ်။
စနစ်ဖွဲ့စည်းမှု (Configuration)
$config = [
'provider' => 'azure-openai',
'model' => 'gpt-4-turbo',
'api_version' => '2024-08-01-preview',
'caching' => [
'enabled' => true,
'cache_control' => 'max_age=3600',
],
];
Caching ကို ဖွင့်ခြင်း (Enabling Caching)
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 မှာ cache အသုံးပြုမှု ပါဝင်ပါတယ်:
// [
// 'content' => '...',
// 'cache_creation_input_tokens' => 1000,
// 'cache_read_input_tokens' => 500,
// ]
Cache Headers များ (Cache Headers)
Azure OpenAI က cache ထိန်းချုပ်မှုအတွက် HTTP headers တွေကို အသုံးပြုပါတယ်-
Cache-Control: max_age=3600
ပံ့ပိုးထားတဲ့ တန်ဖိုးများ (Supported values):
max_age=<seconds>: သတ်မှတ်ထားတဲ့ ကာလအတွင်း cache လုပ်ထားမည်no_cache: ဒီ request ကို cache မလုပ်ပါနဲ့no_store: cache မလုပ်ဘဲ ပြန်အသုံးပြုတာမျိုးလည်း မလုပ်ပါနဲ့
Cache အသုံးပြုမှုကို စောင့်ကြည့်ခြင်း (Monitoring Cache Usage)
$response = $azure->generate( [...] );
$cache_tokens = $response['cache_creation_input_tokens'] ?? 0;
$cache_hits = $response['cache_read_input_tokens'] ?? 0;
echo "Cache ဖန်တီးမှု: $cache_tokens tokens\n";
echo "Cache အသုံးပြုမှု: $cache_hits tokens\n";
Azure OpenAI အတွက် အကောင်းဆုံး လုပ်ဆောင်မှုများ (Best Practices for Azure OpenAI)
- တသမတ်တည်း prompt များကို အသုံးပြုပါ: တူညီတဲ့ prompt တွေက cache လုပ်တာကို အကျိုးရှိစေပါတယ်။
- သင့်တင့်တဲ့ TTL ကို သတ်မှတ်ပါ: ကုန်ကျစရိတ်နဲ့ အသစ်ဖြစ်မှုကြား မျှတအောင် လုပ်ပါ။
- Cache metrics တွေကို စောင့်ကြည့်ပါ: cache ဖန်တီးမှုနဲ့ အသုံးပြုမှုတွေကို စစ်ဆေးပါ။
- request တွေကို အစုအဝေးအဖြစ် လုပ်ပါ: cache hit တွေကို အများဆုံးရဖို့ request တွေကို အုပ်စုဖွဲ့ပါ။
OpenRouter: Provider-Specific Caching
OpenRouter က အောက်ခံ ပံ့ပိုးပေးသူတွ ေ (OpenAI, Anthropic စသည်) ကနေတစ်ဆင့် cache ကို ပံ့ပိုးပေးပါတယ်။
စနစ်ဖွဲ့စည်းမှု (Configuration)
$config = [
'provider' => 'openrouter',
'model' => 'openai/gpt-4-turbo',
'caching' => [
'enabled' => true,
'provider_cache' => 'openai', // OpenAI ရဲ့ caching ကို အသုံးပြုမည်
],
];
OpenRouter Caching ကို အသုံးပြုခြင်း (Using OpenRouter Caching)
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',
]
);
ပံ့ပိုးပေးသူအလိုက် ရွေးချယ်စရာများ (Provider-Specific Options)
ပံ့ပိုးပေးသူ အမျိုးမျိုးမှာ cache လုပ်တဲ့ ယန္တရားတွေ မတူညီပါဘူး-
// OpenAI နဲ့ ကိုက်ညီတဲ့ caching
$response = $router->generate(
[
'model' => 'openai/gpt-4-turbo',
'cache_control' => 'max_age=3600',
]
);
// Anthropic နဲ့ ကိုက်ညီတဲ့ caching
$response = $router->generate(
[
'model' => 'anthropic/claude-3-opus',
'cache_control' => [
'type' => 'ephemeral',
'max_tokens' => 1000000,
],
]
);
OpenRouter အတွက် အကောင်းဆုံး လုပ်ဆောင်မှုများ (Best Practices for OpenRouter)
- သင့်ပံ့ပိုးပေးသူရဲ့ caching ကို သိပါ: ပံ့ပိုးပေးသူ တစ်ခုချင်းစီမှာ ယန္တရား မတူပါဘူး။
- Caching အပြုအမူကို စမ်းသပ်ပါ: ရွေးချယ်ထားတဲ့ ပံ့ပိုးပေးသူနဲ့ cache လုပ်တာ အဆင်ပြေရဲ့လားဆိုတာ စစ်ဆေးပါ။
- ကုန်ကျစရိတ်ကို စောင့်ကြည့်ပါ: cache လုပ်ခြင်းကနေ ဘယ်လောက်သက်သာလဲဆိုတာ စစ်ဆေးပါ။
- တသမတ်တည်း model တွေကို အသုံးပြုပါ: model ပြောင်းလဲတာက cache hit တွေကို ပျက်စေပါတယ်။
Vertex Anthropic: Cache Control နဲ့ Prompt Caching
Vertex Anthropic (Google Cloud) က explicit cache control နဲ့ prompt caching ကို ပံ့ပိုးပေးပါတယ်။