# ADK 2.0の便利だけど知られていない機能
🌍 毎回同じシステムプロンプトやツール定義をLLMに送信するのは、コストもレイテンシも無駄だと感じませんか?
ADK 2.0のコンテキストキャッシュ(ContextCacheConfig)は、繰り返し送信されるコンテキストデータをキャッシュし、LLMの呼び出しコストとレイテンシを削減する機能です。Gemini 2.0以降、Python v1.15.0以降、Java v0.1.0以降で利用可能です。
📌 タイトル:コンテキストキャッシュ (ContextCacheConfig)
🔗 URL:
🧩 概要
ContextCacheConfigは、LLMに送信するコンテキスト(システムプロンプト、ツール定義、会話履歴の固定部分など)をキャッシュすることで、トークン消費を削減します。3つの主要パラメータがあります。min_tokensはキャッシュを有効にするための最小トークン数のしきい値(デフォルト0)、ttl_secondsはキャッシュの有効期限(デフォルト1800秒=30分)、cache_intervalsはキャッシュの最大再利用回数(デフォルト10回)です。これらをAppオブジェクトに設定することで、自動的にキャッシュが適用されます。
🛠 使い方
ContextCacheConfigを作成し、Appに設定します。
```python
from import App
from google.adk.context import ContextCacheConfig
cache_config = ContextCacheConfig(
min_tokens=1000, # 1000トークン以上でキャッシュ有効
ttl_seconds=3600, # 1時間キャッシュを保持
cache_intervals=20, # 最大20回再利用
)
app = App(
agent=my_agent,
context_cache_config=cache_config,
)
```
min_tokensを適切に設定することで、小さなコンテキストでは通常送信し、大きなコンテキストのみキャッシュするように制御できます。
🏗 本番システムへの組み込み方
・大きなシステムプロンプトや多数のツール定義を持つエージェントで特にコスト効果が高い
・ttl_secondsをワークロードのパターンに合わせて調整する(短い会話→短いTTL、長い会話→長いTTL)
・cache_intervalsをリクエスト頻度に応じて設定し、キャッシュの鮮度とコスト削減のバランスを取る
・コスト削減効果をモニタリングし、パラメータを継続的に最適化する
💡 ユースケース
💰 大規模なシステムプロンプトを持つエージェントのAPI呼び出しコストを削減
⚡ 繰り返しのツール定義送信を省略してレスポンスレイテンシを改善
🔁 高頻度のリクエストが発生するチャットボットでトークン消費を最適化
📋 固定的なコンテキスト(ルール、ガイドライン等)の再送信を効率化
⚠️ 注意点
Gemini 2.0以降のモデルでのみ利用可能です。キャッシュが有効な間はコンテキストの変更が反映されないため、頻繁にシステムプロンプトを変更する場合はttl_secondsを短く設定してください。また、cache_intervalsを超えると新しいキャッシュが作成されるため、コスト最適化の効果が変動する可能性があります。
✨ コンテキストキャッシュは、特にコンテキストが大きく頻繁にリクエストされるシナリオで、コストとパフォーマンスの両面で大きな改善をもたらします。
#
ADK# #
AIAgent#