Puoi utilizzare le API REST o l'SDK Python per fare riferimento ai contenuti memorizzati in una cache del contesto in un'applicazione di IA generativa. Prima di poter essere utilizzata, devi prima creare la cache del contesto.
L'oggetto della cache di contesto utilizzato nel codice include le seguenti proprietà:
name
: il nome della risorsa della cache di contesto. Il formato èprojects/PROJECT_NUMBER/locations/LOCATION/cachedContents/CACHE_ID
. Quando crei una cache di contesto, puoi trovare il nome della risorsa nella risposta. Il numero di progetto è un identificatore univoco del progetto. L'ID cache è un ID per la cache. Quando specifichi una cache di contesto nel codice, devi utilizzare il nome completo della risorsa della cache di contesto. Di seguito è riportato un esempio che mostra come specificare il nome di una risorsa di contenuti memorizzata nella cache nel corpo di una richiesta:"cached_content": "projects/123456789012/locations/us-central1/123456789012345678"
model
: il nome della risorsa del modello utilizzato per creare la cache. Il formato èprojects/PROJECT_NUMBER/locations/LOCATION/publishers/PUBLISHER_NAME/models/MODEL_ID
.createTime
: unTimestamp
che specifica la data e l'ora di creazione della cache del contesto.updateTime
: unTimestamp
che specifica l'ora dell'aggiornamento più recente di una cache di contesto. Dopo aver creato una cache di contesto e prima di aggiornarla,createTime
eupdateTime
sono uguali.expireTime
: unTimestamp
che specifica quando scade una cache di contesto. Il valore predefinito diexpireTime
è 60 minuti dopocreateTime
. Puoi aggiornare la cache con una nuova data e ora di scadenza. Per ulteriori informazioni, consulta Aggiornare la cache del contesto.
Una volta scaduta, una cache viene contrassegnata per l'eliminazione e non dovresti presumere che possa essere utilizzata o aggiornata. Se devi utilizzare una cache di contesto scaduta, devi ricrearla con una data di scadenza appropriata.
Limitazioni all'utilizzo della cache di contesto
Quando crei una cache di contesto, puoi specificare le seguenti funzionalità. Non devi specificarli di nuovo nella richiesta:
La proprietà
GenerativeModel.system_instructions
. Questa proprietà viene utilizzata per specificare istruzioni al modello prima che il modello le riceva da un utente. Per ulteriori informazioni, consulta Istruzioni di sistema.La proprietà
GenerativeModel.tool_config
. La proprietàtool_config
viene utilizzata per specificare gli strumenti utilizzati dal modello Gemini, ad esempio uno strumento utilizzato dalla funzionalità di chiamata di funzione.La proprietà
GenerativeModel.tools
. La proprietàGenerativeModel.tools
viene utilizzata per specificare le funzioni per creare un'applicazione di chiamata di funzioni. Per ulteriori informazioni, consulta Chiamate di funzioni.
Utilizzare un esempio di cache del contesto
Di seguito viene mostrato come utilizzare una cache di contesto. Quando utilizzi una cache di contesto, non puoi specificare le seguenti proprietà:
GenerativeModel.system_instructions
GenerativeModel.tool_config
GenerativeModel.tools
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI SDK for Python.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il token di output. Per le risposte non dinamiche, ricevi tutte le risposte dopo la generazione di tutti i token di output.
Per una risposta dinamica, utilizza il parametro stream
in
generate_content
.
response = model.generate_content(contents=[...], stream = True)
Per una risposta non in streaming, rimuovi il parametro o impostalo su
False
.
Codice di esempio
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida introduttiva di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'SDK Go di Vertex AI per Gemini.
Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il token di output. Per le risposte non dinamiche, ricevi tutte le risposte dopo la generazione di tutti i token di output.
Per una risposta dinamica, utilizza il metodo
GenerateContentStream
.
iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
Per una risposta non in streaming, utilizza il metodo GenerateContent
.
resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
Codice di esempio
REST
Puoi utilizzare REST per utilizzare una cache di contesto con un prompt utilizzando l'API Vertex AI per inviare una richiesta POST all'endpoint del modello del publisher.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto.
- LOCATION: la regione in cui è stata elaborata la richiesta di creazione della cache di contesto.
- MIME_TYPE: il prompt di testo da inviare al modello.
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-pro-002:generateContent
Corpo JSON della richiesta:
{ "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" } ], }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
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
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$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
Dovresti ricevere una risposta JSON simile alla seguente.
Comando curl di esempio
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"
}
],
}'
- Scopri come aggiornare la data e l'ora di scadenza di una cache di contesto.
- Scopri come creare una nuova cache del contesto.
- Scopri come ottenere informazioni su tutte le cache di contesto associate a un progetto Google Cloud.
- Scopri come eliminare una cache di contesto.