Prompt caching es una forma de almacenar y luego reutilizar las respuestas generadas a partir de instrucciones ejecutadas cuando se trabaja con modelos de lenguaje, como los modelos IBM® Granite. Si se vuelve a encontrar la misma entrada (instrucción), en lugar de realizar una nueva llamada a la API, la aplicación recuperará la respuesta previamente almacenada en la caché de instrucciones.
Piense en prompt caching como una especie de "memoria" para su aplicación. El sistema conserva los resultados de consultas anteriores para ahorrar tiempo de cálculo al no tener que realizar solicitudes repetidas en la misma entrada.
Prompt caching es importante porque evita las llamadas repetidas a la interfaz de programación de aplicaciones (API) al reutilizar las respuestas existentes para instrucciones repetidas idénticas. Esta capacidad da como resultado un tiempo de respuesta más rápido, resultados congruentes y un menor uso de la API, lo que es útil para mantenerse dentro de los límites de velocidad. También ayuda a escalar el flujo y a crear resiliencia durante las interrupciones. Prompt caching es una característica crítica que agrega valor para cualquier aplicación de IA rentable, eficiente y fácil de usar.
Necesita una cuenta de IBM® Cloud para crear un proyecto watsonx.ai .
También necesita la versión 3.12.7 de Python
Si bien puede elegir entre varias herramientas, este tutorial lo guiará a través de cómo configurar una cuenta de IBM para usar un Jupyter Notebook.
Inicie sesión en watsonx.ai mediante su cuenta de IBM Cloud.
Cree un proyecto watsonx.ai. Puede obtener su ID de proyecto desde dentro de su proyecto. Haga clic en la pestaña Manage. Luego, copie el ID del proyecto de la sección Details de la página General. Necesita este ID para este tutorial.
Cree un Jupyter Notebook. Este paso abre un entorno de Jupyter Notebook donde puede copiar el código de este tutorial. También puede descargar este notebook en su sistema local y cargarlo en su proyecto watsonx.ai como activo. Para ver más tutoriales de Granite, consulte la Comunidad de IBM® Granite.
Cree una instancia de servicio watsonx.ai Runtime (elija el plan Lite, que es una instancia gratuita).
Genere una clave de API.
Asocie el servicio de watsonx.ai Runtime al proyecto que creó en watsonx.ai.
Necesitamos bibliotecas para trabajar con la infraestructura langchain y WatsonxLLM. Primero instalemos los paquetes necesarios. Este tutorial se creó con Python 3.12.7
Nota: Si está utilizando una versión anterior de pip, puede usar el comando pip install --upgrade pip para instalar fácilmente los paquetes más recientes que podrían no ser compatibles con versiones anteriores. Pero si ya está utilizando la última versión o ha actualizado recientemente sus paquetes, puede omitir este comando.
El módulo os se utiliza para acceder a variables de entorno, como credenciales de proyecto o claves de API.
WatsonxLLM es un módulo de langchain_ibm que integra IBM Watson LLM para generar resultados a partir de modelos de IA generativa.
ChatWatsonx Permite interacciones basadas en chat mediante IBM watsonx a través de LangChain.
SimpleDirectoryReader es para cargar y leer documentos desde un directorio para indexarlos con LlamaIndex.
GenParams contiene claves de metadatos para configurar los parámetros de generación de texto de Watsonx.
SQLiteCache permite configurar una base de datos SQLite local.cache.db para evitar llamadas API redundantes y acelerar el desarrollo y las pruebas.
Necesitamos algunas bibliotecas y módulos para este tutorial. Asegúrese de importar los siguientes y, si no están instalados, una instalación rápida de pip resuelve el problema.
Este código configura las credenciales para acceder a la API de IBM Watson Machine Learning (WML) y ayuda a garantizar que el ID del proyecto esté configurado correctamente.
Este código inicializa watsonxLLM IBM para su uso en la aplicación:
Para aprender más sobre los parámetros del modelo, como los límites mínimos y máximos de token, consulte la documentación.
SQLiteCache es una herramienta de almacenamiento en caché persistente ofrecida por LangChain que almacena las respuestas de las llamadas LLM en un archivo de base de datos SQLite. SQLiteCache reduce de forma inteligente el tiempo de CPU almacenando cálculos costosos, lo que significa que se centra en recuperar datos en lugar de volver a calcularlos. En vez de volver a realizar todo el proceso, simplemente extrae los resultados del disco, lo que lo hace eficiente, confiable y reutilizable.
La figura ilustra con prompt caching cómo los resultados se cargan instantáneamente desde el disco; sin él, cada consulta pierde tiempo en cálculos redundantes.
En este caso, la CPU solo funcionó durante 22 ms, pero el tiempo real transcurrido fue de 1.43 segundos.
Este ejemplo sugiere que la mayor parte del tiempo se dedicó a esperar, probablemente para operaciones de E/S (por ejemplo, lectura y escritura de disco, acceso a la red o llamada a la API)
Ahora, ejecutemos el modelo por segunda vez con la instrucción y veamos el tiempo de respuesta.
Claramente, con SQLiteCache, la CPU se utiliza durante solo 7.26 ms, pero el tiempo de pared fue de 6.15 segundos.
Esto apunta claramente al bloqueo de dependencias externas (como esperar una respuesta de un servidor).
Prompt caching acelera y reduce el costo de las solicitudes de API a modelos de lenguaje grande, como GPT-4o. Solicita contenido en caché, como tokens de entrada, tokens de salida, incorporaciones y mensajes del usuario, una instrucción del sistema o los resultados de una función, que ahora utiliza un contenido almacenado en caché en lugar de solicitudes de red para una nueva revisión. Este método proporciona precios más bajos, latencia de respuesta optimizada e indicadores clave de rendimiento (KPI) mejorados.
Prompt caching puede ser beneficioso para los chatbots, los sistemas de RAG, el ajuste y los asistentes de código. Una estrategia de almacenamiento en caché sólida que incluya funciones como lectura y escritura de caché, mensaje del sistema, control de caché y tiempo de vida (TTL) adecuado mejorará las tasas de aciertos de caché y reducirá las tasas de fallas de caché.
El uso constante de los mismos tokens, prefijo y uso de instrucciones del sistema ayuda a un rendimiento constante de las instrucciones en conversaciones de varios turnos y solicitudes posteriores. Independientemente de usar Python, un SDK o trabajar con OpenAI u otro proveedor, comprender cómo funciona prompt caching le permitirá implementarlo mejor para muchos casos de uso.