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 istprojects/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 istprojects/PROJECT_NUMBER/locations/LOCATION/publishers/PUBLISHER_NAME/models/MODEL_ID
.createTime
: EinTimestamp
, das die Erstellungszeit des Kontext-Caches angibt.updateTime
: EinTimestamp
, das den Zeitpunkt der letzten Aktualisierung eines Kontext-Caches angibt. Nach der Erstellung eines Kontext-Caches und vor seiner Aktualisierung sindcreateTime
undupdateTime
identisch.expireTime
: EinTimestamp
, das angibt, wann ein Kontext-Cache abläuft. Der Standardwert fürexpireTime
ist 60 Minuten nachcreateTime
. 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. Sie sollten nicht davon ausgehen, dass er verwendet oder aktualisiert werden kann. 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 Propertytool_config
können Sie Tools angeben, die vom Gemini-Modell verwendet werden, z. B. ein Tool, das für den Funktionsaufruf verwendet wird.Das Attribut
GenerativeModel.tools
. Mit der PropertyGenerativeModel.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
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
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 ADC 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
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/v1beta1/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/v1beta1/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/v1beta1/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/v1beta1/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"
}
],
}'
- Ablaufzeit eines Kontext-Cache aktualisieren
- Weitere Informationen zum Erstellen eines neuen Kontext-Cache
- Informationen zu allen Kontext-Caches abrufen, die mit einem Google Cloud-Projekt verknüpft sind
- Kontext-Cache löschen