Skip to Content

Cached Contents

Gemini ネイティブプロトコルを通じて明示的コンテキストキャッシュ(cachedContents)を管理します:大きなコンテキストを能動的に1つのオブジェクトとしてキャッシュし、リクエスト間で参照することで、ヒットの確定性が高く、課金も低く抑えられます。OfoxAI は Google GenAI SDK と互換性があります。

明示的キャッシュのユースケース、暗黙的キャッシュとの違い、ベストプラクティスは Gemini 明示的キャッシュガイド を参照してください。本ページはエンドポイントレベルの API リファレンスです。

エンドポイント

POST https://api.ofox.ai/gemini/v1beta/cachedContents # 作成 GET https://api.ofox.ai/gemini/v1beta/cachedContents/{id} # 取得 DELETE https://api.ofox.ai/gemini/v1beta/cachedContents/{id} # 削除

キャッシュを参照してコンテンツを生成する場合は、標準の generateContent エンドポイントを使い、リクエストボディに cachedContent フィールドを付けます:

POST https://api.ofox.ai/gemini/v1beta/models/{model}:generateContent

認証

x-goog-api-key Header を使用します:

x-goog-api-key: <あなたの OFOXAI_API_KEY>

リソースフィールド

CachedContent リソースの主なフィールド:

フィールド説明
namestring(読み取り専用)キャッシュハンドル。cachedContents/{id} の形式で、作成後に返されます
modelstring(必須、変更不可)キャッシュが紐付くモデル。例:models/gemini-3.1-pro-preview
contentsarrayキャッシュする内容(generateContent の contents と同じ構造)
systemInstructionobjectキャッシュするシステム指示(任意)
toolsarrayキャッシュするツール定義(任意)
ttlstring存続時間。秒数の文字列(例:"600s")。expireTime とどちらか一方
expireTimestring有効期限の時点(RFC 3339)。ttl とどちらか一方
displayNamestring(変更不可)カスタム名(任意)
usageMetadata.totalTokenCountintegerキャッシュされた token 数(課金に使用)

TTL のサポート範囲:最小 / デフォルト 600s(10分)、最大 3600s(1時間)

キャッシュを作成する

create.py
from google import genai from google.genai import types client = genai.Client( api_key="<あなたの OFOXAI_API_KEY>", http_options={"api_version": "v1beta", "base_url": "https://api.ofox.ai/gemini"}, ) cache = client.caches.create( model="google/gemini-3.1-pro-preview", config=types.CreateCachedContentConfig( contents=[open("knowledge_base.txt").read()], system_instruction="あなたは与えられたドキュメントのみに基づいて回答するアシスタントです。", ttl="600s", display_name="kb-v1", ), ) print(cache.name) # cachedContents/xxxxxxxx print(cache.usage_metadata.total_token_count)

レスポンス

{ "name": "cachedContents/xxxxxxxx", "model": "google/gemini-3.1-pro-preview", "createTime": "2026-06-26T08:00:00Z", "updateTime": "2026-06-26T08:00:00Z", "expireTime": "2026-06-26T08:10:00Z", "displayName": "kb-v1", "usageMetadata": { "totalTokenCount": 14407 } }

取得 / 削除

取得・削除では model を渡す必要はありません。OfoxAI はキャッシュハンドルから上流を特定します。

manage.py
# 単一取得 info = client.caches.get(name=cache.name) print(info.expire_time) # 削除 client.caches.delete(name=cache.name)

キャッシュを参照して生成する

generateContent のリクエストボディに cachedContent フィールドを追加してキャッシュを参照します。contents には今回新しく追加する質問だけを入れます:

use.py
response = client.models.generate_content( model="google/gemini-3.1-pro-preview", contents="上記のドキュメントに基づいて、要点を3つまとめてください", config=types.GenerateContentConfig(cached_content=cache.name), ) print(response.text) print(response.usage_metadata.cached_content_token_count) # ヒットしたキャッシュ token 数

ヒットすると、レスポンスの usageMetadata.cachedContentTokenCount にキャッシュを経由した token 数が表示されます。

課金

ステージ計算式
キャッシュ作成totalTokenCount × cache_write 単価
参照ヒットcachedContentTokenCount × cache_read 単価(標準入力価格の約 0.10x)
参照時の新規コンテンツ今回新しく追加した prompt / 出力は標準価格

各モデルの cache_write / cache_read 単価は モデルカタログ  を参照してください。

OfoxAI は複数の GCP プロジェクト間でロードバランシングを行い、明示的キャッシュはリージョン紐付け(region-scoped)です。OfoxAI はキャッシュハンドルから自動的にキャッシュを作成した上流へハードロックし、参照のドリフトはゼロです。キャッシュハンドルは、それを作成した API Key のみが参照 / 取得 / 削除できます(アカウントをまたいだアクセスは 403 を返します)。詳細は 明示的キャッシュガイド · 確定的ルーティング を参照してください。

関連ドキュメント

Last updated on