cache_control a un prefijo estable, la primera solicitud crea una caché y las solicitudes posteriores pueden leerla mientras no haya caducado.
Antes de empezar, configura tu clave de API:
Los ejemplos de esta guía usan
claude-sonnet-5. Para saber si otros modelos admiten la caché de contexto, consulta la descripción de los modelos en la plataforma.Casos de uso
Cuando varias solicitudes incluyen repetidamente el mismo bloque grande de contenido, puedes almacenar en caché un prefijo estable, por ejemplo:- Un prompt del sistema largo
- Una base de conocimientos fija o documentación de producto
- Un historial de conversación de varios turnos que permanece sin cambios
- Bases de código, definiciones de herramientas e instrucciones que se reutilizan
API Claude Messages
Caché de 5 minutos
Añadecache_control al bloque de contenido que quieras almacenar en caché:
ttl, el periodo de validez predeterminado de la caché es de 5 minutos.
Caché de 1 hora
Para usar una caché de 1 hora, añade también el encabezado de solicitudanthropic-beta y establece ttl en 1h:
Campos de uso de la respuesta
La API Claude Messages devuelve por separado los tokens de entrada normal, escritura en caché y lectura de caché dentro deusage:
cache_creation_input_tokens > 0; al volver a enviar el mismo prefijo estable, debería aparecer cache_read_input_tokens > 0.
API compatible con OpenAI
Ejemplo de solicitud
Al usar la caché mediante/v1/chat/completions, la sintaxis de cache_control es similar a la de la API Claude Messages:
Caché de 1 hora
El formato compatible con OpenAI también admite una caché de 1 hora. Solo tienes que añadir el encabezado de solicitudanthropic-beta y establecer ttl: "1h" dentro de cache_control:
content debe ser un array
En el formato compatible con OpenAI, cache_control debe estar dentro de un bloque de contenido concreto. No se puede añadir a un mensaje cuyo contenido sea una cadena.
Almacenar en caché bloques de contenido user o assistant
También puedes colocar cache_control en el bloque de contenido de un mensaje user o assistant para almacenar en caché un documento largo o un prefijo de conversación de varios turnos:
cache_control únicamente al bloque de contenido estable.
Campos de uso de la respuesta
El formato compatible con OpenAI utiliza campos diferentes para informar del uso de la caché:Si
prompt_tokens_details.cache_write_tokens es 0, también debes comprobar claude_cache_creation_5_m_tokens y claude_cache_creation_1_h_tokens. Cuando existen campos de desglose por TTL, la cantidad escrita en la caché se devuelve mediante el campo correspondiente.En
claude_cache_creation_5_m_tokens y claude_cache_creation_1_h_tokens, hay guiones bajos entre el número y la unidad. Utiliza exactamente los nombres de campo devueltos en la respuesta.Condiciones para leer la caché
El prefijo alcanza la longitud mínima
Por lo general, el prefijo de caché del modelo usado en los ejemplos debe tener al menos unos 1024 tokens. Si el prefijo es demasiado corto, el marcador de caché puede ignorarse sin generar ningún error.El prefijo permanece idéntico byte a byte
El texto, los espacios, los saltos de línea y el orden de los bloques de contenido del prefijo de caché deben permanecer sin cambios. No añadas al prefijo estable contenido dinámico, como marcas de tiempo, identificadores aleatorios o contadores de solicitudes.La solicitud no ha provocado un rechazo del modelo
Si la solicitud provoca un rechazo del modelo, la respuesta puede seguir informando de tokens de creación de caché, pero esa caché no se leerá en la siguiente solicitud. Al investigar por qué no se ha leído la caché, comprueba también sistop_reason es refusal.
La caché sigue vigente
El periodo de validez de la caché es de 5 minutos o 1 hora y se calcula desde el último acceso. Una lectura de la caché renueva su periodo de validez.Uso para facturación
El uso relacionado con la caché se divide en tres categorías:
Estas tres categorías de uso no se solapan. La escritura en caché suele costar más que la entrada normal, mientras que la lectura de caché suele costar menos. Por tanto, la caché de contexto es más adecuada para prefijos estables que se reutilicen dentro del TTL.
Ejemplo mínimo reproducible
El siguiente script genera primero un prefijo estable suficientemente largo y después envía dos veces la misma solicitud. La segunda respuesta debería mostrarcache_read_input_tokens > 0.
Lista de comprobación para solucionar problemas
Si no se lee la caché, comprueba los siguientes puntos en orden:- ¿
stop_reasonesrefusal? - ¿El prefijo de caché alcanza el número mínimo de tokens exigido por el modelo?
- ¿Los prefijos estables de ambas solicitudes son idénticos byte a byte?
- En el formato compatible con OpenAI, ¿
contentes un array? - ¿
cache_controlestá dentro de un bloque de contenido concreto? - Para la caché de 1 hora, ¿se han configurado tanto
ttl: "1h"como el encabezadoanthropic-betacorrespondiente? - ¿La caché ha superado su TTL?
- ¿Estás leyendo los campos de uso de caché correspondientes a la API actual?