Rate limiting en quotabeheer
Stel quota's per gebruiker, organisatie en eindpunt in, zodat één tenant uw OpenAI-budget niet kan opmaken.
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 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))
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.
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
- Agents achter een API aanbieden
- Asynchrone workflows en achtergrondtaken
- Rate limiting en quotabeheer
- Blue-green- en canary-deployments voor agents