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 Mensajes 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 para uso futuro.
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 de Caché | Tokens de Salida |
---|---|---|---|---|
Claude 3.5 Sonnet | $3 / MTok | $3.75 / MTok | $0.30 / MTok | $15 / MTok |
Claude 3.5 Haiku | $1 / MTok | $1.25 / MTok | $0.10 / MTok | $5 / 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 de 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 actualmente es compatible con:
- Claude 3.5 Sonnet
- Claude 3.5 Haiku
- Claude 3 Haiku
- Claude 3 Opus
Estructuración de 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 ruptura de caché, permitiéndote almacenar en caché diferentes secciones reutilizables por separado.
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.
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 ruptura de caché estratégicamente para separar diferentes secciones de prefijo que se pueden almacenar en caché.
- Analiza regularmente las tasas de aciertos del 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 el código base manteniendo secciones relevantes o una versión resumida del código base 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 listas extensas 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
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 de 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 de 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?