Ir al contenido principal
Inteligencia Artificial

Tutorial de GPTCache: cómo mejorar la eficiencia en aplicaciones con LLM

Descubre cómo GPTCache recupera resultados en caché en lugar de generar respuestas nuevas desde cero.
Laiba Siddiqui's photo
Laiba Siddiqui
Actualizado · 8 min leer

Explora con IA

ChatGPTClaudePerplexity

Crea tu cuenta gratuita

Practica y programa tu progreso.

Continuar Con Google
Al continuar, aceptas nuestros Términos de uso, nuestra Política de privacidad y que tus datos se almacenen en los EE. UU.

GPTCache es un framework de código abierto para aplicaciones con grandes modelos de lenguaje (LLM) como ChatGPT. Almacena respuestas de LLM generadas previamente para consultas similares. En lugar de depender siempre del LLM, la aplicación consulta la caché para encontrar una respuesta relevante y ahorrarte tiempo.

En esta guía verás cómo funciona GPTCache y cómo puedes sacarle partido en tus proyectos.

¿Qué es GPTCache?

GPTCache es un sistema de caché diseñado para mejorar el rendimiento y la eficiencia de los grandes modelos de lenguaje (LLM) como GPT-3. Ayuda a los LLM a guardar consultas y respuestas generadas previamente para ahorrar tiempo y esfuerzo.

Cuando surge una consulta similar, el LLM puede recuperar la respuesta almacenada en la caché en lugar de crear una nueva desde cero.

A diferencia de otras herramientas, GPTCache se basa en caché semántica. Las cachés semánticas retienen el objetivo de una consulta o petición. Así, al recuperar consultas almacenadas, se reduce la carga del servidor y mejoran las tasas de acierto de la caché.

Ventajas de usar GPTCache

La idea principal de GPTCache es almacenar y reutilizar los cálculos intermedios generados durante la inferencia de un LLM. Esto aporta varios beneficios:

Ahorro en costes de llamadas a la API del LLM

La mayoría de LLM cobran una tarifa por petición en función del número de tokens procesados. Ahí es donde GPTCache resulta muy útil: minimiza llamadas a la API sirviendo respuestas ya generadas para consultas similares. Como consecuencia, reduce el gasto en llamadas adicionales al LLM.

Mejor tiempo de respuesta y eficiencia

Recuperar una respuesta desde la caché es mucho más rápido que generarla desde cero consultando al LLM. Aumenta la velocidad y mejora los tiempos de respuesta. Respuestas más eficientes reducen la carga sobre el propio LLM y liberan recursos para otras tareas.

Mejor experiencia de usuario gracias a un rendimiento más rápido

Imagina que buscas preguntas para tu contenido. Cada pregunta tarda una eternidad en responderse con IA. ¿Por qué? Porque muchos servicios de LLM imponen límites de peticiones por periodos. Si superas esos límites, se bloquean nuevas peticiones hasta que se restablezcan, lo que provoca interrupciones del servicio.

GPT reached its response generating limit

ChatGPT puede alcanzar su límite de generación de respuestas

Para evitar estos problemas, GPTchache almacena respuestas previas a preguntas similares. Cuando pides algo, comprueba su memoria al instante y te entrega la información al momento. Así, recibes la respuesta en menos tiempo del habitual.

En pocas palabras, al aprovechar respuestas en caché, GPTCache hace que las aplicaciones basadas en LLM sean ágiles y eficientes, como esperas de cualquier herramienta moderna.

Configuración de GPTCache

Así puedes instalar GPTCache directamente:

Instalación y configuración

Instala el paquete GPTCache con este código.

! pip install -q gptcache

Después, importa GPTCache en tu aplicación.

from gptcache import GPTCache
cache = GPTCache()  
# keep the mode default 

¡Listo, ya lo tienes!

Integración con LLM

