Almacenamiento de contexto en caché para modelos de Gemini ajustados

Puedes usar el almacenamiento en 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, evitarás volver a enviar grandes cantidades de datos con cada solicitud a tu modelo ajustado.

Las operaciones de administración (Read, Update, Delete) de la caché de contexto para los modelos de Gemini ajustados 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 en las siguientes secciones.

Requisitos previos

Ajuste de un modelo de Gemini: Necesitas un modelo de Gemini ajustado implementado basado en un modelo base compatible (consulta Descripción general del almacenamiento en caché de contexto). Para obtener detalles sobre cómo ajustar un modelo de Gemini, consulta Ajusta 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 del extremo para el modelo ajustado implementado

Versiones compatibles

Los modelos de Gemini ajustados admiten el almacenamiento en caché implícito para las siguientes versiones:

Se admite el almacenamiento en caché explícito para las siguientes versiones:

Crea 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 que se describen en Crea una caché de contexto. Consulta la documentación vinculada para conocer el proceso general. Esta guía se centra en la diferencia de crear una caché de contexto para los modelos de Gemini ajustados.

En lugar de usar el modelo base en el formato projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/{MODEL}, debes usar tu modelo ajustado en el formato 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 con la API de Agent Platform 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: Tu [ID del proyecto](/resource-manager/docs/creating-managing-projects#identifiers). .
  • LOCATION: 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 de Gemini ajustado.
  • CACHE_DISPLAY_NAME: Un nombre visible significativo para describir y ayudarte a identificar cada caché de contexto.
  • 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/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"
        }
      }]
  }]
}

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 Usa una caché de contexto. Consulta la documentación vinculada para conocer el proceso general. Esta guía se centra en la diferencia de usar una caché de contexto para los modelos de Gemini ajustados.

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

Puedes usar REST para especificar una caché de contexto con una instrucción con la API de Agent Platform 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: Tu [ID del proyecto](/resource-manager/docs/creating-managing-projects#identifiers). .
  • LOCATION: La región en la que se procesó la solicitud para crear la caché de contexto
  • ENDPOINT_ID: El extremo en el que se implementa el modelo ajustado.
  • PROMPT_TEXT: 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"
    }
  ],
}'