Caché de prompts
El caché de prompts es una función poderosa que optimiza el uso de tu API permitiendo reanudar desde prefijos específicos en tus prompts. Este enfoque reduce significativamente el tiempo de procesamiento y los costos para tareas repetitivas o prompts con elementos consistentes.
Aquí hay un ejemplo de cómo implementar el caché de prompts con la API de Messages usando un bloque cache_control
:
En este ejemplo, el texto completo de “Orgullo y Prejuicio” se almacena en caché usando el parámetro cache_control
. Esto permite reutilizar este texto extenso en múltiples llamadas a la API sin reprocesarlo cada vez. Cambiar solo el mensaje del usuario te permite hacer varias preguntas sobre el libro mientras utilizas el contenido en caché, lo que resulta en respuestas más rápidas y mejor eficiencia.
Cómo funciona el caché de prompts
Cuando envías una solicitud con el caché de prompts habilitado:
- El sistema verifica si un prefijo de prompt, hasta un punto de caché especificado, ya está en caché de una consulta reciente.
- Si se encuentra, utiliza la versión en caché, reduciendo el tiempo de procesamiento y los costos.
- De lo contrario, procesa el prompt completo y almacena en caché el prefijo una vez que comienza la respuesta.
Esto es especialmente útil para:
- Prompts con muchos ejemplos
- Grandes cantidades de contexto o información de fondo
- Tareas repetitivas con instrucciones consistentes
- Conversaciones largas de múltiples turnos
El caché tiene una vida útil de 5 minutos, que se actualiza cada vez que se utiliza el contenido en caché.
El caché de prompts almacena el prefijo completo
El caché de prompts hace referencia al prompt completo - tools
, system
, y messages
(en ese orden) hasta e incluyendo el bloque designado con cache_control
.
Precios
El caché de prompts introduce una nueva estructura de precios. La tabla siguiente muestra el precio por token para cada modelo compatible:
Modelo | Tokens de Entrada Base | Escrituras en Caché | Aciertos en Caché | Tokens de Salida |
---|---|---|---|---|
Claude 3.5 Sonnet | $3 / MTok | $3.75 / MTok | $0.30 / MTok | $15 / MTok |
Claude 3.5 Haiku | $0.80 / MTok | $1 / MTok | $0.08 / MTok | $4 / MTok |
Claude 3 Haiku | $0.25 / MTok | $0.30 / MTok | $0.03 / MTok | $1.25 / MTok |
Claude 3 Opus | $15 / MTok | $18.75 / MTok | $1.50 / MTok | $75 / MTok |
Nota:
- Los tokens de escritura en caché son 25% más caros que los tokens de entrada base
- Los tokens de lectura en caché son 90% más baratos que los tokens de entrada base
- Los tokens regulares de entrada y salida tienen los precios estándar
Cómo implementar el caché de prompts
Modelos compatibles
El caché de prompts es actualmente compatible con:
- Claude 3.5 Sonnet
- Claude 3.5 Haiku
- Claude 3 Haiku
- Claude 3 Opus
Estructurando tu prompt
Coloca el contenido estático (definiciones de herramientas, instrucciones del sistema, contexto, ejemplos) al principio de tu prompt. Marca el final del contenido reutilizable para el caché usando el parámetro cache_control
.
Los prefijos de caché se crean en el siguiente orden: tools
, system
, luego messages
.
Usando el parámetro cache_control
, puedes definir hasta 4 puntos de interrupción de caché, permitiéndote almacenar en caché diferentes secciones reutilizables por separado. Para cada punto de interrupción, el sistema verificará automáticamente los aciertos en caché en posiciones anteriores y usará el prefijo coincidente más largo si se encuentra uno.
Limitaciones del caché
La longitud mínima de prompt que se puede almacenar en caché es:
- 1024 tokens para Claude 3.5 Sonnet y Claude 3 Opus
- 2048 tokens para Claude 3.5 Haiku y Claude 3 Haiku
Los prompts más cortos no pueden ser almacenados en caché, incluso si están marcados con cache_control
. Cualquier solicitud para almacenar en caché menos de este número de tokens será procesada sin caché. Para ver si un prompt fue almacenado en caché, consulta los campos de uso en la respuesta.
Para solicitudes concurrentes, ten en cuenta que una entrada en caché solo está disponible después de que comienza la primera respuesta. Si necesitas aciertos en caché para solicitudes paralelas, espera la primera respuesta antes de enviar solicitudes subsiguientes.
El caché tiene un tiempo de vida (TTL) de 5 minutos. Actualmente, “ephemeral” es el único tipo de caché compatible, que corresponde a esta vida útil de 5 minutos.
Qué se puede almacenar en caché
Cada bloque en la solicitud puede ser designado para caché con cache_control
. Esto incluye:
- Herramientas: Definiciones de herramientas en el array
tools
- Mensajes del sistema: Bloques de contenido en el array
system
- Mensajes: Bloques de contenido en el array
messages.content
, tanto para turnos de usuario como de asistente - Imágenes: Bloques de contenido en el array
messages.content
, en turnos de usuario - Uso de herramientas y resultados de herramientas: Bloques de contenido en el array
messages.content
, tanto en turnos de usuario como de asistente
Cada uno de estos elementos puede ser marcado con cache_control
para habilitar el caché para esa porción de la solicitud.
Seguimiento del rendimiento del caché
Monitorea el rendimiento del caché usando estos campos de respuesta de la API, dentro de usage
en la respuesta (o evento message_start
si estás transmitiendo):
cache_creation_input_tokens
: Número de tokens escritos en el caché al crear una nueva entrada.cache_read_input_tokens
: Número de tokens recuperados del caché para esta solicitud.input_tokens
: Número de tokens de entrada que no fueron leídos o usados para crear un caché.
Mejores prácticas para un caché efectivo
Para optimizar el rendimiento del caché de prompts:
- Almacena en caché contenido estable y reutilizable como instrucciones del sistema, información de fondo, contextos grandes o definiciones frecuentes de herramientas.
- Coloca el contenido en caché al principio del prompt para un mejor rendimiento.
- Usa puntos de interrupción de caché estratégicamente para separar diferentes secciones de prefijo que se pueden almacenar en caché.
- Analiza regularmente las tasas de aciertos en caché y ajusta tu estrategia según sea necesario.
Optimización para diferentes casos de uso
Adapta tu estrategia de caché de prompts a tu escenario:
- Agentes conversacionales: Reduce el costo y la latencia para conversaciones extensas, especialmente aquellas con instrucciones largas o documentos cargados.
- Asistentes de codificación: Mejora el autocompletado y las preguntas y respuestas sobre la base de código manteniendo secciones relevantes o una versión resumida de la base de código en el prompt.
- Procesamiento de documentos grandes: Incorpora material completo de forma larga incluyendo imágenes en tu prompt sin aumentar la latencia de respuesta.
- Conjuntos detallados de instrucciones: Comparte extensas listas de instrucciones, procedimientos y ejemplos para afinar las respuestas de Claude. Los desarrolladores a menudo incluyen uno o dos ejemplos en el prompt, pero con el caché de prompts puedes obtener un rendimiento aún mejor incluyendo más de 20 ejemplos diversos de respuestas de alta calidad.
- Uso de herramientas agénticas: Mejora el rendimiento para escenarios que involucran múltiples llamadas a herramientas y cambios iterativos de código, donde cada paso típicamente requiere una nueva llamada a la API.
- Habla con libros, documentos, documentación, transcripciones de podcasts y otro contenido de forma larga: Da vida a cualquier base de conocimiento incrustando el documento(s) completo en el prompt y permitiendo a los usuarios hacerle preguntas.
Solución de problemas comunes
Si experimentas un comportamiento inesperado:
- Asegúrate de que las secciones en caché sean idénticas y estén marcadas con cache_control en las mismas ubicaciones entre llamadas
- Verifica que las llamadas se realicen dentro del tiempo de vida del caché de 5 minutos
- Verifica que
tool_choice
y el uso de imágenes permanezcan consistentes entre llamadas - Valida que estés almacenando en caché al menos el número mínimo de tokens
- Aunque el sistema intentará usar contenido previamente almacenado en caché en posiciones anteriores a un punto de interrupción de caché, puedes usar un parámetro
cache_control
adicional para garantizar la búsqueda en caché en porciones anteriores del prompt, lo que puede ser útil para consultas con listas muy largas de bloques de contenido
Ten en cuenta que los cambios en tool_choice
o la presencia/ausencia de imágenes en cualquier parte del prompt invalidarán el caché, requiriendo la creación de una nueva entrada en caché.
Almacenamiento y Compartición del Caché
-
Aislamiento de Organización: Los cachés están aislados entre organizaciones. Diferentes organizaciones nunca comparten cachés, incluso si usan prompts idénticos.
-
Coincidencia Exacta: Los aciertos en caché requieren segmentos de prompt 100% idénticos, incluyendo todo el texto e imágenes hasta e incluyendo el bloque marcado con cache control. El mismo bloque debe estar marcado con cache_control durante las lecturas y creación del caché.
-
Generación de Tokens de Salida: El caché de prompts no tiene efecto en la generación de tokens de salida. La respuesta que recibes será idéntica a la que obtendrías si no se usara el caché de prompts.
Ejemplos de caché de prompts
Para ayudarte a comenzar con el caché de prompts, hemos preparado un libro de recetas de caché de prompts con ejemplos detallados y mejores prácticas.
A continuación, hemos incluido varios fragmentos de código que muestran varios patrones de caché de prompts. Estos ejemplos demuestran cómo implementar el caché en diferentes escenarios, ayudándote a entender las aplicaciones prácticas de esta función:
Preguntas frecuentes
Was this page helpful?