प्रदाता-जागरूक प्रॉम्प्ट कैशिंग
Superdav AI Agent v1.12.0 में प्रदाता-जागरूक प्रॉम्प्ट कैशिंग (provider-aware prompt caching) पेश किया गया है, जो विभिन्न LLM प्रदाताओं में प्रॉम्प्ट को कैश करके API लागत और विलंबता (latency) को अनुकूलित करता है। प्रत्येक प्रदाता की कैशिंग तंत्र और कॉन्फ़िगरेशन अलग-अलग होती है।
अवलोकन (Overview)
प्रॉम्प्ट कैशिंग आपको ये करने की अनुमति देती है:
- बड़े, बार-बार उपयोग किए जाने वाले प्रॉम्प्ट को कैश करना
- अनावश्यक प्रोसेसिंग से बचकर API लागत को कम करना
- कैश किए गए अनुरोधों के लिए विलंबता (latency) में सुधार करना
- कैश लाइफसाइकिल को स्पष्ट रूप से प्रबंधित करना
विभिन्न प्रदाता कैशिंग को अलग-अलग तरीके से लागू करते हैं:
- Google Gemini:
cachedContentsAPI - Azure OpenAI: TTL के साथ प्रॉम्प्ट कैशिंग
- OpenRouter: प्रदाता-विशिष्ट कैशिंग
- Vertex Anthropic: कैश कं ट्रोल के साथ प्रॉम्प्ट कैशिंग
Google Gemini: cachedContents API
Google Gemini, cachedContents API के माध्यम से स्पष्ट कैश प्रबंधन प्रदान करता है।
कॉन्फ़िगरेशन (Configuration)
$config = [
'provider' => 'google-gemini',
'model' => 'gemini-2.0-flash',
'caching' => [
'enabled' => true,
'ttl' => 3600, // 1 घंटे को सेकंड में
'max_tokens' => 1000000, // कैश करने के लिए अधिकतम टोकन
],
];
कैश किया गया प्रॉम्प्ट बनाना (Creating a Cached Prompt)
use Superdav\AI\Providers\GoogleGemini;
$gemini = new GoogleGemini( $config );
$cached_content = $gemini->create_cached_content(
[
'system_prompt' => 'आप एक सहायक सहायक हैं...',
'context' => 'बड़ा संदर्भ दस्तावेज़...',
'ttl' => 3600,
]
);
// रिटर्न करता है: ['cache_id' => 'abc123', 'expires_at' => timestamp]
कैश किया गया प्रॉम्प्ट का उपयोग करना (Using a Cached Prompt)
$response = $gemini->generate(
[
'cache_id' => 'abc123',
'prompt' => 'उपयोगकर्ता का प्रश्न यहाँ',
]
);
कैश लाइफसाइकिल (Cache Lifecycle)
// कैश किए गए कंटेंट को सूचीबद्ध करें
$caches = $gemini->list_cached_contents();
// कैश विवरण प्राप्त करें
$cache = $gemini->get_cached_content( 'abc123' );
// कैश TTL बढ़ाएँ
$gemini->update_cached_content(
'abc123',
['ttl' => 7200] // 2 घंटे तक बढ़ाएँ
);
// कैश हटाएं
$gemini->delete_cached_content( 'abc123' );
Gemini के लिए सर्वोत्तम अभ्यास (Best Practices for Gemini)
- उपयुक्त TTL सेट करें: लागत बचत बनाम कैश की पुरानी होने की स्थिति को संतुलित करें
- सिस्टम प्रॉम्प्ट को कैश करें: अनुरोधों में एक ही सिस्टम प्रॉम्प्ट का पुन: उपयोग करें
- कैश उपयोग की निगरानी करें: ट्रैक करें कि कौन से कैश सबसे अधिक उपयोग किए जाते हैं
- समाप्त हो चुके कैश को साफ़ करें: समय-समय पर अनुपयोगी कैश को हटाएं
Azure OpenAI: प्रॉम्प्ट कैशिंग
Azure OpenAI स्वचालित TTL प्रबंधन के साथ प्रॉम्प्ट कैशिंग का समर्थन करता है।
कॉन्फ़िगरेशन (Configuration)
$config = [
'provider' => 'azure-openai',
'model' => 'gpt-4-turbo',
'api_version' => '2024-08-01-preview',
'caching' => [
'enabled' => true,
'cache_control' => 'max_age=3600',
],
];
कैशिंग सक्षम करना (Enabling Caching)
use Superdav\AI\Providers\AzureOpenAI;
$azure = new AzureOpenAI( $config );
$response = $azure->generate(
[
'system_prompt' => 'आप एक सहायक सहायक हैं...',
'context' => 'बड़ा संदर्भ दस्तावेज़...',
'prompt' => 'उपयोगकर ्ता का प्रश्न यहाँ',
'cache_control' => 'max_age=3600',
]
);
// प्रतिक्रिया में कैश उपयोग शामिल है:
// [
// 'content' => '...',
// 'cache_creation_input_tokens' => 1000,
// 'cache_read_input_tokens' => 500,
// ]
कैश हेडर (Cache Headers)
Azure OpenAI कैश नियंत्रण के लिए HTTP हेडर का उपयोग करता है:
Cache-Control: max_age=3600
समर्थित मान (Supported values):
max_age=<seconds>: निर्दिष्ट अवधि के लिए कैश करेंno_cache: इस अनुरोध को कैश न करेंno_store: कैश न करें और पुन: उपयोग न करें
कैश उपयोग की निगरानी करना (Monitoring Cache Usage)
$response = $azure->generate( [...] );
$cache_tokens = $response['cache_creation_input_tokens'] ?? 0;
$cache_hits = $response['cache_read_input_tokens'] ?? 0;
echo "कैश निर्माण: $cache_tokens टोकन\n";
echo "कैश हिट: $cache_hits टोकन\n";
Azure OpenAI के लिए सर्वोत्तम अभ्यास (Best Practices for Azure OpenAI)
- संगत प्रॉम्प्ट का उपयोग करें: समान प्रॉम्प्ट कैशिंग से लाभान्वित होते हैं
- उचित TTL सेट करें: लागत बनाम ताजगी को संतुलित करें
- कैश मेट्रिक्स की निगरानी करें: कैश निर्माण बनाम हिट ट्रैक करें
- समान अनुरोधों को बैच करें: कैश हिट को अधिकतम करने के लिए अनुरोधों को समूहित करें
OpenRouter: प्रदाता-विशिष्ट कैशिंग
OpenRouter अंतर्निहित प्रदाताओं (OpenAI, Anthropic, आदि) के माध्यम से कैशिंग का समर्थन करता है।
कॉन्फ़िगरेशन (Configuration)
$config = [
'provider' => 'openrouter',
'model' => 'openai/gpt-4-turbo',
'caching' => [
'enabled' => true,
'provider_cache' => 'openai', // OpenAI की कैशिंग का उपयोग करें
],
];
OpenRouter कैशिंग का उपयोग करना (Using OpenRouter Caching)
use Superdav\AI\Providers\OpenRouter;
$router = new OpenRouter( $config );
$response = $router->generate(
[
'system_prompt' => 'आप एक सहायक सहायक हैं...',
'context' => 'बड़ा संदर्भ दस्तावेज़...',
'prompt' => 'उपयोगकर्ता का प्रश्न यहाँ',
'cache_control' => 'max_age=3600',
]
);