Calcolatore limiti 429 & concorrenza worker per LLM
Calcola RPM, Input TPM (ITPM) e Output TPM (OTPM) richiesti su 60 modelli attivi del 2026, individua i colli di bottiglia di quota prima del lancio e copia configurazioni di backoff con full jitter.
Utilizzo della quota e diagnosi dei colli di bottiglia
// Full-jitter exponential backoff + Retry-After guard (google/gemini-4-hydrogen)
export async function callWithRateLimitGuard<T>(
fn: () => Promise<Response>,
maxRetries = 5,
baseDelayMs = 500,
maxDelayMs = 30_000
): Promise<T> {
for (let attempt = 0; attempt <= maxRetries; attempt++) {
const res = await fn();
if (res.status !== 429 && res.status < 500) {
return (await res.json()) as T;
}
if (attempt === maxRetries) {
throw new Error(`LLM quota exhausted (HTTP ${res.status}) after ${maxRetries} retries`);
}
const retryAfterSec = Number(res.headers.get('retry-after'));
const ceiling = Math.min(maxDelayMs, baseDelayMs * 2 ** attempt);
const sleepMs = Number.isFinite(retryAfterSec) && retryAfterSec > 0
? retryAfterSec * 1000
: Math.floor(Math.random() * ceiling);
await new Promise((r) => setTimeout(r, sleepMs));
}
throw new Error('Unreachable');
}
Come nascono i blocchi 429 sulle quote LLM
I gateway API per LLM applicano tre soglie simultanee di token bucket: RPM (richieste al minuto), ITPM (token di input al minuto, inclusi i blocchi RAG) e OTPM (token generati al minuto). Superare anche un solo bucket restituisce HTTP 429 anche quando gli altri due sono sotto il 20%. Abbina il calcolo delle quote alla Spesa API a 30 giorni e verifica le date di ritiro su LLMEOL.
Regole di accodamento & retry per la produzione
- Limitare la concorrenza attiva: Dimensiona i pool di worker con la Legge di Little (
Concurrency = Safe_RPM × Avg_Latency_Sec ÷ 60) mantenendo un margine del 15%. - Rispettare prima gli header
Retry-After: Usa poi un backoff esponenziale limitato con jitter casuale completo per evitare ondate sincronizzate di retry. - Spostare i job differibili sulla Batch API: Eseguire valutazioni notturne ed estrazioni documentali su code asincrone a 24 ore evita i limiti RPM in tempo reale riducendo del 50% il costo dei token LLM.
Domande frequenti
Perché ricevo errori HTTP 429 anche se il numero di richieste è molto sotto il limite RPM?
Prompt RAG estesi e cronologie multi-turno saturano i bucket Input TPM (ITPM) o Output TPM (OTPM) molto prima di raggiungere il tetto di richieste al minuto (RPM).
Il Prompt Caching aumenta il mio limite effettivo di Input TPM?
Il Prompt Caching riduce la fatturazione di input del 90%–95% e diversi provider escludono i prefissi in cache dalla quota ITPM; simula il risparmio esatto nel Calcolatore costi LLM.
Perché usare backoff esponenziale con full jitter invece di pause fisse?
Intervalli fissi fanno ripartire insieme i worker limitati nello stesso secondo; il full jitter distribuisce uniformemente i tentativi nei client TypeScript e Python.