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:

  1. El sistema verifica si un prefijo de prompt, hasta un punto de caché especificado, ya está en caché de una consulta reciente.
  2. Si se encuentra, utiliza la versión en caché, reduciendo el tiempo de procesamiento y los costos.
  3. 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:

ModeloTokens de Entrada BaseEscrituras 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?