AI Agents · Leçon

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.

Leçon 3 sur 415 étapes

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 True

FastAPI 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.

Gratuit pour commencer

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

  1. Exposer des agents derrière une API
  2. Flux de travail asynchrones et tâches en arrière-plan
  3. Limitation du débit et gestion des quotas
  4. Déploiements blue-green et canary pour les agents
← Retour à AI Agents