Debes crear una caché de contexto antes de poder usarla. La caché de contexto que creas contiene una gran cantidad de datos que puedes usar en varias solicitudes a un modelo de Gemini. El contenido almacenado en caché se almacena en la región en la que realizas la solicitud para crear la caché.
El contenido almacenado en caché puede ser cualquiera de los tipos de MIME compatibles con los modelos multimodales de Gemini. Por ejemplo, puedes almacenar en caché una gran cantidad de texto, audio o video. Puedes especificar más de un archivo para almacenar en caché. Para obtener más información, consulta los siguientes requisitos de contenido multimedia:
Especificas el contenido que se almacenará en caché con un blob, texto o una ruta de acceso a un archivo que se almacena en un bucket de Cloud Storage. Si el tamaño del contenido que almacenas en caché es superior a 10 MB, debes especificarlo con el URI de un archivo almacenado en un bucket de Cloud Storage.
El contenido almacenado en caché tiene una vida útil limitada. El tiempo de vencimiento predeterminado de una caché de contexto es de 60 minutos después de su creación. Si deseas un tiempo de vencimiento diferente, puedes especificarlo con la propiedad ttl
o expire_time
cuando creas una caché de contexto. También puedes actualizar la fecha de vencimiento de una caché de contexto sin vencer. Para obtener información sobre cómo especificar ttl
y expire_time
, consulta Actualiza el tiempo de vencimiento.
Una vez que vence una caché de contexto, ya no está disponible. Si quieres hacer referencia al contenido de una caché de contexto vencida en solicitudes de instrucciones futuras, debes volver a crear la caché de contexto.
Límites de la caché de contexto
El contenido que almacenes en caché debe cumplir con los siguientes límites:
Límites de almacenamiento en caché de contexto | |
---|---|
Tamaño mínimo de una caché |
32,769 tokens |
Tamaño máximo de contenido que puedes almacenar en caché con un BLOB o texto |
10 MB |
Tiempo mínimo antes de que venza una caché después de su creación |
1 minuto |
Es el tiempo máximo antes de que venza una caché después de su creación. |
No hay una duración máxima de la caché. |
Ejemplo de creación de caché de contexto
En los siguientes ejemplos, se muestra cómo crear una caché de contexto.
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación del SDK de Vertex AI de referencia de la API de Vertex para Python.
Respuestas de transmisión y sin transmisión
Puedes elegir si el modelo genera respuestas de transmisión o sin transmisión. Para las respuestas de transmisión, recibirás cada respuesta en cuanto se genere su token de salida. En el caso de las respuestas sin transmisión continua, recibes todas las respuestas después de que se generan todos los tokens de salida.
Para una respuesta de transmisión, usa el parámetro stream
en generate_content
.
response = model.generate_content(contents=[...], stream = True)
Para una respuesta sin transmisión, quita el parámetro o configúralo como False
.
Código de muestra
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración de Go en la guía de inicio rápido de Vertex AI. Si deseas obtener más información, consulta la documentación de referencia del SDK de Java de Vertex AI para Gemini.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Respuestas de transmisión y sin transmisión
Puedes elegir si el modelo genera respuestas de transmisión o sin transmisión. Para las respuestas de transmisión, recibirás cada respuesta en cuanto se genere su token de salida. En el caso de las respuestas sin transmisión continua, recibes todas las respuestas después de que se generan todos los tokens de salida.
Para una respuesta de transmisión, usa el método GenerateContentStream
.
iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
Para una respuesta sin transmisión, usa el método GenerateContent
.
resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
Código de muestra
REST
Puedes usar REST para crear una caché de contexto mediante la API de Vertex AI para enviar una solicitud POST al extremo del modelo del publicador. En el siguiente ejemplo, se muestra cómo crear una caché de contexto con un archivo almacenado en un bucket de Cloud Storage.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto.
- LOCATION: Es la región para procesar la solicitud y en la que se almacena el contenido almacenado en caché. Para obtener una lista de las regiones compatibles, consulta Regiones disponibles.
- CACHE_DISPLAY_NAME: Es un nombre visible significativo que describe y te ayuda a identificar cada caché de contexto.
- MIME_TYPE: Es el tipo de MIME del contenido que se almacenará en caché.
- CONTENT_TO_CACHE_URI: Es el URI de Cloud Storage del contenido que se almacenará en caché.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/cachedContents
Cuerpo JSON de la solicitud:
{ "model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-pro-002", "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." }] }] }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente 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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente 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
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Ejemplo del comando curl
LOCATION="us-central1"
MODEL_ID="gemini-1.5-pro-002"
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/v1beta1/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}"
}
}
]
}
]
}'
¿Qué sigue?
- Obtén más información sobre cómo usar una caché de contexto.
- Obtén más información sobre cómo actualizar la fecha de vencimiento de una caché de contexto.