Memorizzazione nella cache del contesto per i modelli Gemini ottimizzati

Puoi utilizzare la memorizzazione nella cache del contesto per i tuoi modelli Gemini sottoposti a fine-tuning per migliorare le prestazioni e ridurre i costi per i prompt che includono grandi quantità di contesto. Memorizzando nella cache il contesto utilizzato di frequente, eviti di inviare grandi quantità di dati a ogni richiesta al modello sottoposto a fine-tuning.

Le operazioni di gestione (Read, Update, Delete) della cache del contesto per Gemini ottimizzato rimangono coerenti con i modelli di base. Solo la creazione e l'inferenza dei contenuti memorizzati nella cache richiedono una modifica specifica, descritta di seguito.

Modelli supportati

La memorizzazione nella cache del contesto è supportata per i modelli ottimizzati dal seguente modello di base:

  • gemini-2.0-flash-001

Prerequisiti

Ottimizzazione di un modello Gemini:devi disporre di un modello Gemini ottimizzato e sottoposto a deployment basato su un modello di base supportato (vedi Modelli supportati). Per informazioni dettagliate su come ottimizzare un modello Gemini, vedi Ottimizzare un modello Gemini. Per ottenere l'endpoint del modello ottimizzato di cui è stato eseguito il deployment, consulta Eseguire il deployment di un modello ottimizzato.

Assicurati di disporre delle seguenti informazioni:

  • L'ID e la versione del modello Gemini ottimizzato
  • Il nome della risorsa endpoint per il modello ottimizzato di cui è stato eseguito il deployment

Crea una cache del contesto per un modello ottimizzato

Il modello di base supportato è elencato in Modelli supportati.

La procedura per creare una cache contestuale per un modello ottimizzato segue in gran parte i passaggi descritti in Creare una cache contestuale. Consulta la documentazione collegata per la procedura generale. Questa guida si concentra sulla differenza di creazione della cache contestuale per i modelli Gemini ottimizzati.

Anziché utilizzare il modello di base nel formato projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/{MODEL}, devi utilizzare il modello ottimizzato nel formato projects/{PROJECT}/locations/{LOCATION}/models/{MODEL}@{VERSION}.

Gli esempi riportati di seguito mostrano come creare una cache contestuale con un modello Gemini ottimizzato.

REST

Puoi utilizzare REST per creare una cache contestuale utilizzando l'API Vertex AI per inviare una richiesta POST all'endpoint del modello del publisher. L'esempio seguente mostra come creare una cache contestuale utilizzando un file archiviato in un bucket Cloud Storage.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: il tuo ID progetto
  • LOCATION: la regione in cui elaborare la richiesta e in cui è memorizzato il contenuto memorizzato nella cache. Per un elenco delle regioni supportate, consulta Regioni disponibili.
  • MODEL_ID: l'ID del modello Gemini ottimizzato.
  • MODEL_VERSION: la versione del modello Gemini ottimizzata.
  • CACHE_DISPLAY_NAME: un nome visualizzato significativo per descrivere e aiutarti a identificare ogni cache del contesto.
  • MIME_TYPE: Il tipo MIME dei contenuti da memorizzare nella cache.
  • CONTENT_TO_CACHE_URI: l'URI Cloud Storage dei contenuti da memorizzare nella cache.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

{
  "model": "projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID@MODEL_VERSION",
  "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."
      }]
  }]
}

Per inviare la richiesta, scegli una di queste 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/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents"

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/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

Comando curl di esempio

LOCATION="us-central1"
MODEL_ID="model-id"
PROJECT_ID="test-project"
MODEL_VERSION=1
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}/models/${MODEL_ID}@${MODEL_VERSION}",
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "fileData": {
            "mimeType": "${MIME_TYPE}",
            "fileUri": "${CACHED_CONTENT_URI}"
          }
        }
      ]
    }
  ]
}'

Utilizzare una cache del contesto per un modello ottimizzato

La procedura per l'utilizzo di una cache contestuale per un modello ottimizzato segue in gran parte i passaggi descritti in Utilizzare una cache contestuale. Consulta la documentazione collegata per la procedura generale. Questa guida si concentra sulla differenza di utilizzo della cache contestuale per i modelli Gemini sottoposti a fine tuning.

Anziché inviare la richiesta all'endpoint del modello di base nel formato projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/{MODEL}, devi inviarla all'endpoint del modello sottoposto a fine-tuning di cui hai eseguito il deployment nel formato projects/{PROJECT}/locations/{LOCATION}/endpoints/{ENDPOINT_ID}.

Il seguente esempio di codice mostra come utilizzare una cache contestuale con un modello Gemini ottimizzato.

Quando utilizzi una cache di contesto, non puoi specificare le seguenti proprietà:

  • GenerativeModel.system_instructions
  • GenerativeModel.tool_config
  • GenerativeModel.tools

REST

Puoi utilizzare REST per specificare una cache contestuale 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 contestuale.
  • ENDPOINT_ID: l'endpoint in cui viene eseguito il deployment del modello sottoposto a fine tuning.
  • MIME_TYPE: Il prompt di testo da inviare al modello.

Metodo HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID: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 di queste 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/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID: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/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID:generateContent" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente.

Comando curl di esempio

LOCATION="us-central1"
PROJECT_ID="test-project"
ENDPOINT_ID=987654321

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}/endpoints/${ENDPOINT_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"
    }
  ],
}'