AI-agenten · Les

Rate limiting en quotabeheer

Stel quota's per gebruiker, organisatie en eindpunt in, zodat één tenant uw OpenAI-budget niet kan opmaken.

Les 3 van 415 stappen

Rate limiting en quotabeheer is een gratis AI-agenten-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject AI-agenten. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus AI-agenten bevat in totaal 4 lessen.

Delen van deze les zijn nog niet vertaald en worden in het Engels weergegeven.

Waarom limieten?

Zonder limieten kan één misbruikende client:

  • Je OpenAI-budget opmaken
  • Andere gebruikers verdringen
  • Je service DDoS'en

Limieten voor aanvragen en quota beschermen kosten, latentie en eerlijkheid.

Limiet voor aanvragen versus quota

  • Limiet voor aanvragen — aanvragen per seconde/minuut (korte termijn)
  • Quota — totaal budget per dag/maand (lange termijn)

Je hebt beide nodig.

Algoritme van de tokenbucket

Het klassieke algoritme: elke gebruiker heeft een "bucket" die met een vaste snelheid wordt aangevuld. Elke aanvraag verbruikt één token. Geen tokens betekent geen 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))

Quota op basis van kosten

Beperk dollars, niet alleen het aantal aanvragen:

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)

Limieten voor gelijktijdigheid

Beperk ook het aantal aanvragen dat per gebruiker in behandeling is:

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.

Globale limiet voor aanvragen

Bescherm downstream-LLM-API's tegen je eigen 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)

Gedistribueerde limieten voor aanvragen

Als je meerdere API-servers gebruikt, moeten de limieten voor aanvragen worden gedeeld. Redis is de standaardbackend; Cloudflare en Kong hebben beheerde alternatieven.

Ruimte voor pieken

Werkelijk gebruik verloopt in pieken. Sta een kleine piek toe (bijvoorbeeld 30 aanvragen tegelijk bij een snelheid van 10 per seconde). Implementaties van een tokenbucket verwerken dit vanzelf met een hogere `capacity`.

Waarschuwingen

Geef een waarschuwing wanneer:

  • Triggers van de globale limiet voor aanvragen meer dan X keer per minuut optreden
  • Een gebruiker voortdurend aan zijn limiet zit (waarschijnlijk is een upgrade nodig of is er een fout)
  • Het dagbudget 80% nadert

Bescherming in twee lagen

Waarom heb je ZOWEL limieten voor aanvragen ALS quota nodig?

Samenvatting

Een tokenbucket voor limieten voor aanvragen, kostentellers voor quota, limieten voor gelijktijdigheid per gebruiker, een globale circuitbreaker en nuttige 429-antwoorden met Retry-After.

Gratis beginnen

Leer AI-agenten met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
60
Lessen
239

Veelgestelde vragen

Is de les “Rate limiting en quotabeheer” gratis?

Ja — de volledige tekst van “Rate limiting en quotabeheer” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus AI-agenten wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus AI-agenten bevat in totaal 4 lessen.

Wat leer ik in “Rate limiting en quotabeheer”?

Stel quota's per gebruiker, organisatie en eindpunt in, zodat één tenant uw OpenAI-budget niet kan opmaken. Je oefent met AI-agenten door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met AI-agenten te beginnen?

Ervaring vooraf is niet nodig. AI-agenten op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Rate limiting en quotabeheer”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over AI-agenten?

Ja. Elke les over AI-agenten bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Agents achter een API aanbieden
  2. Asynchrone workflows en achtergrondtaken
  3. Rate limiting en quotabeheer
  4. Blue-green- en canary-deployments voor agents
← Terug naar AI-agenten