Puedes usar las APIs de REST o el SDK de Python para hacer referencia al contenido almacenado en una caché de contexto en una aplicación de IA generativa. Antes de que se pueda usar, primero debes crear la caché de contexto.
El objeto de caché de contexto que usas en tu código incluye las siguientes propiedades:
name
: Es el nombre del recurso de caché de contexto. Su formato esprojects/PROJECT_NUMBER/locations/LOCATION/cachedContents/CACHE_ID
. Cuando creas una caché de contexto, puedes encontrar que el nombre del recurso está en la respuesta. El número de proyecto es un identificador numérico de tu proyecto. El ID de caché es un ID para tu caché. Cuando especificas una caché de contexto en tu código, debes usar el nombre completo del recurso de caché de contexto. El siguiente es un ejemplo que muestra cómo especificar un nombre de recurso de contenido almacenado en caché en un cuerpo de solicitud:"cached_content": "projects/123456789012/locations/us-central1/123456789012345678"
model
: Es el nombre del recurso del modelo que se usa para crear la caché. Su formato esprojects/PROJECT_NUMBER/locations/LOCATION/cachedContents/CACHE_ID
.createTime
: Es unTimestamp
que especifica la hora de creación de la caché de contexto.updateTime
: UnaTimestamp
que especifica la hora de actualización más reciente de una caché de contexto. Después de crear una caché de contexto y antes de que se actualice, suscreateTime
yupdateTime
son los mismos.expireTime
: UnaTimestamp
que especifica cuándo vence una caché de contexto. El valor predeterminado deexpireTime
es 60 minutos después decreateTime
. Puedes actualizar la caché con una fecha de vencimiento nueva. Para obtener más información, consulta Actualiza la caché de contexto.
Después de que una caché vence, se marca para su eliminación y no debes suponer que se puede usar o actualizar. Si necesitas usar una caché de contexto que venció, debes volver a crearla con un tiempo de vencimiento adecuado.
Restricciones de uso de caché de contexto
Las siguientes funciones se pueden especificar cuando creas una caché de contexto. No debes volver a especificarlos en tu solicitud:
La propiedad
GenerativeModel.system_instructions
. Esta propiedad se usa a fin de especificar instrucciones para el modelo antes de que este reciba instrucciones de un usuario. Para obtener más información, consulta Instrucciones del sistema.La propiedad
GenerativeModel.tool_config
. La propiedadtool_config
se usa para especificar las herramientas que usa el modelo de Gemini, como una herramienta que usa la característica de llamada a función.La propiedad
GenerativeModel.tools
. La propiedadGenerativeModel.tools
se usa para especificar funciones a fin de crear una aplicación que llama a función. Para obtener más información, consulta Llamadas a funciones.
Usa una muestra de caché de contexto
A continuación, se muestra cómo usar una caché de contexto. Cuando usas una caché de contexto, no puedes especificar las siguientes propiedades:
GenerativeModel.system_instructions
GenerativeModel.tool_config
GenerativeModel.tools
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
REST
Puedes usar REST para usar 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.
- MIME_TYPE: La instrucción de texto que se enviará al modelo.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-pro-001:generateContent
Cuerpo JSON de la solicitud:
{ "cached_content": "projects/PROJECT_NUMBER/locations/LOCATION/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/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-pro-001: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/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-pro-001: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"
MODEL_ID="gemini-1.5-pro-001"
PROJECT_ID="test-project"
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}:generateContent" -d \
'{
"cached_content": "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"
}
],
}'
- Obtén más información sobre cómo actualizar la fecha de vencimiento de una caché de contexto.
- Obtén más información sobre cómo crear una nueva caché de contexto.
- Descubre cómo obtener información sobre todas las caché de contexto asociadas con un proyecto de Google Cloud.
- Obtén más información sobre cómo borrar una caché de contexto.