Kontext-Cache erstellen

Sie müssen einen Kontext-Cache erstellen, bevor Sie ihn verwenden können. Der von Ihnen erstellte Kontext-Cache enthält eine große Datenmenge, die Sie in verschiedenen Anfragen an ein Gemini-Modell verwenden können. Der im Cache gespeicherte Inhalt wird in der Region gespeichert, in der Sie die Anfrage zum Erstellen des Caches stellen.

Im Cache gespeicherte Inhalte können beliebige, von multimodalen Gemini-Modellen unterstützte MIME-Typen haben. Sie können beispielsweise eine große Menge an Text, Audio oder Video im Cache speichern. Sie können mehrere Dateien für den Cache angeben. Weitere Informationen finden Sie in den folgenden Medienanforderungen:

Sie geben den im Cache zu speichernden Inhalt mithilfe eines Blobs, Textes oder eines Pfads zu einer Datei an, die in einem Cloud Storage-Bucket gespeichert ist. Wenn die Größe des Inhalts, den Sie im Cache speichern, 10 MB übersteigt, müssen Sie ihn mit dem URI einer Datei angeben, die in einem Cloud Storage-Bucket gespeichert ist.

Im Cache gespeicherte Inhalte haben eine begrenzte Lebensdauer. Die Standardablaufzeit eines Kontext-Caches beträgt 60 Minuten nach seiner Erstellung. Wenn Sie eine andere Ablaufzeit verwenden möchten, können Sie beim Erstellen eines Kontext-Caches mit dem Attribut ttl oder expire_time eine andere Ablaufzeit angeben. Sie können weiter die Ablaufzeit für einen noch nicht abgelaufenen Kontext-Cache aktualisieren. Informationen zum Angeben von ttl und expire_time finden Sie unter Ablaufzeit aktualisieren.

Nachdem ein Kontext-Cache abgelaufen ist, ist er nicht mehr verfügbar. Wenn Sie in zukünftigen Prompt-Anfragen auf den Inhalt in einem abgelaufenen Kontext-Cache verweisen möchten, müssen Sie den Kontext-Cache neu erstellen.

Kontext-Cache-Limits

Für die Inhalte, die Sie im Cache speichern, gelten die folgenden Beschränkungen:

Limits für das Kontext-Caching

Mindestgröße eines Caches

32.769 Tokens

Maximale Größe von Inhalten, die Sie mit einem Blob oder Text im Cache speichern können

10 MB

Mindestzeit, bevor ein Cache nach seiner Erstellung abläuft

1 Minute

Maximale Zeit, bevor ein Cache nach dessen Erstellung abläuft

Es gibt keine maximale Cache-Dauer.

Beispiel für das Erstellen eines Kontext-Cache

Im Folgenden wird gezeigt, wie ein Kontext-Cache erstellt wird.

Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der API-Referenzdokumentation zur Vertex AI SDK for Python.

Streaming- und Nicht-Streaming-Antworten

Sie können auswählen, ob das Modell Streaming-Antworten oder Nicht-Streaming-Antworten generiert. Bei Streaming-Antworten erhalten Sie jede Antwort, sobald ihr Ausgabetoken generiert wurde. Bei Nicht-Streaming-Antworten erhalten Sie alle Antworten, nachdem alle Ausgabetokens erzeugt wurden.

Verwenden Sie für eine Streaming-Antwort den Parameter stream in generate_content.

  response = model.generate_content(contents=[...], stream = True)
  

Entfernen Sie für eine Nicht-Streamingantwort den Parameter oder setzen Sie den Parameter auf False.

Beispielcode

import vertexai
import datetime

from vertexai.generative_models import Part
from vertexai.preview import caching

# TODO(developer): Update and un-comment below line
# project_id = "PROJECT_ID"

vertexai.init(project=project_id, location="us-central1")

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 = [
    Part.from_uri(
        "gs://cloud-samples-data/generative-ai/pdf/2312.11805v3.pdf",
        mime_type="application/pdf",
    ),
    Part.from_uri(
        "gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf",
        mime_type="application/pdf",
    ),
]

cached_content = caching.CachedContent.create(
    model_name="gemini-1.5-pro-001",
    system_instruction=system_instruction,
    contents=contents,
    ttl=datetime.timedelta(minutes=60),
)

print(cached_content.name)

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 werden soll und in der der im Cache gespeicherte Inhalt gespeichert wird. Eine Liste der unterstützten Regionen finden Sie unter Verfügbare Regionen.
  • MIME_TYPE: Der MIME-Typ des im Cache zu speichernden Inhalts.
  • CONTENT_TO_CACHE_URI: Der Cloud Storage-URI des im Cache zu speichernden Inhalts.

HTTP-Methode und URL:

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

JSON-Text der Anfrage:

{
  "model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-pro-001",
  "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/v1beta1/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/v1beta1/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="gemini-1.5-pro-001"
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}"
          }
        }
      ]
    }
  ]
}'

Nächste Schritte