Puedes integrar GPTCache con LLM mediante su LLM Adapter. A día de hoy, es compatible con dos adaptadores de grandes modelos de lenguaje:

  • OpenAI
  • Langchain

Así puedes integrarlo con ambos adaptadores:

GPTCache con la API de OpenAI ChatGPT

Para integrar GPTCache con OpenAI, inicializa la caché e importa openai desde gptcache.adapter.

from gptcache import cache
from gptcache.adapter import openai

cache.init()
cache.set_openai_key()

Antes de ejecutar el ejemplo, establece la variable de entorno OPENAI_API_KEY ejecutando echo $OPENAI_API_KEY.

Si no está definida, puedes hacerlo con export OPENAI_API_KEY=YOUR_API_KEY en sistemas Unix/Linux/MacOS o set OPENAI_API_KEY=YOUR_API_KEY en Windows.

Luego, si haces dos veces la misma pregunta a ChatGPT, la segunda respuesta se recuperará de la caché en lugar de volver a preguntarle a ChatGPT.

Aquí tienes un ejemplo de caché por búsqueda de similitud:

import time


def response_text(openai_resp):
    return openai_resp['choices'][0]['message']['content']

print("Cache loading.....")

# To use GPTCache, that's all you need
# -------------------------------------------------
from gptcache import cache
from gptcache.adapter import openai

cache.init()
cache.set_openai_key()
# -------------------------------------------------

question = "what's github"
for _ in range(2):
    start_time = time.time()
    response = openai.ChatCompletion.create(
      model='gpt-3.5-turbo',
      messages=[
        {
            'role': 'user',
            'content': question
        }
      ],
    )
    print(f'Question: {question}')
    print("Time consuming: {:.2f}s".format(time.time() - start_time))
    print(f'Answer: {response_text(response)}\n')

Esto es lo que verás en la salida:

La segunda vez, GPT tardó prácticamente 0 segundos en responder a la misma pregunta

GPTCache con LangChain

Si quieres usar un LLM diferente, prueba el adaptador de LangChain. Así puedes integrar GPTCahe con LangChain:

from langchain.globals import set_llm_cache
from langchain_openai import OpenAI

# To make the caching really obvious, lets use a slower model.
llm = OpenAI(model_name="gpt-3.5-turbo-instruct", n=2, best_of=2)

Aprende a crear aplicaciones LLM con LangChain.

Cómo usar GPTCache en tus proyectos

Veamos cómo GPTCache puede ayudar en tus proyectos.

Operaciones básicas

Los LLM pueden perder eficacia por la complejidad y variabilidad inherentes de sus consultas, lo que provoca una baja tasa de acierto en caché.

Para superar esta limitación, GPTCache adopta estrategias de caché semántica. La caché semántica almacena consultas similares o relacionadas, aumentando la probabilidad de aciertos y mejorando la eficiencia global.

GPTCache utiliza algoritmos de embeddings para convertir consultas en representaciones numéricas llamadas embeddings. Estos embeddings se guardan en un vector store, lo que permite búsquedas por similitud eficientes. Así, GPTCache identifica y recupera consultas similares o relacionadas desde el almacenamiento en caché.

Gracias a su diseño modular, puedes personalizar las implementaciones de caché semántica según tus necesidades.

Ahora bien, en una caché semántica a veces pueden producirse falsos aciertos y fallos. Para vigilar su rendimiento, GPTCache ofrece tres métricas clave:

  • Hit ratio: mide el porcentaje de peticiones resueltas por la caché. Cuanto más alto, mejor.
  • Latencia: indica el tiempo necesario para recuperar datos de la caché; cuanto menor, mejor.
  • Recall: muestra la proporción de consultas atendidas correctamente desde la caché. Valores altos reflejan mayor precisión.

Funciones avanzadas

Todos los elementos básicos de datos —consultas iniciales, prompts, respuestas y marcas de tiempo de acceso— se almacenan en un "gestor de datos". GPTCache admite actualmente estas opciones de almacenamiento de caché:

  • SQLite
  • MySQL
  • Bases de datos PostgreSQL

