Almacenamiento en caché del contexto para modelos de Gemini ajustados

Puedes usar el almacenamiento en caché del contexto en tus modelos de Gemini ajustados para mejorar el rendimiento y reducir los costes de las peticiones que incluyan grandes cantidades de contexto. Al almacenar en caché el contexto que se usa con frecuencia, evitas tener que volver a enviar grandes cantidades de datos con cada solicitud a tu modelo ajustado.

Las operaciones de gestión (Read, Update y Delete) de la caché de contexto de Gemini ajustado siguen siendo las mismas que las de los modelos base. Solo se requiere un ajuste específico para la creación y la inferencia de contenido almacenado en caché, que se detalla a continuación.

Requisitos previos

Optimizar un modelo de Gemini: necesitas un modelo de Gemini optimizado e implementado basado en un modelo base compatible (consulta la descripción general del almacenamiento en caché del contexto). Para obtener información sobre cómo ajustar un modelo de Gemini, consulta Ajustar un modelo de Gemini. Para obtener el endpoint de tu modelo afinado desplegado, consulta Desplegar un modelo afinado.

Asegúrate de que tienes la siguiente información:

  • El ID y la versión del modelo de Gemini ajustado
  • Nombre del recurso de endpoint del modelo ajustado desplegado

Crear una caché de contexto para un modelo ajustado

El procedimiento para crear una caché de contexto para un modelo ajustado sigue en gran medida los pasos descritos en Crear una caché de contexto. Consulta la documentación vinculada para ver el proceso general. Esta guía se centra 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 de Gemini ajustado.

REST

Puedes usar REST para crear una caché de contexto usando la API de Vertex AI para enviar una solicitud POST al endpoint del modelo de editor. En el ejemplo siguiente se muestra cómo crear una caché de contexto mediante un archivo almacenado en un segmento de Cloud Storage.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto.
  • LOCATION: la región en la que se procesa la solicitud y donde se almacena el contenido en caché. Para ver una lista de las regiones admitidas, consulta Regiones disponibles.
  • MODEL_ID: ID del modelo de Gemini ajustado.
  • MODEL_VERSION: la versión del modelo de Gemini ajustado.
  • CACHE_DISPLAY_NAME: un nombre visible significativo para describir y ayudarte a identificar cada caché de contexto.
  • MIME_TYPE: el tipo MIME del contenido que se va a almacenar en caché.
  • CONTENT_TO_CACHE_URI: el URI de Cloud Storage del contenido que se va a 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 siguiente:

Comando curl de ejemplo

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}"
          }
        }
      ]
    }
  ]
}'

Usar una caché de contexto para un modelo ajustado

El procedimiento para usar una caché de contexto en un modelo ajustado sigue en gran medida los pasos descritos en Usar una caché de contexto. Consulta la documentación vinculada para obtener información sobre el proceso general. Esta guía se centra en la diferencia de usar la caché de contexto en los modelos de Gemini ajustados.

En lugar de enviar la solicitud al endpoint del modelo base con el formato projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/{MODEL}, debes enviarla al endpoint del modelo ajustado que has implementado con el formato 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

Puede usar REST para especificar una caché de contexto con una petición enviando una solicitud POST al endpoint del modelo de editor mediante la API de Vertex AI.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto.
  • LOCATION: la región en la que se ha procesado la solicitud para crear la caché de contexto.
  • ENDPOINT_ID: el endpoint en el que se ha desplegado el modelo ajustado.
  • MIME_TYPE: la petición de texto que se envía 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 siguiente.

Comando curl de ejemplo

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"
    }
  ],
}'