@lacspace/keypool
Provider-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.
npm i @lacspace/keypoolUsage
import { createKeypool } from "@lacspace/keypool";
const pool = createKeypool({
keys: [
{ id: "gem-1", provider: "gemini", secret: process.env.GEMINI_1! },
{ id: "gem-2", provider: "gemini", secret: process.env.GEMINI_2! },
],
providerLimits: { gemini: { rpm: 15, rpd: 1500, tpm: 1_000_000 } },
});
const picked = await pool.pick("gemini", "gemini-2.0-flash", estTokens);
if (!picked) throw new Error("all keys cooling down");
const res = await callGemini(picked.secret, prompt);
await pool.report(picked.id, { ok: true, tokens: res.usage.total, model: "gemini-2.0-flash" });Exports 2
createKeypoolkvStoreKeywords
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/llm-cacheA 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.