048_what_is_prompt_caching - IUGO-Studio/tech-ia GitHub Wiki

Resumen general:

El video explica cómo funciona el "prompt caching" (almacenamiento en caché de prompts) tanto en OpenAI como en Anthropic, y cómo se puede utilizar para reducir costos y mejorar la eficiencia al interactuar con modelos de lenguaje (LLMs). Se demuestra cómo implementar el "prompt caching" en un Jupyter Notebook utilizando las bibliotecas de OpenAI y Anthropic, y se muestra cómo calcular los ahorros de costos resultantes.

Conceptos clave:

  • Prompt Caching (Almacenamiento en caché de prompts): Una técnica que almacena en caché los prompts (o partes de ellos) y sus correspondientes respuestas generadas por un LLM. Cuando se realiza una solicitud similar, el sistema puede recuperar la respuesta de la caché en lugar de volver a procesar el prompt con el LLM, lo que ahorra tiempo y recursos.
  • OpenAI: Una organización de investigación en inteligencia artificial que ofrece modelos de lenguaje como GPT-4o.
  • Anthropic: Otra empresa de IA que desarrolla modelos de lenguaje como Claude.
  • Tokens: Las unidades básicas de texto que un LLM procesa.
  • Ventana de contexto (Context Window): El límite de tokens que un modelo puede procesar.
  • Costo por millón de tokens: La tarifa que se cobra por procesar un millón de tokens con un LLM.
  • Prompt Engineering: El arte de diseñar prompts.
  • LLM: Modelo de lenguaje extenso.

Ejemplos prácticos:

  1. Prompt Caching con OpenAI:

    • Se define una función check_openai_caching que realiza una solicitud a la API de OpenAI con un prompt del sistema y un prompt del usuario.
    • Se muestra que la primera vez que se llama a la función con un prompt específico, no hay tokens en caché.
    • La segunda vez que se llama a la función con el mismo prompt del sistema (dentro de un período de tiempo limitado, 5 minutos en el ejemplo), se utilizan tokens en caché para la parte del prompt del sistema, lo que reduce el costo.
    • OpenAI ofrece un 50% de reducción de costos con esta técnica.
  2. Prompt Caching con Anthropic:

    • Se define una función create_anthropic_cached_message que utiliza la API de Anthropic para realizar una solicitud con "prompt caching".
    • Se utiliza una clave de control de caché (cache_control) con el tipo "ephemeral" para indicar que se desea almacenar en caché el prompt del sistema.
    • Se muestra que la primera vez que se llama a la función, se crean tokens de caché.
    • La segunda vez que se llama a la función con el mismo prompt del sistema, se leen los tokens de la caché en lugar de volver a generarlos.
    • Anthropic ofrece un 90% de reducción de costos.
  3. Cálculo de ahorros de costos:

    • Se define una función calculate_cost_savings que calcula los ahorros de costos al utilizar "prompt caching", teniendo en cuenta el modelo específico (GPT-4o o Claude) y los precios de entrada base y de lectura de caché.

Consejos y buenas prácticas:

  • Utiliza el "prompt caching" para prompts del sistema largos y repetitivos: Esto puede reducir significativamente los costos y mejorar la eficiencia, especialmente si utilizas el mismo prompt del sistema con frecuencia.
  • Considera las diferencias entre OpenAI y Anthropic: OpenAI ofrece un "prompt caching" automático y sencillo, mientras que Anthropic requiere una configuración más explícita pero ofrece mayores ahorros de costos.
  • Calcula los ahorros de costos: Utiliza una función como calculate_cost_savings para cuantificar los beneficios del "prompt caching".
  • Ten en cuenta el tiempo de vida de la caché: Los prompts almacenados en caché suelen tener un tiempo de vida limitado (ej: 5 minutos en OpenAI).
  • "Prompt caching" en producción: Es una técnica avanzada para optimizar el costo y el rendimiento de aplicaciones que usan LLMs.
  • Diferentes modelos, diferentes precios: En el código se presenta un diccionario llamado prices el cuál asocia los diferentes modelos con sus costos.

Dudas o preguntas:

  • ¿Cómo se puede implementar el "prompt caching" con otros modelos de lenguaje, además de los de OpenAI y Anthropic? Investigación: Muchos proveedores de LLMs ofrecen funcionalidades de "prompt caching" o técnicas similares. Consulta la documentación del proveedor específico para obtener más detalles.

  • ¿Cómo se puede combinar el "prompt caching" con otras técnicas de optimización, como el ajuste fino (fine-tuning)? Investigación: El "prompt caching" se puede utilizar junto con el ajuste fino. El ajuste fino puede mejorar la calidad de las respuestas del LLM, mientras que el "prompt caching" puede reducir los costos y mejorar la eficiencia al reutilizar prompts y respuestas.

  • ¿Cuáles son las limitaciones del "prompt caching"? Investigación: El "prompt caching" solo es efectivo si se utilizan prompts (o partes de ellos) repetidamente. No es útil para prompts únicos o que cambian con frecuencia. Además, los prompts almacenados en caché tienen un tiempo de vida limitado.

  • ¿Qué significa beta en el código de Anthropic? Investigación: .beta en el código de Anthropic (ej: client.beta.prompt_caching.messages.create) indica que se está utilizando una funcionalidad que está en fase beta. Esto significa que:

    • Puede cambiar: La API o la funcionalidad podrían modificarse en el futuro sin previo aviso.
    • No es totalmente estable: Podría haber errores o comportamientos inesperados.
    • No es para producción (generalmente): No se recomienda usar funcionalidades beta en entornos de producción críticos, a menos que se esté dispuesto a asumir los riesgos asociados.

    Las funcionalidades beta son comunes en el desarrollo de software. Permiten a los desarrolladores probar nuevas características y obtener retroalimentación antes de lanzarlas oficialmente.

  • ¿Cuál es la diferencia entre cache_creation_input_tokens y cache_read_input_tokens en Anthropic?

    • cache_creation_input_tokens: Representa la cantidad de tokens de entrada que se utilizaron para crear la entrada en la caché. Esto ocurre la primera vez que se procesa un prompt (o una parte de él, como el prompt del sistema en el ejemplo).
    • cache_read_input_tokens: Representa la cantidad de tokens de entrada que se leyeron de la caché. Esto ocurre en llamadas posteriores cuando se reutiliza un prompt (o parte de él) que ya está en la caché.

    En el ejemplo del video, la primera llamada a create_anthropic_cached_message muestra un valor para cache_creation_input_tokens y 0 para cache_read_input_tokens. La segunda llamada muestra 0 para cache_creation_input_tokens (porque no se creó nada nuevo) y un valor para cache_read_input_tokens (porque se leyó de la caché).

  • ¿Por qué usar getpass? Se utiliza el módulo getpass y su función getpass() en el código para solicitar la API key de OpenAI de forma segura, sin que esta se muestre visiblemente en la pantalla o en el código.

⚠️ **GitHub.com Fallback** ⚠️