@lacspace/llm-cache
A content-hash cache for LLM calls — key by (model family, prompt version, normalized input) so identical requests, retries after a 429 and repeated rewrites never pay twice. Pluggable async store (in-memory LRU built in, Mongo/Redis/KV via an adapter), TTL, stale-if-error and a wrap() memoizer. Zero-dependency, isomorphic.
npm i @lacspace/llm-cacheUsage
import { createLlmCache, memoryStore } from "@lacspace/llm-cache";
const cache = createLlmCache({ store: memoryStore(), ttlMs: 86_400_000, promptVersion: "v3" });
const pack = await cache.wrap(
{ input: condensedSources, model: "gemini", variant: { lang: "ne" } },
() => callGemini(condensedSources), // only runs on a miss
{ staleIfError: true }, // 429? serve the last good result
);
cache.stats(); // { hits, misses, sets }Exports 3
createLlmCachememoryStorecontentHashKeywords
More in LLM Efficiency
Extractive multi-source condenser — turn several articles on one story into a short, deduplicated, token-budgeted digest that keeps the numbers, quotes and named entities, so an LLM only rewrites a fraction of the text. BM25 sentence ranking, near-duplicate removal, per-source attribution with char offsets, Devanagari-aware (।/॥, ०-९, रु). Deterministic, isomorphic.
@lacspace/screenA cheap lexical content screener and LLM admission gate — score text against your own weighted, multi-language term lexicons (with negation, proximity windows and a named-entity gazetteer) and get a clear / review / block decision, so obviously-clean and obviously-flagged text never reaches an expensive model. Deterministic, auditable, isomorphic.
@lacspace/keyphraseExtractive keyphrases, tags, hashtags, named entities and category votes — a zero-dependency RAKE + TF-IDF engine with built-in English and Nepali stopwords, Devanagari-aware, so you can stop asking an LLM to generate tags/hashtags/entities. Deterministic, isomorphic.
@lacspace/keypoolProvider-agnostic API-key rotation and rate-limit accounting — pool N free keys per provider, track RPM/RPD/TPM/TPD windows (per model), round-robin among healthy keys, cool down on 429 via retry-after, quarantine invalid keys, and share state across processes via an adapter. pick(provider, model, estTokens) → key | null. Zero-dependency, isomorphic.