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:
Especifica el contenido que se debe almacenar en caché mediante un BLOB, texto o una ruta de acceso a un archivo almacenado 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 crearla. Si deseas una fecha de vencimiento diferente, puedes especificar una fecha de vencimiento diferente con la ttl
o la propiedad expire_time
cuando crees una caché de contexto. También puedes actualizar el tiempo de vencimiento de una caché de contexto sin vencer. Para obtener información sobre cómo especificar ttl
y expire_time
, consulta Actualiza la fecha de vencimiento.
Una vez que vence una caché de contexto, ya no estará disponible. Si deseas hacer referencia al contenido en una caché de contexto vencida en solicitudes de mensajes futuras, debes volver a crear la caché de contexto.
Límites de caché de contexto
El contenido que almacenas 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 del contenido que puedes almacenar en caché mediante un BLOB o texto |
10 MB |
Tiempo mínimo antes de que venza una caché después de crearla |
1 minuto |
Tiempo máximo antes de que venza una caché después de crearla |
No hay una duración máxima de caché |
Ejemplo de creación de caché de contexto
A continuación, 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: La región en la que se procesa la solicitud y en la que se almacena el contenido almacenado en caché. Para obtener una lista de las regiones compatibles, consulta Regiones disponibles.
- MIME_TYPE: El tipo de MIME del contenido que se almacenará en caché.
- CONTENT_TO_CACHE_URI: 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-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." }] }] }
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-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}"
}
}
]
}
]
}'
¿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.