כדי להשתמש במטמון ההקשר, צריך ליצור אותו קודם. מטמון ההקשר שאתם יוצרים מכיל כמות גדולה של נתונים שבהם אתם יכולים להשתמש בכמה בקשות למודל Gemini. התוכן שנשמר במטמון מאוחסן באזור שבו מתבצעת הבקשה ליצירת המטמון.
תוכן שמור במטמון יכול להיות כל אחד מסוגי ה-MIME שנתמכים במודלים מרובי-מודלים של Gemini. לדוגמה, אפשר לשמור במטמון כמות גדולה של טקסט, אודיו או סרטון. אפשר לציין יותר מקובץ אחד לאחסון במטמון. מידע נוסף זמין במאמר בנושא דרישות המדיה:
מציינים את התוכן שרוצים לשמור במטמון באמצעות blob, טקסט או נתיב לקובץ שמאוחסן בקטגוריה של Cloud Storage. אם גודל התוכן שאתם שומרים במטמון גדול מ-10MB, אז עליכם לציין אותו באמצעות ה-URI של קובץ שמאוחסן בקטגוריה של Cloud Storage. הוראות ליצירת קטגוריה של Cloud Storage לאירוח הקובץ מפורטות במאמר יצירת קטגוריות.
תוכן שמור במטמון נשמר לזמן מוגבל. זמן התפוגה שמוגדר כברירת מחדל למטמון הקשר הוא 60 דקות אחרי שהוא נוצר. אם רוצים להגדיר זמן תפוגה אחר, אפשר לציין זמן תפוגה אחר באמצעות המאפיין ttl או expire_time כשיוצרים מטמון הקשר. אפשר גם לעדכן את תאריך התפוגה של מטמון הקשר שלא פג תוקפו. מידע על הגדרת ttl ו-expire_time זמין במאמר עדכון זמן התפוגה.
אחרי שתוקף של מטמון הקשר יפוג, הוא כבר לא יהיה זמין. אם רוצים להפנות לתוכן במטמון הקשר שתוקפו פג בבקשות להנחיות עתידיות, צריך ליצור מחדש את מטמון ההקשר.
תמיכה במיקום
אין תמיכה בשמירת נתונים במטמון בהקשר של אזור סידני באוסטרליה (australia-southeast1).
שמירת הקשר במטמון תומכת בנקודת הקצה הגלובלית.
תמיכה במפתחות הצפנה
השימוש במטמון הקשר תומך במפתחות הצפנה בניהול הלקוח (CMEK), ומאפשר לכם לשלוט בהצפנה של הנתונים שנשמרו במטמון ולהגן על המידע הרגיש באמצעות מפתחות הצפנה שאתם מנהלים ובבעלותכם. כך אפשר להוסיף עוד שכבת אבטחה ותאימות.
פרטים נוספים מופיעים בדוגמה.
אין תמיכה ב-CMEK כשמשתמשים בנקודת הקצה הגלובלית.
תמיכה ב-Access Transparency
הטמנת הקשר במטמון תומכת ב-Access Transparency.
דוגמה ליצירת מטמון הקשר
בדוגמאות הבאות מוסבר איך ליצור מטמון הקשר.
Python
התקנה
pip install --upgrade google-genai
מידע נוסף מופיע ב מאמרי העזרה בנושא SDK.
מגדירים משתני סביבה כדי להשתמש ב-Gen AI SDK עם Vertex AI:
# 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
Go
מידע נוסף מופיע ב מאמרי העזרה בנושא SDK.
מגדירים משתני סביבה כדי להשתמש ב-Gen AI SDK עם Vertex AI:
# 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
Java
כך מתקינים או מעדכנים את Java.
מידע נוסף מופיע ב מאמרי העזרה בנושא SDK.
מגדירים משתני סביבה כדי להשתמש ב-Gen AI SDK עם Vertex AI:
# 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
Node.js
התקנה
npm install @google/genai
מידע נוסף מופיע ב מאמרי העזרה בנושא SDK.
מגדירים משתני סביבה כדי להשתמש ב-Gen AI SDK עם Vertex AI:
# 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
REST
אתם יכולים להשתמש ב-REST כדי ליצור מטמון הקשר באמצעות Vertex AI API לשליחת בקשת POST לנקודת הקצה של מודל המפרסם. בדוגמה הבאה מוצג אופן היצירה של מטמון הקשר באמצעות קובץ שמאוחסן בקטגוריה של Cloud Storage.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט.
- LOCATION: האזור שבו הבקשה תעובד ושבו התוכן ששמור במטמון מאוחסן. רשימת האזורים הנתמכים מופיעה כאן.
- CACHE_DISPLAY_NAME: שם תצוגה בעל משמעות שיעזור לכם לתאר ולזהות כל מטמון הקשר.
- MIME_TYPE: סוג ה-MIME של התוכן שרוצים לשמור במטמון.
- CONTENT_TO_CACHE_URI: ה-URI של Cloud Storage של התוכן שרוצים לשמור במטמון.
- MODEL_ID: המודל שמשמש לשמירת נתונים במטמון.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents
גוף בקשת JSON:
{
"model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID",
"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."
}]
}]
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
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
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$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
אתם אמורים לקבל תגובת JSON שדומה לזו:
דוגמה לפקודת curl
LOCATION="us-central1"
MODEL_ID="gemini-2.0-flash-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}/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}"
}
}
]
}
]
}'
יצירת מטמון הקשר עם CMEK
כדי להטמיע שמירה במטמון בהקשר של CMEK, צריך ליצור CMEK לפי ההוראות ולוודא שלחשבון השירות (P4SA) של Vertex AI לכל מוצר ולכל פרויקט יש את ההרשאות הנדרשות של Cloud KMS CryptoKey Encrypter/Decrypter במפתח.
ההרשאה הזו מאפשרת ליצור ולנהל תוכן שנשמר במטמון בצורה מאובטחת, וגם לבצע קריאות אחרות כמו {List, Update, Delete, Get} CachedContent(s) בלי לציין שוב ושוב מפתח KMS.
REST
אתם יכולים להשתמש ב-REST כדי ליצור מטמון הקשר באמצעות Vertex AI API לשליחת בקשת POST לנקודת הקצה של מודל המפרסם. בדוגמה הבאה מוצג אופן היצירה של מטמון הקשר באמצעות קובץ שמאוחסן בקטגוריה של Cloud Storage.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: .
- LOCATION: האזור שבו הבקשה תעובד ושבו התוכן ששמור במטמון מאוחסן. רשימת האזורים הנתמכים מופיעה כאן.
- MODEL_ID: gemini-2.0-flash-001.
- CACHE_DISPLAY_NAME: שם תצוגה בעל משמעות שיעזור לכם לתאר ולזהות כל מטמון הקשר.
- MIME_TYPE: סוג ה-MIME של התוכן שרוצים לשמור במטמון.
- CACHED_CONTENT_URI: ה-URI של Cloud Storage של התוכן שרוצים לשמור במטמון.
- KMS_KEY_NAME: שם מפתח Cloud KMS.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents
גוף בקשת JSON:
{
"model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-2.0-flash-001",
"displayName": "CACHE_DISPLAY_NAME",
"contents": [{
"role": "user",
"parts": [{
"fileData": {
"mimeType": "MIME_TYPE",
"fileUri": "CONTENT_TO_CACHE_URI"
}
}]}],
"encryptionSpec": {
"kmsKeyName": "KMS_KEY_NAME"
}
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
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
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$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
אתם אמורים לקבל תגובת JSON שדומה לזו:
דוגמה לפקודת curl
LOCATION="us-central1"
MODEL_ID="gemini-2.0-flash-001"
PROJECT_ID="test-project"
MIME_TYPE="video/mp4"
CACHED_CONTENT_URI="gs://path-to-bucket/video-file-name.mp4"
KMS_KEY_NAME="projects/${PROJECT_ID}/locations/{LOCATION}/keyRings/your-key-ring/cryptoKeys/your-key"
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}/publishers/google/models/{MODEL_ID}",
"contents" : [
{
"role": "user",
"parts": [
{
"file_data": {
"mime_type":"{MIME_TYPE}",
"file_uri":"{CACHED_CONTENT_URI}"
}
}
]
}
],
"encryption_spec" :
{
"kms_key_name":"{KMS_KEY_NAME}"
}
}'
GenAI SDK ל-Python
התקנה
pip install --upgrade google-genai
מידע נוסף מופיע במאמרי העזרה בנושא SDK.
מגדירים משתני סביבה כדי להשתמש ב-SDK של AI גנרטיבי עם Vertex AI:
# 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
import os
from google import genai
from google.genai.types import Content, CreateCachedContentConfig, HttpOptions, Part
os.environ['GOOGLE_CLOUD_PROJECT'] = 'vertexsdk'
os.environ['GOOGLE_CLOUD_LOCATION'] = 'us-central1'
os.environ['GOOGLE_GENAI_USE_VERTEXAI'] = 'True'
client = genai.Client(http_options=HttpOptions(api_version="v1"))
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 = [
Content(
role="user",
parts=[
Part.from_uri(
file_uri="gs://cloud-samples-data/generative-ai/pdf/2312.11805v3.pdf",
mime_type="application/pdf",
),
Part.from_uri(
file_uri="gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf",
mime_type="application/pdf",
),
],
)
]
content_cache = client.caches.create(
model="gemini-2.0-flash-001",
config=CreateCachedContentConfig(
contents=contents,
system_instruction=system_instruction,
display_name="example-cache",
kms_key_name="projects/vertexsdk/locations/us-central1/keyRings/your-project/cryptoKeys/your-key",
ttl="86400s",
),
)
print(content_cache.name)
print(content_cache.usage_metadata)
GenAI SDK for Go
איך מתקינים או מעדכנים את Gen AI SDK for Go
מידע נוסף מופיע במאמרי העזרה בנושא SDK.
מגדירים משתני סביבה כדי להשתמש ב-SDK של AI גנרטיבי עם Vertex AI:
import (
"context"
"encoding/json"
"fmt"
"io"
genai "google.golang.org/genai"
)
// createContentCache shows how to create a content cache with an expiration parameter.
func createContentCache(w io.Writer) (string, error) {
ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
HTTPOptions: genai.HTTPOptions{APIVersion: "v1beta1"},
})
if err != nil {
return "", fmt.Errorf("failed to create genai client: %w", err)
}
modelName := "gemini-2.0-flash-001"
systemInstruction := "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."
cacheContents := []*genai.Content{
{
Parts: []*genai.Part{
{FileData: &genai.FileData{
FileURI: "gs://cloud-samples-data/generative-ai/pdf/2312.11805v3.pdf",
MIMEType: "application/pdf",
}},
{FileData: &genai.FileData{
FileURI: "gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf",
MIMEType: "application/pdf",
}},
},
Role: "user",
},
}
config := &genai.CreateCachedContentConfig{
Contents: cacheContents,
SystemInstruction: &genai.Content{
Parts: []*genai.Part{
{Text: systemInstruction},
},
},
DisplayName: "example-cache",
KmsKeyName: "projects/vertexsdk/locations/us-central1/keyRings/your-project/cryptoKeys/your-key",
TTL: "86400s",
}
res, err := client.Caches.Create(ctx, modelName, config)
if err != nil {
return "", fmt.Errorf("failed to create content cache: %w", err)
}
cachedContent, err := json.MarshalIndent(res, "", " ")
if err != nil {
return "", fmt.Errorf("failed to marshal cache info: %w", err)
}
// See the documentation: https://pkg.go.dev/google.golang.org/genai#CachedContent
fmt.Fprintln(w, string(cachedContent))
return res.Name, nil
}