Crea una cache contestuale

Devi creare una cache di contesto prima di poterla utilizzare. La cache di contesto create contiene una grande quantità di dati che puoi utilizzare in più richieste un modello Gemini. I contenuti memorizzati nella cache vengono archiviati nella regione in cui vengono creati una richiesta di creazione della cache.

I contenuti memorizzati nella cache possono essere uno qualsiasi dei tipi MIME supportati dalla piattaforma multimodale Gemini di machine learning. Ad esempio, puoi memorizzare nella cache una grande quantità di testo, audio o video. Tu puoi specificare più di un file da memorizzare nella cache. Per ulteriori informazioni, consulta le requisiti multimediali:

Puoi specificare i contenuti da memorizzare nella cache utilizzando un blob, del testo o il percorso di un file in un bucket Cloud Storage. Se le dimensioni dei contenuti che stai memorizzando nella cache è superiore a 10 MB, devi specificarlo utilizzando l'URI di un file in un bucket Cloud Storage.

I contenuti memorizzati nella cache hanno una durata limitata. La scadenza predefinita di un contesto 60 minuti dopo la creazione. Se vuoi una scadenza diversa, puoi specificare una scadenza diversa utilizzando l'attributo ttl o expire_time quando crei una cache di contesto. Puoi anche aggiornare la scadenza per una cache di contesto non scaduta. Per informazioni su come specificare ttl e expire_time, vedi Aggiorna la data e l'ora di scadenza.

Quando una cache contestuale scade, non è più disponibile. Se vuoi fare riferimento ai contenuti di una cache di contesto scaduta nelle richieste di prompt future, devi ricreare la cache di contesto.

Limiti della cache del contesto

I contenuti memorizzati nella cache devono rispettare i seguenti limiti:

Limiti di memorizzazione nella cache del contesto

Dimensioni minime di una cache

32.769 token

Dimensione massima dei contenuti che puoi memorizzare nella cache utilizzando un blob o un testo

10 MB

Tempo minimo prima della scadenza di una cache dopo la creazione

1 minuto

Tempo massimo prima della scadenza di una cache dopo la creazione

Non esiste una durata massima della cache

Esempio di creazione di una cache di contesto

Di seguito viene illustrato come creare una cache di contesto.

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 SDK Vertex AI per Python documentazione di riferimento dell'API.

Risposte dinamiche e non dinamiche

Puoi scegliere se il modello deve generare risposte in streaming oppure risposte non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non dinamiche, ricevi tutte le risposte dopo che sono stati generati tutti i token di output.

Per una risposta in modalità flusso, 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

import vertexai
import datetime

from vertexai.generative_models import Part
from vertexai.preview import caching

# TODO(developer): Update and un-comment below line
# project_id = "PROJECT_ID"

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

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 = [
    Part.from_uri(
        "gs://cloud-samples-data/generative-ai/pdf/2312.11805v3.pdf",
        mime_type="application/pdf",
    ),
    Part.from_uri(
        "gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf",
        mime_type="application/pdf",
    ),
]

cached_content = caching.CachedContent.create(
    model_name="gemini-1.5-pro-001",
    system_instruction=system_instruction,
    contents=contents,
    ttl=datetime.timedelta(minutes=60),
)

print(cached_content.name)

REST

Puoi utilizzare REST per creare una cache di contesto utilizzando l'API Vertex AI per inviare Richiesta POST all'endpoint del modello del publisher. L'esempio seguente mostra come creare una cache di contesto utilizzando un file archiviato in Cloud Storage di sincronizzare la directory di una VM con un bucket.

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

  • PROJECT_ID: il tuo ID progetto.
  • LOCATION: la regione in cui elaborare la richiesta e dove sono archiviati i contenuti memorizzati nella cache. Per un elenco delle regioni supportate, vedi Regioni disponibili.
  • MIME_TYPE: 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/v1beta1/projects/PROJECT_ID/locations/LOCATION/cachedContents

Corpo JSON della richiesta:

{
  "model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-pro-001",
  "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 delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json. ed esegui questo comando:

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/cachedContents"

PowerShell

Salva il corpo della richiesta in un file denominato request.json. ed esegui questo comando:

$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/cachedContents" | 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-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}/publishers/google/models/${MODEL_ID}/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}"
          }
        }
      ]
    }
  ]
}'

Passaggi successivi