Kontext-Caching für optimierte Gemini-Modelle

In dieser Anleitung erfahren Sie, wie Sie Kontext-Caching mit Ihren abgestimmten Gemini-Modellen verwenden, um die Leistung zu verbessern und die Kosten für Prompts mit viel Kontext zu senken. Auf dieser Seite wird Folgendes beschrieben:

Durch das Caching von häufig verwendetem Kontext vermeiden Sie, dass bei jeder Anfrage an Ihr feinabgestimmtes Modell große Datenmengen noch einmal gesendet werden müssen.

Der Prozess zum Verwalten eines Kontext-Cache (Read, Update, Delete) ist für feinabgestimmte und Basismodelle von Gemini identisch. Auf dieser Seite werden die spezifischen Schritte zum Erstellen und Verwenden eines Caches mit einem feinabgestimmten Modell beschrieben.

Unterstützte Modelle

Das Zwischenspeichern von Kontext wird für Modelle unterstützt, die auf dem folgenden Basismodell feinabgestimmt wurden:

  • gemini-2.0-flash-001

Vorbereitung

Für den Start ist Folgendes erforderlich:

  • Bereitgestelltes feinabgestimmtes Modell:Sie benötigen ein bereitgestelltes feinabgestimmtes Gemini-Modell, das auf einem unterstützten Basismodell basiert. Weitere Informationen finden Sie unter Gemini-Modell abstimmen.
  • Modellinformationen:
    • Die ID und die Version des abgestimmten Gemini-Modells.
    • Der Name der Endpunktressource für das bereitgestellte feinabgestimmte Modell. Informationen zum Abrufen des Endpunkts finden Sie unter Abgestimmtes Modell bereitstellen.

Kontext-Cache für ein abgestimmtes Modell erstellen

Das Erstellen eines Kontext-Cache für ein fein abgestimmtes Modell ähnelt dem Verfahren für ein Basismodell. Eine allgemeine Anleitung finden Sie unter Kontext-Cache erstellen.

Der Hauptunterschied besteht darin, dass Sie im Feld model Ihre feinabgestimmte Modellversion anstelle des Basismodells angeben müssen. Verwenden Sie das Format projects/{PROJECT}/locations/{LOCATION}/models/{MODEL}@{VERSION}.

Im folgenden Beispiel wird gezeigt, wie ein Kontext-Cache mit einem optimierten Gemini-Modell erstellt wird.

REST

Sie können mit REST einen Kontext-Cache erstellen. Dazu senden Sie mit der Vertex AI API eine POST-Anfrage an den Endpunkt des Publisher-Modells. Im folgenden Beispiel wird gezeigt, wie ein Kontext-Cache mithilfe einer in einem Cloud Storage-Bucket gespeicherten Datei erstellt wird.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • LOCATION: Die Region, in der die Anfrage verarbeitet wird und in der die zwischengespeicherten Inhalte gespeichert sind. Eine Liste der unterstützten Regionen finden Sie unter Verfügbare Regionen.
  • MODEL_ID: Die ID des feinabgestimmten Gemini-Modells.
  • MODEL_VERSION: Die feinabgestimmte Gemini-Modellversion.
  • CACHE_DISPLAY_NAME: Ein aussagekräftiger Anzeigename, mit dem Sie die einzelnen Kontextcaches beschreiben und identifizieren können.
  • MIME_TYPE: Der MIME-Typ des zu cachenden Inhalts.
  • CONTENT_TO_CACHE_URI: Der Cloud Storage-URI des Inhalts, der im Cache gespeichert werden soll.

HTTP-Methode und URL:

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

JSON-Text der Anfrage:

{
  "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."
      }]
  }]
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

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

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$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

Sie sollten in etwa folgende JSON-Antwort erhalten:

Beispiel: cURL-Befehls

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}"
          }
        }
      ]
    }
  ]
}'

Kontext-Cache für ein abgestimmtes Modell verwenden

Die Verwendung eines Kontext-Caches mit einem abgestimmten Modell ähnelt der Verwendung mit einem Basismodell. Eine allgemeine Anleitung finden Sie unter Kontext-Cache verwenden.

Der wesentliche Unterschied besteht darin, dass Sie die Anfrage an den Endpunkt Ihres bereitgestellten optimierten Modells (.../endpoints/{ENDPOINT_ID}) und nicht an den Endpunkt des Basismodells (.../publishers/google/models/{MODEL}) senden.

Wenn Sie einen Kontext-Cache verwenden, können Sie die folgenden Attribute in Ihrer Anfrage nicht angeben:

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

Das folgende Codebeispiel zeigt, wie ein Kontext-Cache mit einem optimierten Gemini-Modell verwendet wird.

REST

Sie können mit REST einen Kontext-Cache mit einem Prompt angeben. Dazu senden Sie mit der Vertex AI API eine POST-Anfrage an den Endpunkt des Publisher-Modells.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • LOCATION: Die Region, in der die Anfrage zum Erstellen des Kontext-Cache verarbeitet wurde.
  • ENDPOINT_ID: Der Endpunkt, an dem das optimierte Modell bereitgestellt wird.
  • MIME_TYPE: Der Text-Prompt, der an das Modell gesendet werden soll.

HTTP-Methode und URL:

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

JSON-Text der Anfrage:

{
  "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"
      }
  ],
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

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

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Beispiel: cURL-Befehls

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"
    }
  ],
}'