Membuat cache konteks

Anda harus membuat cache konteks sebelum dapat menggunakannya. Cache konteks yang Anda buat berisi data dalam jumlah besar yang dapat Anda gunakan dalam beberapa permintaan ke model Gemini. Konten yang di-cache disimpan di region tempat Anda membuat permintaan untuk membuat cache.

Konten dalam cache dapat berupa jenis MIME apa pun yang didukung oleh model multimodal Gemini. Misalnya, Anda dapat menyimpan teks, audio, atau video dalam jumlah besar ke dalam cache. Anda dapat menentukan lebih dari satu file untuk di-cache. Untuk informasi selengkapnya, lihat persyaratan media berikut:

Anda menentukan konten yang akan di-cache menggunakan blob, teks, atau jalur ke file yang disimpan di bucket Cloud Storage. Jika ukuran konten yang Anda simpan dalam cache lebih dari 10 MB, Anda harus menentukannya menggunakan URI file yang disimpan di bucket Cloud Storage.

Konten dalam cache memiliki masa aktif terbatas. Waktu habis masa berlaku default cache konteks adalah 60 menit setelah dibuat. Jika menginginkan waktu habis masa berlaku yang berbeda, Anda dapat menentukan waktu habis masa berlaku yang berbeda menggunakan properti ttl atau expire_time saat membuat cache konteks. Anda juga dapat memperbarui waktu habis masa berlaku untuk cache konteks yang belum habis masa berlakunya. Untuk informasi tentang cara menentukan ttl dan expire_time, lihat Memperbarui waktu habis masa berlaku.

Setelah masa berlakunya berakhir, cache konteks tidak lagi tersedia. Jika ingin mereferensikan konten dalam cache konteks yang sudah tidak berlaku dalam permintaan perintah mendatang, Anda harus membuat ulang cache konteks.

Batas

Konten yang Anda simpan dalam cache harus mematuhi batas yang ditampilkan dalam tabel berikut:

Batas penyimpanan dalam cache konteks

Ukuran minimum cache

32.769 token

Ukuran maksimum konten yang dapat Anda simpan dalam cache menggunakan blob atau teks

10 MB

Waktu minimum sebelum cache berakhir masa berlakunya setelah dibuat

1 menit

Waktu maksimum sebelum cache berakhir masa berlakunya setelah dibuat

Tidak ada durasi cache maksimum

Dukungan lokasi

Cache konteks tidak didukung di wilayah Sydney, Australia (australia-southeast1).

Dukungan kunci enkripsi

Penyimpanan dalam cache konteks tidak mendukung kunci enkripsi yang dikelola pelanggan (CMEK).

Dukungan Transparansi Akses

Cache konteks mendukung Transparansi Akses.

Membuat contoh cache konteks

Contoh berikut menunjukkan cara membuat cache konteks.

Gen AI SDK for Python

Instal

pip install --upgrade google-genai
Untuk mempelajari lebih lanjut, lihat dokumentasi referensi SDK.

Tetapkan variabel lingkungan untuk menggunakan Gen AI SDK dengan Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=us-central1
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import Content, CreateCachedContentConfig, HttpOptions, Part

client = genai.Client(http_options=HttpOptions(api_version="v1beta1"))

system_instruction = """
You are an expert researcher. You always stick to the facts in the sources provided, and never make up new facts.
Now look at these research papers, and answer the following questions.
"""

contents = [
    Content(
        role="user",
        parts=[
            Part.from_uri(
                file_uri="gs://cloud-samples-data/generative-ai/pdf/2312.11805v3.pdf",
                mime_type="application/pdf",
            ),
            Part.from_uri(
                file_uri="gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf",
                mime_type="application/pdf",
            ),
        ],
    )
]

content_cache = client.caches.create(
    model="gemini-1.5-pro-002",
    config=CreateCachedContentConfig(
        contents=contents,
        system_instruction=system_instruction,
        display_name="example-cache",
        ttl="86400s",
    ),
)

print(content_cache.name)
print(content_cache.usage_metadata)
# Example response:
#   projects/111111111111/locations/us-central1/cachedContents/1111111111111111111
#   CachedContentUsageMetadata(audio_duration_seconds=None, image_count=167,
#       text_count=153, total_token_count=43130, video_duration_seconds=None)

REST

Anda dapat menggunakan REST untuk membuat cache konteks menggunakan Vertex AI API guna mengirim permintaan POST ke endpoint model penayang. Contoh berikut menunjukkan cara membuat cache konteks menggunakan file yang disimpan di bucket Cloud Storage.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • LOCATION: Region untuk memproses permintaan dan tempat konten yang di-cache disimpan. Untuk mengetahui daftar region yang didukung, lihat Region yang tersedia.
  • CACHE_DISPLAY_NAME: Nama tampilan yang bermakna untuk mendeskripsikan dan membantu Anda mengidentifikasi setiap cache konteks.
  • MIME_TYPE: Jenis MIME konten yang akan di-cache.
  • CONTENT_TO_CACHE_URI: URI Cloud Storage konten yang akan di-cache.

Metode HTTP dan URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents

Isi JSON permintaan:

{
  "model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-pro-002",
  "displayName": "CACHE_DISPLAY_NAME",
  "contents": [{
    "role": "user",
      "parts": [{
        "fileData": {
          "mimeType": "MIME_TYPE",
          "fileUri": "CONTENT_TO_CACHE_URI"
        }
      }]
  },
  {
    "role": "model",
      "parts": [{
        "text": "This is sample text to demonstrate explicit caching."
      }]
  }]
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents" | Select-Object -Expand Content

Anda akan menerima respons JSON yang mirip dengan yang berikut ini:

Contoh perintah curl

LOCATION="us-central1"
MODEL_ID="gemini-1.5-pro-002"
PROJECT_ID="test-project"
MIME_TYPE="video/mp4"
CACHED_CONTENT_URI="gs://path-to-bucket/video-file-name.mp4"

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}/cachedContents -d \
'{
  "model":"projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}",
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "fileData": {
            "mimeType": "${MIME_TYPE}",
            "fileUri": "${CACHED_CONTENT_URI}"
          }
        }
      ]
    }
  ]
}'

Langkah berikutnya