Puedes usar la caché de contexto para tus modelos de Gemini ajustados para mejorar el rendimiento y reducir los costos de las instrucciones que incluyen grandes cantidades de contexto. Si almacenas en caché el contexto que se usa con frecuencia, evitas volver a enviar grandes cantidades de datos con cada solicitud a tu modelo optimizado.
Las operaciones de administración (Read
, Update
, Delete
) de la caché de contexto para Gemini ajustado siguen siendo coherentes con los modelos base. Solo la creación y la inferencia de contenido almacenado en caché requieren un ajuste específico, que se detalla a continuación.
Modelos compatibles
La caché de contexto es compatible con los modelos ajustados a partir del siguiente modelo base:
gemini-2.0-flash-001
Requisitos previos
Ajuste fino de un modelo de Gemini: Necesitas un modelo de Gemini ajustado en detalle y, además, implementado basado en un modelo de base compatible (consulta Modelos compatibles). Para obtener detalles sobre cómo ajustar un modelo de Gemini, consulta Cómo ajustar un modelo de Gemini. Para obtener el extremo de tu modelo ajustado implementado, consulta Implementa un modelo ajustado.
Asegúrate de tener la siguiente información:
- El ID y la versión del modelo de Gemini ajustado
- El nombre del recurso de extremo del modelo ajustado que se implementó
Crea una caché de contexto para un modelo ajustado
El modelo base compatible se indica en Modelos compatibles.
El procedimiento para crear una caché de contexto para un modelo ajustado sigue en gran medida los pasos que se describen en Crea una caché de contexto. Consulta la documentación vinculada para conocer el proceso general. Esta guía se enfoca en la diferencia de crear una caché de contexto para modelos de Gemini ajustados.
En lugar de usar el modelo base en forma de projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/{MODEL}
, debes usar tu modelo ajustado en forma de projects/{PROJECT}/locations/{LOCATION}/models/{MODEL}@{VERSION}
.
En los siguientes ejemplos, se muestra cómo crear una caché de contexto con un modelo Gemini ajustado.
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.
- MODEL_ID: El ID del modelo de Gemini ajustado.
- MODEL_VERSION: La versión del modelo Gemini ajustado.
- 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/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents
Cuerpo JSON de la solicitud:
{ "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." }] }] }
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/v1/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/v1/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="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}"
}
}
]
}
]
}'
Usa una caché de contexto para un modelo ajustado
El procedimiento para usar una caché de contexto para un modelo ajustado sigue en gran medida los pasos que se describen en Cómo usar una caché de contexto. Consulta la documentación vinculada para conocer el proceso general. Esta guía se enfoca en la diferencia de usar la caché de contexto para los modelos de Gemini ajustados.
En lugar de enviar la solicitud al extremo del modelo base en forma de projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/{MODEL}
, debes enviarla al extremo de tu modelo ajustado implementado en forma de projects/{PROJECT}/locations/{LOCATION}/endpoints/{ENDPOINT_ID}
.
En el siguiente ejemplo de código, se muestra cómo usar una caché de contexto con un modelo de Gemini ajustado.
Cuando usas una caché de contexto, no puedes especificar las siguientes propiedades:
GenerativeModel.system_instructions
GenerativeModel.tool_config
GenerativeModel.tools
REST
Puedes usar REST para especificar una caché de contexto con una instrucción mediante la API de Vertex AI para enviar una solicitud POST al extremo del modelo del publicador.
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 procesó la solicitud para crear la caché de contexto.
- ENDPOINT_ID: Es el extremo en el que se implementa el modelo más preciso.
- MIME_TYPE: La instrucción de texto que se enviará al modelo.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID:generateContent
Cuerpo JSON de la solicitud:
{ "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" } ], }
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/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID:generateContent"
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/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID:generateContent" | 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"
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"
}
],
}'