Kontext-Cache aktualisieren

Sie können eine Aktualisierung vornehmen, wenn ein Kontext-Cache abläuft. Die Standardablaufzeit eines Kontext-Caches beträgt 60 Minuten nach seiner Erstellung. Ein abgelaufener Kontext-Cache wird während der automatischen Speicherbereinigung gelöscht und kann nicht mehr verwendet oder aktualisiert werden. Wenn Sie die Ablaufzeit eines noch nicht abgelaufenen Kontext-Caches aktualisieren möchten, aktualisieren Sie eine der folgenden Eigenschaften:

  • ttl: Die Anzahl der Sekunden und Nanosekunden, die der Cache nach der Erstellung oder nach der Aktualisierung von ttl gültig ist, bevor er abläuft. Wenn Sie die ttl festlegen, wird die expireTime des Caches aktualisiert.

  • expire_time: Ein Timestamp, das das absolute Datum und die absolute Uhrzeit angibt, zu dem der Kontext-Cache abläuft.

Kontext-Cache mit dem Parameter ttl aktualisieren

Im folgenden Beispiel wird die Ablaufzeit eines cURL-Befehls um 3.600 Sekunden aktualisiert.

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
from datetime import datetime as dt
from datetime import timezone as tz
from datetime import timedelta

from vertexai.preview import caching

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# cache_id = "your-cache-id"

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

cached_content = caching.CachedContent(cached_content_name=cache_id)

# Option1: Update the context cache using TTL (Time to live)
cached_content.update(ttl=timedelta(hours=3))
cached_content.refresh()

# Option2: Update the context cache using specific time
next_week_utc = dt.now(tz.utc) + timedelta(days=7)
cached_content.update(expire_time=next_week_utc)
cached_content.refresh()

print(cached_content.expire_time)
# Example response:
# 2024-09-11 17:16:45.864520+00:00

Go

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der Vertex AI-Kurzanleitung. Weitere Informationen finden Sie in der Referenzdokumentation zum Vertex AI Go SDK für Gemini.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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 Nicht-Streamingantwort die Methode GenerateContentStream.

  iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
  

Verwenden Sie für eine Nicht-Streamingantwort die Methode GenerateContent.

  resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
  

Beispielcode

import (
	"context"
	"fmt"
	"io"
	"time"

	"cloud.google.com/go/vertexai/genai"
)

// updateContextCache shows how to update the expiration time of a cached content, by specifying
// a new TTL (time-to-live duration)
// contentName is the ID of the cached content to update
func updateContextCache(w io.Writer, contentName string, projectID, location string) error {
	// location := "us-central1"
	ctx := context.Background()

	client, err := genai.NewClient(ctx, projectID, location)
	if err != nil {
		return fmt.Errorf("unable to create client: %w", err)
	}
	defer client.Close()

	cachedContent, err := client.GetCachedContent(ctx, contentName)
	if err != nil {
		return fmt.Errorf("GetCachedContent: %w", err)
	}

	update := &genai.CachedContentToUpdate{
		Expiration: &genai.ExpireTimeOrTTL{TTL: 2 * time.Hour},
	}

	_, err = client.UpdateCachedContent(ctx, cachedContent, update)
	fmt.Fprintf(w, "Updated cached content %q", contentName)
	return err
}

REST

Sie können mit REST einen Kontext-Cache erstellen oder aktualisieren. Dazu senden Sie mit der Vertex AI API eine PATCH-Anfrage an den Endpunkt des Publisher-Modells. Im folgenden Beispiel wird gezeigt, wie das Ablaufdatum mit dem Parameter ttl aktualisiert wird.

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.
  • CACHE_ID: Die ID des Kontext-Caches. Die Kontext-Cache-ID wird zurückgegeben, wenn Sie den Kontext-Cache erstellen. Sie können Kontext-Cache-IDs auch finden, indem Sie die Kontext-Caches für ein Google Cloud-Projekt auflisten. Weitere Informationen finden Sie unter Kontext-Cache erstellen und Kontext-Caches auflisten.
  • SECONDS: Ein float, das die Sekundenkomponente der Dauer angibt, bevor der Cache abläuft.
  • NANOSECONDS: Ein float, das die Nanosekundenkomponente der Dauer angibt, bevor der Cache abläuft.

HTTP-Methode und URL:

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

JSON-Text der Anfrage:

{
  "seconds":"SECONDS",
  "nanos":"NANOSECONDS"
}

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 PATCH \
-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/CACHE_ID"

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 PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/cachedContents/CACHE_ID" | Select-Object -Expand Content

Sie sollten in etwa folgende JSON-Antwort erhalten:

Beispiel: cURL-Befehls

PROJECT_NUMBER="PROJECT_NUMBER"
LOCATION="us-central1"
PROJECT_ID="PROJECT_ID"
CACHE_ID="CACHE_ID"

curl \
-X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json"\
"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_NUMBER}/locations/${LOCATION}/cachedContents/${CACHE_ID}" -d \
'{
   "ttl": {"seconds":"3600","nanos":"0"}
}'

Kontext-Cache mit dem Parameter expire_time aktualisieren

Im folgenden Beispiel wird ein curl-Befehl mit dem Parameter expire_time verwendet, um das Ablaufdatum auf den 30. Juni 2024 um 9:00 Uhr zu aktualisieren.

REST

Sie können mit REST einen Kontext-Cache erstellen oder aktualisieren. Dazu senden Sie mit der Vertex AI API eine PATCH-Anfrage an den Endpunkt des Publisher-Modells. Im folgenden Beispiel wird gezeigt, wie das Ablaufdatum mit dem Parameter expire_time aktualisiert wird.

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.
  • CACHE_ID: Die ID des Kontext-Caches. Sie finden die ID in der Antwort, wenn Sie den Kontext-Cache erstellen.
  • EXPIRE_TIME: Ein Timestamp, das den Zeitpunkt angibt, zu dem der Kontext-Cache abläuft.

HTTP-Methode und URL:

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

JSON-Text der Anfrage:

{
   "expire_time":"EXPIRE_TIME"
}

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 PATCH \
-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/CACHE_ID"

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 PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/cachedContents/CACHE_ID" | Select-Object -Expand Content

Sie sollten in etwa folgende JSON-Antwort erhalten:

Beispiel: cURL-Befehls

PROJECT_NUMBER="PROJECT_NUMBER"
LOCATION="us-central1"
PROJECT_ID="PROJECT_ID"
CACHE_ID="CACHE_ID"

curl \
-X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json"\
"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_NUMBER}/locations/${LOCATION}/cachedContents/${CACHE_ID}" -d \
'{
   "expire_time":"2024-06-30T09:00:00.000000Z"
}' 

Nächste Schritte