コンテンツにスキップ

Geminiによるコンテキストキャッシュ

ADKでサポートPython v1.15.0Java v0.1.0Kotlin v0.7.0

エージェントを使用してタスクを完了する場合、拡張された指示や大規模なデータセットを複数のエージェントリクエストにわたって生成AIモデルに再利用したい場合があります。エージェントリクエストごとにこのデータを再送信すると、時間がかかり、非効率的で、コストがかかる可能性があります。生成AIモデルでコンテキストキャッシュ機能を使用すると、応答を大幅に高速化し、リクエストごとにモデルに送信されるトークンの数を減らすことができます。

ADKコンテキストキャッシュ機能を使用すると、Gemini 2.0以降のモデルを含む、それをサポートする生成AIモデルでリクエストデータをキャッシュできます。このドキュメントでは、この機能の構成方法と使用方法について説明します。

コンテキストキャッシュの構成

エージェントをラップするADK Appオブジェクトレベルでコンテキストキャッシュ機能を構成します。次のコードサンプルに示すように、ContextCacheConfigクラスを使用してこれらの設定を構成します。

from google.adk import Agent
from google.adk.apps.app import App
from google.adk.agents.context_cache_config import ContextCacheConfig

root_agent = Agent(
  # Gemini 2.0以降を使用するエージェントを構成する
)

# コンテキストキャッシュ構成でアプリを作成する
app = App(
    name='my-caching-agent-app',
    root_agent=root_agent,
    context_cache_config=ContextCacheConfig(
        min_tokens=2048,    # キャッシュをトリガーする最小トークン
        ttl_seconds=600,    # 最大10分間保存
        cache_intervals=5,  # 5回使用後に更新
    ),
)
import com.google.adk.agents.BaseAgent;
import com.google.adk.agents.ContextCacheConfig;
import com.google.adk.apps.App;
import java.time.Duration;

// コンテキストキャッシュ構成で App を作成する
App app = App.builder()
             .name("my-caching-agent-app")
             .rootAgent(rootAgent)
             .contextCacheConfig(
                 new ContextCacheConfig(
                     5, /* cache_intervals(最大呼び出し回数) */
                     Duration.ofMinutes(10), /* ttl */
                     2048 /* min_tokens */))
             .build();
@file:OptIn(ExperimentalContextCachingFeature::class)

import com.google.adk.kt.agents.ContextCacheConfig
import com.google.adk.kt.agents.LlmAgent
import com.google.adk.kt.annotations.ExperimentalContextCachingFeature
import com.google.adk.kt.apps.App
import com.google.adk.kt.models.Gemini
import kotlin.time.Duration.Companion.minutes

val rootAgent =
    LlmAgent(
        name = "my_caching_agent",
        // configure an agent using Gemini 2.0 or higher
        model = Gemini(name = "gemini-flash-latest"),
    )

// Create the app with context caching configuration
val app =
    App(
        appName = "my-caching-agent-app",
        rootAgent = rootAgent,
        contextCacheConfig =
            ContextCacheConfig(
                // Gemini enforces a hard 4096-token floor of its own, so only a
                // value above that has any further effect.
                minTokens = 8192,
                ttl = 10.minutes, // Store for up to 10 minutes
                cacheIntervals = 5, // Refresh after 5 uses
            ),
    )

構成設定

ContextCacheConfigクラスには、エージェントのキャッシュの動作を制御する次の設定があります。これらの設定を構成すると、アプリ内のすべてのエージェントに適用されます。

  • min_tokens(int):キャッシュを有効にするためにリクエストで必要な最小トークン数。この設定により、パフォーマンス上の利点がごくわずかである非常に小さなリクエストのキャッシュのオーバーヘッドを回避できます。デフォルトは0です。
  • ttl_seconds(int):キャッシュの存続時間(TTL)(秒)。この設定は、キャッシュされたコンテンツが更新される前に保存される期間を決定します。デフォルトは1800(30分)です。
  • cache_intervals(int):同じキャッシュされたコンテンツが期限切れになる前に使用できる最大回数。この設定により、TTLが期限切れになっていなくても、キャッシュが更新される頻度を制御できます。デフォルトは10です。

次のステップ

コンテキストキャッシュ機能の使用方法とテスト方法の完全な実装については、次のサンプルを参照してください。

  • cache_analysis: コンテキストキャッシュのパフォーマンスを分析する方法を示すコードサンプル。

ユースケースでセッション全体で使用される指示を提供する必要がある場合は、エージェントのstatic_instructionパラメータの使用を検討してください。これにより、生成モデルのシステム指示を修正できます。詳細については、次のサンプルコードを参照してください。

  • static_instruction: 静的な指示を使用したデジタルペットエージェントの実装。