プロバイダー対応のプロンプトキャッシュ
Superdav AI Agent v1.12.0では、プロバイダー対応のプロンプトキャッシュが導入されました。これは、複数のLLMプロバイダーにまたがってプロンプトをキャッシュすることで、APIコストとレイテンシを 最適化します。プロバイダーごとにキャッシュの仕組みや設定が異なります。
概要
プロンプトキャッシュを利用すると、以下のことが可能になります。
- 大容量で頻繁に使用するプロンプトをキャッシュできる
- 冗長な処理を避けることで、APIコストを削減できる
- キャッシュされたリクエストのレイテンシを改善できる
- キャッシュのライフサイクルを明示的に管理できる
プロバイダーによってキャッシュの実装が異なります。
- Google Gemini:
cachedContentsAPIを使用 - Azure OpenAI: TTL(Time To Live)によるプロンプトキャッシュ
- OpenRouter: プロバイダー固有のキャッシュ機能
- Vertex Anthropic: キャッシュ制御(cache control)によるプロンプトキャッシュ
Google Gemini: cachedContents API
Google Geminiでは、cachedContents APIを通じて明示的なキャッシュ管理が可能です。
設定
$config = [
'provider' => 'google-gemini',
'model' => 'gemini-2.0-flash',
'caching' => [
'enabled' => true,
'ttl' => 3600, // 1時間(秒)
'max_tokens' => 1000000, // キャッシュする最大トークン数
],
];
キャッシュされたプロンプトの作成
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]
キャッシュされたプロンプトの使用
$response = $gemini->generate(
[
'cache_id' => 'abc123',
'prompt' => 'ユーザーの質問はこちら',
]
);
キャッシュのライフサイクル管理
// キャッシュされたコンテンツを一覧表示
$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でのベストプラクティス
- 適切なTTLを設定する: コスト削減とキャッシュの陳腐化のバランスを取る
- システムプロンプトをキャッシュする: リクエスト間で同じシステムプロンプトを再利用する
- キャッシュの使用状況を監視する: どのキャッシュが最も使用されているかを追跡する
- 期限切れのキャッシュをクリーンアップする: 定期的に未使用のキャッシュを削除する