Context Caching untuk Model Gemini yang Disempurnakan

Panduan ini menunjukkan cara menggunakan penyimpanan cache konteks dengan model Gemini yang di-fine-tune untuk meningkatkan performa dan mengurangi biaya untuk perintah yang menyertakan konteks dalam jumlah besar. Halaman ini menjelaskan hal berikut:

Dengan menyimpan cache konteks yang sering digunakan, Anda tidak perlu mengirim ulang data dalam jumlah besar dengan setiap permintaan ke model yang di-fine-tune.

Proses untuk mengelola (Read, Update, Delete) cache konteks sama untuk model Gemini yang di-tune dan model Gemini dasar. Halaman ini berfokus pada langkah-langkah khusus untuk membuat dan menggunakan cache dengan model yang di-tuning secara halus.

Model yang didukung

Penyimpanan cache konteks didukung untuk model yang di-fine-tune dari model dasar berikut:

  • gemini-2.0-flash-001

Prasyarat

Sebelum memulai, Anda memerlukan hal berikut:

  • Model yang disesuaikan dan di-deploy: Anda memerlukan model Gemini yang disesuaikan dan di-deploy berdasarkan model dasar yang didukung. Untuk mengetahui detailnya, lihat Menyesuaikan model Gemini.
  • Informasi model:
    • ID dan versi model Gemini yang di-tune.
    • Nama resource endpoint untuk model yang telah disesuaikan dan di-deploy. Untuk mendapatkan endpoint, lihat Men-deploy model yang disesuaikan.

Membuat context cache untuk model yang di-fine-tune

Proses pembuatan cache konteks untuk model yang di-fine-tune mirip dengan proses untuk model dasar. Untuk mengetahui langkah-langkah umum, lihat Membuat context cache.

Perbedaan utamanya adalah Anda harus menentukan versi model yang di-fine-tune di kolom model, bukan model dasar. Gunakan format projects/{PROJECT}/locations/{LOCATION}/models/{MODEL}@{VERSION}

Contoh berikut menunjukkan cara membuat cache konteks dengan model Gemini yang telah disesuaikan.

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.
  • MODEL_ID: ID model Gemini yang di-fine-tune.
  • MODEL_VERSION: Versi model Gemini yang disesuaikan.
  • 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/models/MODEL_ID@MODEL_VERSION",
  "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="model-id"
PROJECT_ID="test-project"
MODEL_VERSION=1
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}/cachedContents -d \
'{
  "model":"projects/${PROJECT_ID}/locations/${LOCATION}/models/${MODEL_ID}@${MODEL_VERSION}",
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "fileData": {
            "mimeType": "${MIME_TYPE}",
            "fileUri": "${CACHED_CONTENT_URI}"
          }
        }
      ]
    }
  ]
}'

Menggunakan context cache untuk model yang di-fine-tune

Proses penggunaan cache konteks dengan model yang di-fine-tune mirip dengan proses untuk model dasar. Untuk mengetahui langkah-langkah umumnya, lihat Menggunakan cache konteks.

Perbedaan utamanya adalah Anda mengirim permintaan ke endpoint model yang telah disesuaikan dan di-deploy (.../endpoints/{ENDPOINT_ID}), bukan ke endpoint model dasar (.../publishers/google/models/{MODEL}).

Saat menggunakan cache konteks, Anda tidak dapat menentukan properti berikut dalam permintaan:

  • GenerativeModel.system_instructions
  • GenerativeModel.tool_config
  • GenerativeModel.tools

Contoh kode berikut menunjukkan cara menggunakan cache konteks dengan model Gemini yang dioptimalkan.

REST

Anda dapat menggunakan REST untuk menentukan cache konteks dengan prompt menggunakan Vertex AI API untuk mengirim permintaan POST ke endpoint model penayang.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • LOCATION: Region tempat permintaan untuk membuat cache konteks diproses.
  • ENDPOINT_ID: Endpoint tempat model yang telah disesuaikan di-deploy.
  • MIME_TYPE: Perintah teks yang akan dikirimkan ke model.

Metode HTTP dan URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID:generateContent

Isi JSON permintaan:

{
  "cachedContent": "projects/PROJECT_NUMBER/locations/LOCATION/cachedContents/CACHE_ID",
  "contents": [
      {"role":"user","parts":[{"text":"PROMPT_TEXT"}]}
  ],
  "generationConfig": {
      "maxOutputTokens": 8192,
      "temperature": 1,
      "topP": 0.95,
  },
  "safetySettings": [
      {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "threshold": "BLOCK_MEDIUM_AND_ABOVE"
      },
      {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "threshold": "BLOCK_MEDIUM_AND_ABOVE"
      },
      {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "threshold": "BLOCK_MEDIUM_AND_ABOVE"
      },
      {
          "category": "HARM_CATEGORY_HARASSMENT",
          "threshold": "BLOCK_MEDIUM_AND_ABOVE"
      }
  ],
}

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/endpoints/ENDPOINT_ID:generateContent"

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/endpoints/ENDPOINT_ID:generateContent" | Select-Object -Expand Content

Anda akan melihat respons JSON yang mirip seperti berikut:

Contoh perintah curl

LOCATION="us-central1"
PROJECT_ID="test-project"
ENDPOINT_ID=987654321

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}/endpoints/${ENDPOINT_ID}:generateContent" -d \
'{
  "cachedContent": "projects/${PROJECT_NUMBER}/locations/${LOCATION}/cachedContents/${CACHE_ID}",
  "contents": [
      {"role":"user","parts":[{"text":"What are the benefits of exercise?"}]}
  ],
  "generationConfig": {
      "maxOutputTokens": 8192,
      "temperature": 1,
      "topP": 0.95,
  },
  "safetySettings": [
    {
      "category": "HARM_CATEGORY_HATE_SPEECH",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    },
    {
      "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    },
    {
      "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    },
    {
      "category": "HARM_CATEGORY_HARASSMENT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    }
  ],
}'