Limitation du débit et gestion des quotas
Définissez des quotas par utilisateur, organisation et point de terminaison afin qu’un seul locataire ne puisse épuiser votre budget OpenAI.
Limitation du débit et gestion des quotas est une leçon AI Agents gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Agents, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Agents comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Pourquoi des limites ?
Sans limites, un seul client abusif peut :
- Épuiser votre budget OpenAI
- Écarter les autres utilisateurs
- Rendre votre service indisponible par une attaque DDoS
Les limites de débit et les quotas protègent les coûts, la latence et l’équité.
Limite de débit ou quota
- Limite de débit — requêtes par seconde ou par minute (court terme)
- Quota — budget total par jour ou par mois (long terme)
Vous avez besoin des deux.
Algorithme du seau de jetons
L’algorithme classique : chaque utilisateur dispose d’un « seau » qui se remplit à un rythme fixe. Chaque requête consomme un jeton. Aucun jeton, aucun service.
Redis Token Bucket Example
def allow(user_id, rate=10, capacity=30):
key = f'rate:{user_id}'
now = time.time()
pipe = redis.pipeline()
pipe.hgetall(key)
state, _ = pipe.execute()
tokens = float(state.get('tokens', capacity))
last = float(state.get('last', now))
tokens = min(capacity, tokens + (now - last) * rate)
if tokens < 1:
return False
tokens -= 1
redis.hset(key, mapping={'tokens': tokens, 'last': now})
redis.expire(key, 60)
return TrueFastAPI Integration with slowapi
# pip install slowapi
from slowapi import Limiter
from slowapi.util import get_remote_address
limiter = Limiter(key_func=get_remote_address)
app.state.limiter = limiter
@app.post('/agents/qa')
@limiter.limit('10/minute')
def qa(req: AgentRequest):
...Different Limits Per Tier
class User:
def __init__(self, is_pro):
self.is_pro = is_pro
class State:
def __init__(self, is_pro):
self.user = User(is_pro)
class Req:
def __init__(self, is_pro):
self.state = State(is_pro)
def limit_for(req):
return '100/minute' if req.state.user.is_pro else '10/minute'
def qa(req):
limit = limit_for(req)
print(f'user is_pro={req.state.user.is_pro} -> rate limit {limit}')
return limit
qa(Req(is_pro=True))
qa(Req(is_pro=False))
Quotas fondés sur les coûts
Limitez les montants, pas seulement les requêtes :
def check_budget(user_id, predicted_cost):
key = f'cost:{user_id}:{date.today()}'
spent = float(redis.get(key) or 0)
if spent + predicted_cost > daily_budget(user_id):
raise HTTPException(429, 'Daily budget exceeded')
# After the call:
redis.incrbyfloat(key, actual_cost)
redis.expireat(key, midnight_tomorrow_ts)Plafonds de concurrence
Limitez également les requêtes en cours par utilisateur :
key = f'inflight:{user_id}'
redis.sadd(key, request_id)
if redis.scard(key) > 3:
raise HTTPException(429, 'Too many concurrent requests')
# Remove from set when the request finishes.Limite de débit globale
Protégez les API LLM en aval contre votre propre service :
global_key = 'rate:global:llm'
if redis.incr(global_key) > 60: # 60 calls per second
raise HTTPException(503, 'Service overloaded')
redis.expire(global_key, 1)Return Useful Errors
headers = {
'X-RateLimit-Limit': '60',
'X-RateLimit-Remaining': '0',
'X-RateLimit-Reset': str(reset_time),
'Retry-After': '30'
}
return JSONResponse({'error': 'rate-limited'}, status_code=429, headers=headers)Limites de débit distribuées
Si vous exécutez plusieurs serveurs d’API, les limites de débit doivent être partagées. Redis est le serveur principal standard ; Cloudflare et Kong proposent des solutions gérées alternatives.
Tolérance aux rafales
L’utilisation réelle est irrégulière. Autorisez une petite rafale (par ex. 30 requêtes simultanées si le débit est de 10/s). Les implémentations du seau de jetons gèrent cela naturellement avec une `capacity` plus élevée.
Alertes
Déclenchez une alerte lorsque :
- Les déclenchements de la limite de débit globale dépassent X par minute
- Un utilisateur atteint régulièrement sa limite (il a probablement besoin d’une offre supérieure ou rencontre un bogue)
- Le budget quotidien approche 80 %
Protection à deux couches
Pourquoi avoir à la fois des limites de débit BOTH des quotas ?
Récapitulatif
Seau de jetons pour les limites de débit, compteurs de coûts pour les quotas, plafonds de concurrence par utilisateur, disjoncteur global, réponses 429 utiles avec Retry-After.
Apprends AI Agents avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 60
- Leçons
- 239
Questions Fréquemment Posées
La leçon « Limitation du débit et gestion des quotas » est-elle gratuite ?
Oui — le texte complet de « Limitation du débit et gestion des quotas » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Agents, passe à CoddyKit PRO. Le cours AI Agents comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Limitation du débit et gestion des quotas » ?
Définissez des quotas par utilisateur, organisation et point de terminaison afin qu’un seul locataire ne puisse épuiser votre budget OpenAI. Tu pratiques AI Agents avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer AI Agents ?
Aucune expérience préalable n'est requise. AI Agents sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Limitation du débit et gestion des quotas » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon AI Agents ?
Oui. Chaque leçon AI Agents inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Exposer des agents derrière une API
- Flux de travail asynchrones et tâches en arrière-plan
- Limitation du débit et gestion des quotas
- Déploiements blue-green et canary pour les agents