Una caché LRU para respuestas del modelo
Si dos usuarios hacen la misma pregunta, no hace falta volver a generar. Guarda las últimas respuestas y descarta las menos usadas.
Escribe la clase LRUCache con new LRUCache(capacity), get(key), set(key, value) y la propiedad size.
get devuelve undefined si la clave no está y, si está, la marca como usada recientemente. set añade o actualiza un valor y también lo marca como reciente. Cuando se supera capacity, elimina la entrada usada hace más tiempo.
Pista de diseño: un Map recuerda el orden de inserción.
Retos 0/4
- Guarda y recupera valores
- Al superar la capacidad elimina la más antigua
- get marca la entrada como reciente
- Actualizar una clave no aumenta el tamaño y la refresca
class LRUCache {
constructor(capacity) {
this.capacity = capacity;
this.map = new Map();
}
get(key) {
return this.map.get(key);
}
set(key, value) {
// marca la clave como reciente y expulsa la más antigua si se supera la capacidad
this.map.set(key, value);
}
get size() {
return this.map.size;
}
}
const cache = new LRUCache(2);
cache.set('¿Qué es GGUF?', 'Un formato de modelo');
cache.set('¿Qué es Ollama?', 'Un servidor local');
cache.set('¿Qué es vLLM?', 'Otro servidor');
console.log(cache.size, cache.get('¿Qué es GGUF?'));La consola aparece aquí (console.log).
Para profundizar: la referencia de MDN (en inglés) →
¿Esto en producción, con tus datos? Hablemos 15 minutos →