Aún no es compatible con bases de datos «NoSQL», pero está previsto incorporarlas próximamente.

Uso de políticas de expulsión

GPTCache puede eliminar datos del almacenamiento en caché en función de un límite o un recuento específicos. Para gestionar el tamaño de la caché, puedes aplicar una política de expulsión Least Recently Used (LRU) o un enfoque First In, First Out (FIFO).

  • Política LRU: expulsa los elementos a los que se accedió hace más tiempo.
  • La política FIFO descarta los elementos que llevan más tiempo en la caché.

Evaluación del rendimiento de las respuestas

GPTCache utiliza una función de «evaluación» para determinar si una respuesta en caché cubre la consulta del usuario. Para ello, toma tres entradas:

  • la solicitud del usuario
  • los datos en caché a evaluar
  • parámetros definidos por el usuario (si los hay)

También puedes usar otras dos funciones:

  • log_time_func te permite registrar e informar la duración de tareas costosas como generar embeddings o realizar búsquedas en la caché. Ayuda a monitorizar el rendimiento.
  • Con similarity_threshold defines el umbral a partir del cual dos vectores de embedding (representaciones de texto de alta dimensión) se consideran lo bastante similares como para emparejarlos.

Buenas prácticas y resolución de problemas con GPTCache

Ahora que ya sabes cómo funciona GPTCache, aquí tienes algunas buenas prácticas y consejos para sacarle todo el partido.

Optimizar el rendimiento de GPTCache

Puedes seguir varios pasos para optimizar el rendimiento de GPTCache, como los que se indican a continuación.

1. Aclara tus prompts

Cómo formulas tus prompts influye en el rendimiento de GPTCache. Mantén una redacción consistente para aumentar las probabilidades de acertar en la caché.

Por ejemplo, utiliza frases coherentes como "No puedo iniciar sesión en mi cuenta". Así, GPTCache reconocerá con más facilidad incidencias similares como "He olvidado mi contraseña" o "Problemas de inicio de sesión".

2. Usa las métricas integradas

Supervisa métricas como hit ratio, recall y latencia para analizar el rendimiento de tu caché. Un hit ratio alto indica que la caché sirve más contenido desde los datos almacenados, lo que te ayuda a entender su eficacia.

3. Escalar GPTCache para aplicaciones con muchos usuarios

Para escalar GPTCache en aplicaciones de mayor tamaño, implementa una caché compartida que utilice la misma caché para grupos de usuarios con perfiles similares. Crea perfiles de usuario y clasifícalos para identificar grupos afines.

Aprovechar una caché compartida para usuarios del mismo grupo de perfil mejora la eficiencia y la escalabilidad.

Esto se debe a que los usuarios dentro de un mismo grupo tienden a tener consultas relacionadas que se benefician de respuestas en caché. Eso sí, aplica técnicas adecuadas de perfilado y clasificación para agrupar usuarios y maximizar las ventajas de la caché compartida.

Solución de problemas comunes en GPTCache

Si te estás encontrando problemas con GPTCache, hay varios pasos que puedes seguir para solucionarlos.

1. Invalidación de la caché

GPTCache depende de respuestas en caché actualizadas. Si cambian con el tiempo las respuestas del LLM o la intención del usuario, las respuestas almacenadas pueden volverse inexactas o irrelevantes.

Para evitarlo, establece tiempos de expiración para las entradas en caché según la frecuencia prevista de actualización del LLM y actualiza la caché con regularidad.

2. Exceso de confianza en las respuestas en caché

Aunque GPTCache mejora la eficiencia, depender en exceso de respuestas en caché puede derivar en información incorrecta si no se invalidan a tiempo.

Por ello, asegúrate de que tu aplicación obtenga de vez en cuando respuestas nuevas del LLM, incluso para consultas similares. Así mantendrás la precisión y calidad cuando trates información crítica o sensible al tiempo.

