Skip to Content
DocsFunciones avanzadasCaché explícito de Gemini

Caché explícito de Gemini (cachedContents)

Gemini ofrece dos tipos de caché:

  • Caché implícito (automático) — el modelo detecta y reutiliza automáticamente los prefijos de prompt repetidos, sin necesidad de configuración. Este es el comportamiento por defecto que se trata en Caché de prompts; los aciertos son «best-effort» (de mejor esfuerzo), y cualquier pequeño cambio en el prefijo puede provocar un fallo de acierto.
  • Caché explícito (esta página) — usted crea de forma activa un gran fragmento de contexto como un objeto de caché, recibe un identificador cachedContents/{id} y lo referencia en solicitudes generateContent posteriores. Los aciertos son deterministas: mientras el caché no haya expirado, una referencia siempre acierta.

Use el caché explícito cuando tenga un contexto grande y estable que se reutiliza repetidamente (documentos largos, bases de código, bases de conocimiento, instrucciones de sistema fijas) y quiera tasas de acierto controlables y facturación predecible.

OfoxAI soporta la creación / referencia / consulta / eliminación de cachedContents nativos de Gemini, compatible con el Google GenAI SDK. Para la referencia a nivel de endpoint, consulte la cachedContents API.

Cuándo usar el caché explícito

EscenarioRecomendación
Preguntas y respuestas repetidas sobre un gran contexto fijo (QA de documentos, asistente de código)✅ Caché explícito
Necesita aciertos garantizados y no puede tolerar fallos ocasionales✅ Caché explícito
Solicitudes cortas, poco frecuentes y con prefijos variables❌ El caché implícito es suficiente; no hay objeto de caché que administrar
El contexto cambia cada vez❌ El caché no aporta valor

El caché explícito requiere que el contenido cacheado alcance un umbral mínimo de tokens (aproximadamente 2.048–4.096 tokens, según el modelo). El contenido demasiado pequeño fallará al crearse o no aportará beneficio.

Endpoints

OfoxAI ofrece los endpoints completos de cachedContents bajo el protocolo nativo de Gemini:

POST https://api.ofox.ai/gemini/v1beta/cachedContents # Crear GET https://api.ofox.ai/gemini/v1beta/cachedContents/{id} # Consultar DELETE https://api.ofox.ai/gemini/v1beta/cachedContents/{id} # Eliminar

Para referenciar un caché en la generación de contenido, use el endpoint estándar generateContent y agregue cachedContent al cuerpo de la solicitud:

POST https://api.ofox.ai/gemini/v1beta/models/{model}:generateContent

Autenticación

Al igual que los demás endpoints de Gemini, use el header x-goog-api-key:

x-goog-api-key: <su OFOXAI_API_KEY>

Flujo completo

A continuación se muestra un flujo completo: crear caché → referenciar el caché para generar → eliminar el caché.

1. Crear un caché

Coloque en contents el gran contexto que desea reutilizar y especifique model y ttl (tiempo de vida):

create_cache.py
from google import genai from google.genai import types client = genai.Client( api_key="<su OFOXAI_API_KEY>", http_options={"api_version": "v1beta", "base_url": "https://api.ofox.ai/gemini"}, ) # Un documento grande reutilizado repetidamente (debe alcanzar el umbral mínimo de tokens) LONG_DOCUMENT = open("knowledge_base.txt").read() cache = client.caches.create( model="google/gemini-3.1-pro-preview", config=types.CreateCachedContentConfig( contents=[LONG_DOCUMENT], ttl="600s", # el caché vive 10 minutos ), ) print(cache.name) # cachedContents/xxxxxxxx —— el identificador para referencias posteriores

El name devuelto (con la forma cachedContents/xxxxxxxx) es el identificador del caché. Guárdelo para las referencias y la administración posteriores.

2. Referenciar el caché para generar

Referencie el identificador del caché mediante cachedContent en una solicitud generateContent; contents solo necesita la nueva pregunta de este turno:

