Cargando

Reglas del almacenamiento en caché de prompts

Lección 477 min

El almacenamiento en caché de prompts en Claude funciona almacenando el trabajo computacional realizado en los mensajes para que pueda reutilizarse en solicitudes posteriores. Esto hace que las solicitudes que usan contenido en caché sean más baratas y más rápidas de ejecutar.

Claude escribe el trabajo realizado en el prompt "Please summarize this" en la caché, y luego lo lee en la solicitud de seguimiento.

El proceso sigue un patrón simple: tu solicitud inicial escribirá en la caché, y las solicitudes de seguimiento podrán leer de la caché. La caché vive durante 5 minutos, así que esta función solo es útil si estás enviando repetidamente el mismo contenido, pero esto ocurre con muchísima frecuencia en aplicaciones reales.

Puntos de interrupción de caché

El trabajo realizado en los mensajes no se almacena en caché automáticamente. Tenemos que agregar manualmente un "punto de interrupción de caché" a un bloque. El trabajo realizado para todo lo anterior al punto de interrupción se almacenará en caché, y la caché solo se usará en solicitudes posteriores si el contenido hasta el punto de interrupción, incluyéndolo, es idéntico.

Un bloque de texto de mensaje de usuario que contiene un prompt largo, con su tipo "cache_control" "ephemeral" etiquetado como el punto de interrupción de caché.

Cuando necesites agregar puntos de interrupción de caché, debes usar la forma extendida para escribir bloques de texto en lugar de la forma abreviada. Aquí está la diferencia:

python
# Forma abreviada: no se pueden agregar puntos de interrupción de caché
user_message = {
  "role": "user",
  "content": "Hi there!"
}

# Forma extendida: requerida para puntos de interrupción de caché
user_message = {
  "role": "user", 
  "content": [
    {
      "type": "text",
      "text": "Hi there!",
      "cache_control": {
        "type": "ephemeral"
      }
    }
  ]
}

Cómo funcionan los puntos de interrupción de caché

Los puntos de interrupción de caché abarcan mensajes y también pueden almacenar en caché mensajes del asistente. Cuando colocas un punto de interrupción, todo lo anterior a ese punto se almacena en caché. ¡Recuerda que el contenido debe ser idéntico para usar la caché!

Trabajo realizado en Claude para cada uno de cuatro bloques de texto, con la línea punteada del punto de interrupción después del primero y la caja de Caché vacía.

En una solicitud de seguimiento, Claude lee el trabajo previamente procesado desde la caché en lugar de volver a procesarlo:

Claude lee el trabajo en caché de tres bloques de una solicitud de seguimiento cuyo último bloque "Focus the summary on" tiene el punto de interrupción.

Ubicación del punto de interrupción

¡No estás restringido a los bloques de texto! Puedes agregar puntos de interrupción de caché a indicaciones del sistema y a definiciones de herramientas. Estas son en realidad las oportunidades de almacenamiento en caché más comunes, ya que rara vez cambian entre solicitudes.

python
# Definiciones de herramientas con punto de interrupción de caché
tools = [
  add_duration_to_datetime_schema,
  get_current_datetime_schema,
  {
    "name": "set_reminder",
    "description": "Sets a reminder...",
    "input_schema": { ... },
    "cache_control": {"type": "ephemeral"}
  }
]

# Indicación del sistema con punto de interrupción de caché  
system = [
  {
    "type": "text",
    "text": "You are a senior software...",
    "cache_control": {"type": "ephemeral"}
  }
]

Orden de la caché

Detrás de escena, las herramientas, las indicaciones del sistema y los mensajes se unen en ese orden específico al introducirse en Claude. Esto afecta la forma en que funcionan tus puntos de interrupción de caché.

En ambas solicitudes el punto de interrupción de caché está en Tool 3, antes de la indicación del sistema y los mensajes; el mensaje del asistente de la Solicitud 2 cambió.

Puedes agregar hasta cuatro puntos de interrupción de caché en total. Si colocas un punto de interrupción en tu última herramienta, todo lo anterior a esa herramienta se almacenará en caché, pero la indicación del sistema y los mensajes no lo estarán. Esto te da un control detallado sobre qué se almacena en caché según lo que cambie en tu aplicación.

Longitud mínima de contenido

Existe una longitud mínima para el almacenamiento en caché, y depende del modelo. Para Claude Haiku 4.5, el modelo que usa este curso, el contenido debe tener al menos 4,096 tokens de longitud para almacenarse en caché. Esta es la suma de todos los mensajes y bloques que estás intentando almacenar en caché, no de bloques individuales.

Un mensaje como "Hi there!" es demasiado corto para almacenarse en caché, pero un prompt genuinamente largo alcanza el mínimo. El contenido por debajo del mínimo simplemente se procesa sin almacenarse en caché, y no se devuelve ningún error. Para saberlo, observa el uso de la respuesta: cache_creation_input_tokens y cache_read_input_tokens serán ambos 0.

La clave para un almacenamiento en caché de prompts eficaz es identificar las partes de tus solicitudes que se mantienen constantes —generalmente tus indicaciones del sistema y definiciones de herramientas— y colocar los puntos de interrupción estratégicamente para maximizar los aciertos de caché mientras se minimiza el reprocesamiento.