3. Ignorar la calidad de la caché

La calidad y relevancia de las respuestas almacenadas afecta a la experiencia de usuario. Utiliza métricas de evaluación para comprobar la calidad de las respuestas en caché antes de servirlas.

Si comprendes estos posibles escollos y sus soluciones, te asegurarás de que GPTCache mejora el rendimiento y la rentabilidad de tus aplicaciones con LLM sin comprometer la precisión ni la experiencia de usuario.

Conclusión

GPTCache es una herramienta potente para optimizar el rendimiento y los costes de aplicaciones con LLM. Requiere una configuración adecuada, monitorización y estrategias de evaluación de la caché para garantizar respuestas precisas y relevantes.

Si estás empezando con los LLM, estos recursos pueden ayudarte:

Preguntas frecuentes

¿Cómo inicializas la caché para ejecutar GPTCache e importar la API de OpenAI?

Para inicializar la caché e importar la API de OpenAI, importa openai desde gptcache.adapter. Esto configurará automáticamente el gestor de datos para que coincida con la caché exacta. Así puedes hacerlo:

from gptcache.adapter import openai

¿Qué ocurre si haces dos veces la misma pregunta a ChatGPT?

GPTCache guarda las respuestas previas en la caché y recupera la respuesta desde ahí en lugar de hacer una nueva petición a la API. Por tanto, la respuesta a la segunda pregunta se obtendrá de la caché sin volver a consultar a ChatGPT.


Laiba Siddiqui's photo
Author
Laiba Siddiqui
LinkedIn
Twitter

Soy una estratega de contenidos a la que le encanta simplificar temas complejos. He ayudado a empresas como Splunk, Hackernoon y Tiiny Host a crear contenidos atractivos e informativos para su público.

Temas
Inteligencia Artificial
Relacionado
An avian AI exits its cage

blog

12 alternativas de código abierto a GPT-4

Alternativas de código abierto a GPT-4 que pueden ofrecer un rendimiento similar y requieren menos recursos informáticos para funcionar. Estos proyectos vienen con instrucciones, fuentes de código, pesos del modelo, conjuntos de datos e IU de chatbot.
Abid Ali Awan's photo

Abid Ali Awan

9 min

Tutorial

Cómo ajustar GPT 3.5: Liberar todo el potencial de la IA

Explore GPT-3.5 Turbo y descubra el potencial transformador del ajuste fino. Aprenda a personalizar este modelo de lenguaje avanzado para aplicaciones especializadas, mejore su rendimiento y comprenda los costes asociados, la seguridad y las consideraciones de privacidad.
Moez Ali's photo

Moez Ali

11 min

Tutorial

Guía para principiantes sobre el uso de la API ChatGPT

Esta guía te acompanya a través de los fundamentos de la API ChatGPT, demostrando su potencial en el procesamiento del lenguaje natural y la comunicación impulsada por la IA.
Moez Ali's photo

Moez Ali

11 min

Tutorial

Guía para principiantes sobre la ingeniería de avisos ChatGPT

Descubra cómo conseguir que ChatGPT le proporcione los resultados que desea dándole las entradas que necesita.
Matt Crabtree's photo

Matt Crabtree

6 min

Tutorial

Cómo hacer modelos de ChatGPT personalizados: 5 sencillos pasos para conseguir GPT personalizados

Echa un vistazo a estos cinco sencillos pasos para liberar todo el potencial de ChatGPT con tus propios GPT personalizados.
Moez Ali's photo

Moez Ali

9 min

Tutorial

Visión GPT-4: Guía completa para principiantes

Este tutorial le presentará todo lo que necesita saber sobre GPT-4 Vision, desde cómo acceder a él hasta ejemplos prácticos del mundo real y sus limitaciones.
Arunn Thevapalan's photo

Arunn Thevapalan

12 min

Ver más