use_cache.py
response = client.models.generate_content( model="google/gemini-3.1-pro-preview", contents="Basándote en el documento anterior, resume tres puntos clave", config=types.GenerateContentConfig( cached_content=cache.name, # referencia el caché ), ) print(response.text) # Acierto de caché: la parte cacheada se cobra a la tarifa de «lectura» más baja print(response.usage_metadata.cached_content_token_count)

En un acierto, el usageMetadata.cachedContentTokenCount de la respuesta muestra cuántos tokens provienen del caché. El mismo caché puede referenciarse cualquier número de veces, cada una con un acierto determinista, hasta que expire.

3. Consultar y eliminar

Consulte los metadatos del caché, o elimínelo de forma proactiva cuando ya no lo necesite (sin esperar a que el TTL expire):

manage_cache.py
# Consultar info = client.caches.get(name=cache.name) print(info.expire_time) # Eliminar client.caches.delete(name=cache.name)

Consultar / eliminar no requieren volver a pasar model. OfoxAI localiza el caché únicamente con el identificador.

Ciclo de vida y TTL

Especifique el tiempo de vida mediante ttl al crear, como una cadena de segundos terminada en s (p. ej. "600s").

ParámetroValor
TTL mínimo / por defecto600s (10 minutos)
TTL máximo3600s (1 hora)
  • Dentro del TTL, el caché puede referenciarse repetidamente con aciertos deterministas.
  • Tras expirar el TTL, el caché se invalida automáticamente y referenciarlo dará error (el caché ya no existe).
  • Puede delete en cualquier momento para liberarlo anticipadamente.

Referenciar un caché expirado o eliminado falla. Maneje el caso de «caché invalidado» en el lado del cliente (capture el error y vuelva a crear el caché, o recurra a una solicitud normal).

Facturación

El caché explícito se factura de forma transparente por token, en tres partes:

EtapaFórmulaNotas
Crear cachétotalTokenCount × tarifa cache_writeSe cobra a la tarifa de «escritura en caché»; totalTokenCount proviene del usageMetadata de la respuesta de creación, es decir, el número de tokens cacheados
Acierto por referenciacachedContentTokenCount × tarifa cache_readLa parte cacheada se cobra a la tarifa de «lectura de caché», aproximadamente 0.10x del precio estándar de entrada, mucho más barato que reenviar todo
Nuevo contenido por referenciaEl nuevo prompt / salida de cada turno se cobra a tarifas estándarEs decir, cada nueva pregunta que hace y la nueva respuesta del modelo

El modelo económico: paga una tarifa de «escritura» en la creación, y luego cada referencia cobra el contenido cacheado a la tarifa de «lectura» más baja, ahorrando el costo de «reenviar todo el contexto a precio completo». Cuantas más referencias, más ahorra. Los precios unitarios cache_write / cache_read de cada modelo son los del catálogo de modelos  y las estadísticas de uso de su consola.

Mejora en OfoxAI: enrutamiento determinista

OfoxAI balancea la carga entre múltiples regiones de GCP / proyectos de Vertex. Los cachés explícitos son region-scoped (vinculados a la región): un caché creado en un proyecto de GCP debe referenciarse en ese mismo proyecto, de lo contrario dará 404.

OfoxAI gestiona esto automáticamente: al crear el caché, registra la instancia upstream a la que está vinculado, y luego busca esa instancia por el identificador del caché y fija de forma rígida las referencias de vuelta al mismo upstream. Independientemente de si su solicitud de referencia lleva un identificador de usuario o de cómo se programe la carga, las referencias se enrutan con precisión al proyecto que creó el caché, con cero deriva. No necesita preocuparse por la distribución de regiones subyacente.

La propiedad del caché está protegida: un identificador de caché solo puede ser referenciado / consultado / eliminado por la API Key (y el mismo propietario) que lo creó; el acceso entre cuentas se rechaza (403).

Caché explícito vs. caché implícito

DimensiónCaché implícito (automático)Caché explícito (cachedContents)
ActivaciónDetecta automáticamente prefijos repetidosCrea de forma activa un objeto de caché y lo referencia
Determinismo del aciertoDe mejor esfuerzo; un pequeño cambio de prefijo puede fallarDeterminista; siempre acierta mientras no haya expirado
AdministraciónNingunaCrear / referenciar / eliminar un identificador
Ideal paraContenido corto con prefijos repetidos ocasionalmenteContexto grande, estable y reutilizado repetidamente
FacturaciónDescuento de tarifa de lectura en el aciertoTarifa de escritura al crear + descuento de tarifa de lectura al referenciar

Ambos pueden combinarse. Para las solicitudes cotidianas, deje que el caché implícito se active automáticamente; para el contexto que seguramente reutilizará repetidamente, use el caché explícito para asegurar los aciertos. Consulte Caché de prompts para los detalles del caché implícito.

Documentación relacionada

Last updated on