Intermédiaire
🧠 Fondamentaux
20 XP
0 personnes ont réussi
Rate limiter pour API
Les APIs de LLM ont des limites de debit. OpenAI te limite a un certain nombre de requetes par minute (RPM) et de tokens par minute (TPM). Si tu depasses, tu recois une erreur 429 "Too Many Requests". En production, tu dois gerer ca toi-meme pour eviter de te faire bloquer.
Un rate limiter, c'est un compteur qui surveille combien d'appels tu as fait recemment. Si tu depasses la limite, il bloque l'appel au lieu de laisser passer.
On va simplifier le concept avec des timestamps fictifs. Plutot que d'utiliser le vrai temps (qui rendrait les tests non deterministes), on va passer le timestamp comme argument.
Tu vas creer une classe RateLimiter avec :
__init__(self, max_appels, fenetre) : max_appels est le nombre maximum d'appels autorises dans une fenetre de temps (en secondes).
autoriser(self, timestamp) : verifie si un appel est autorise au moment donne. D'abord, supprime tous les appels enregistres qui sont plus vieux que (timestamp - fenetre). Ensuite, si le nombre d'appels restants est inferieur a max_appels, enregistre le timestamp et renvoie True. Sinon, renvoie False.
appels_restants(self, timestamp) : renvoie le nombre d'appels encore disponibles dans la fenetre actuelle (sans oublier de nettoyer les anciens).
Exemple :
rl = RateLimiter(max_appels=3, fenetre=60) rl.autoriser(0) renvoie True (1er appel) rl.autoriser(10) renvoie True (2e appel) rl.autoriser(20) renvoie True (3e appel) rl.autoriser(30) renvoie False (limite atteinte) rl.autoriser(61) renvoie True (le 1er appel est sorti de la fenetre)