Kontext-Cache verwenden

Sie können REST APIs oder das Python SDK verwenden, um in einer Anwendung für generative KI auf Inhalte zu verweisen, die in einem Kontextcache gespeichert sind. Bevor er verwendet werden kann, müssen Sie zuerst den Kontext-Cache erstellen.

Das Kontext-Cache-Objekt, das Sie in Ihrem Code verwenden, enthält die folgenden Eigenschaften:

  • name: Der Name der Kontext-Cache-Ressource. Das Format ist projects/PROJECT_NUMBER/locations/LOCATION/cachedContents/CACHE_ID. Wenn Sie einen Kontext-Cache erstellen, finden Sie den Ressourcennamen in der Antwort. Die Projektnummer ist eine eindeutige Kennung für Ihr Projekt. Die Cache-ID ist eine ID für Ihren Cache. Wenn Sie in Ihrem Code einen Kontext-Cache angeben, müssen Sie den vollständigen Ressourcennamen des Kontext-Cache verwenden. Im folgenden Beispiel wird gezeigt, wie du den Namen einer im Cache gespeicherten Inhaltsressource in einem Anfragetext angibst:

    "cached_content": "projects/123456789012/locations/us-central1/123456789012345678"
    
  • model: Der Ressourcenname des Modells, mit dem der Cache erstellt wurde. Das Format ist projects/PROJECT_NUMBER/locations/LOCATION/publishers/PUBLISHER_NAME/models/MODEL_ID.

  • createTime: Ein Timestamp, das die Erstellungszeit des Kontext-Caches angibt.

  • updateTime: Ein Timestamp, das die letzte Aktualisierungszeit eines Kontext-Caches angibt. Nach der Erstellung eines Kontext-Caches und vor seiner Aktualisierung sind createTime und updateTime identisch.

  • expireTime: Ein Timestamp, das angibt, wann ein Kontext-Cache abläuft. Der Standardwert für expireTime ist 60 Minuten nach createTime. Sie können den Cache mit einer neuen Ablaufzeit aktualisieren. Weitere Informationen finden Sie unter Kontext-Cache aktualisieren. Nach Ablauf eines Caches wird er zum Löschen markiert und kann nicht mehr verwendet oder aktualisiert werden. Wenn Sie einen abgelaufenen Kontext-Cache verwenden möchten, müssen Sie ihn mit einer entsprechenden Gültigkeitsdauer neu erstellen.

Einschränkungen bei der Verwendung des Kontext-Cache

Beim Erstellen eines Kontext-Caches können Sie die folgenden Funktionen angeben. Geben Sie diese Informationen nicht noch einmal in Ihrer Anfrage an:

  • Das Attribut GenerativeModel.system_instructions. Mit dieser Property können Sie dem Modell Anweisungen geben, bevor es Anweisungen von einem Nutzer erhält. Weitere Informationen finden Sie in der Systemanleitung.

  • Das Attribut GenerativeModel.tool_config. Mit der Property tool_config werden Tools angegeben, die vom Gemini-Modell verwendet werden, z. B. ein Tool, das für die Funktion Funktionsaufruf verwendet wird.

  • Das Attribut GenerativeModel.tools. Mit der Property GenerativeModel.tools werden Funktionen zum Erstellen einer Anwendung für Funktionsaufrufe angegeben. Weitere Informationen finden Sie unter Funktionsaufrufe.

Beispiel für einen Kontext-Cache verwenden

Im Folgenden wird gezeigt, wie ein Kontext-Cache verwendet wird. Wenn Sie einen Kontext-Cache verwenden, können Sie die folgenden Properties nicht angeben:

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

Gen AI SDK for Python

Installieren

pip install --upgrade google-genai
Weitere Informationen finden Sie in der SDK-Referenzdokumentation.

Legen Sie Umgebungsvariablen fest, um das Gen AI SDK mit Vertex AI zu verwenden:

# 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 GenerateContentConfig, HttpOptions

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

# Use content cache to generate text response
# E.g cache_name = 'projects/111111111111/locations/us-central1/cachedContents/1111111111111111111'
response = client.models.generate_content(
    model="gemini-1.5-pro-002",
    contents="Summarize the pdfs",
    config=GenerateContentConfig(
        cached_content=cache_name,
    ),
)
print(response.text)
# Example response
#   The Gemini family of multimodal models from Google DeepMind demonstrates remarkable capabilities across various
#   modalities, including image, audio, video, and text....

REST

Sie können mit REST einen Kontext-Cache mit einem Prompt verwenden. 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.
  • 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/publishers/google/models/gemini-1.5-pro-002: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/publishers/google/models/gemini-1.5-pro-002: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/publishers/google/models/gemini-1.5-pro-002:generateContent" | Select-Object -Expand Content

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

Beispiel: cURL-Befehls

LOCATION="us-central1"
MODEL_ID="gemini-1.5-pro-002"
PROJECT_ID="test-project"

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