Caché de prompts
Prompt Caching permite almacenar en caché los prefijos de prompt reutilizados, reduciendo el consumo de tokens y la latencia de respuesta.
Funcionamiento
Cuando su solicitud contiene un system prompt largo y reutilizado o información de contexto:
- Primera solicitud — Se procesan todos los tokens y se almacena en caché el prefijo del prompt
- Solicitudes posteriores — Cuando hay acierto de caché, los tokens de la parte cacheada no se cobran nuevamente
- Expiración del caché — El caché tiene un TTL (generalmente 5-10 minutos); después de expirar, se requiere un nuevo almacenamiento en caché
Soporte de caché
Los recursos de modelos de OfoxAI son proporcionados por proveedores oficiales de nube como AWS Bedrock, Azure OpenAI, Google Cloud, Alibaba Cloud y Volcengine. Los modelos que soportan Prompt Caching en estos proveedores de nube también son soportados por OfoxAI.
El soporte de caché específico de cada modelo está sujeto a la documentación oficial de cada proveedor de nube. OfoxAI transmite los parámetros de caché de forma transparente, sin necesidad de configuración adicional.
Esta página trata sobre el caché automático / implícito (el modelo reutiliza prefijos repetidos de mejor esfuerzo). Si necesita crear cachés de forma activa con aciertos deterministas para grandes contextos reutilizados repetidamente, Gemini también soporta el caché explícito — consulte Caché explícito de Gemini (cachedContents).
Modo de uso
Protocolo OpenAI
El Prompt Caching de los modelos OpenAI es automático — se activa automáticamente cuando se detectan prefijos de prompt repetidos:
# El system prompt largo se almacena en caché automáticamente
SYSTEM_PROMPT = """Eres el asistente de soporte técnico de OfoxAI.
A continuación se muestra la información del producto que necesitas conocer:
- OfoxAI es un LLM Gateway que soporta más de 100 modelos
- Soporta los tres protocolos OpenAI / Anthropic / Gemini
- ...
(más conocimiento del producto omitido)
"""
# Primera solicitud: almacena el system prompt en caché
response1 = client.chat.completions.create(
model="openai/gpt-6.1-sol",
messages=[
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": "¿Qué modelos soporta OfoxAI?"}
]
)
# Segunda solicitud: acierto de caché, más rápido y económico
response2 = client.chat.completions.create(
model="openai/gpt-6.1-sol",
messages=[
{"role": "system", "content": SYSTEM_PROMPT}, # Acierto de caché
{"role": "user", "content": "¿Cómo configurar Claude Code?"}
]
)Protocolo Anthropic
Los modelos Anthropic soportan control de caché explícito:
import anthropic
client = anthropic.Anthropic(
base_url="https://api.ofox.io/anthropic",
api_key="<su OFOXAI_API_KEY>"
)
response = client.messages.create(
model="anthropic/claude-sonnet-5.5",
max_tokens=1024,
system=[{
"type": "text",
"text": "Eres un asistente profesional. A continuación la documentación del producto...",
"cache_control": {"type": "ephemeral"} # Activar caché explícitamente
}],
messages=[{"role": "user", "content": "Resume las características del producto"}]
)
# Ver el estado de acierto de caché
print(f"Tokens de escritura en caché: {response.usage.cache_creation_input_tokens}")
print(f"Tokens de acierto de caché: {response.usage.cache_read_input_tokens}")Ahorro de costos
Tras un acierto de caché, los tokens de la parte cacheada se cobran al precio de lectura de caché, que es más bajo; el porcentaje de ahorro varía según el modelo. En algunos modelos, la escritura en caché se cobra aparte al precio de escritura de caché, que puede ser superior al precio de entrada normal.
Los precios de lectura y escritura de caché de cada modelo se indican en la página correspondiente de la lista de modelos.
El porcentaje real de ahorro depende de la tasa de acierto de caché y las políticas de facturación de cada proveedor de nube. Consulte las estadísticas de uso en la consola de OfoxAI para más detalles.
Mejores prácticas
- Coloque el texto largo al principio — El system prompt y el contenido de la base de conocimientos que no cambia deben ir al inicio de los messages
- Mantenga el prefijo consistente — Solo los prefijos exactamente iguales pueden acertar el caché
- Diseñe la estructura del prompt adecuadamente — Separe las partes fijas de las partes variables
# Buen diseño: contenido fijo al principio, contenido variable al final
messages = [
{"role": "system", "content": LONG_STATIC_PROMPT}, # Cacheable
{"role": "user", "content": dynamic_question} # Parte variable
]
# Mal diseño: contenido variable intercalado en el contenido fijo
messages = [
{"role": "system", "content": f"Today is {date}. {LONG_PROMPT}"} # Diferente cada día, no cacheable
]Los aciertos de caché se pueden consultar en el campo usage de la respuesta API, así como en las estadísticas de uso de la consola de OfoxAI.