Rate-Limiting und Quotenverwaltung
Legen Sie Quoten pro Benutzer, Organisation und Endpunkt fest, damit ein einzelner Mandant Ihr OpenAI-Budget nicht aufbrauchen kann.
Rate-Limiting und Quotenverwaltung ist eine kostenlose AI Agents-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Agents-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
Warum Limits?
Ohne Limits kann ein einzelner missbräuchlicher Client:
- Ihr OpenAI-Budget aufbrauchen
- Andere Benutzer verdrängen
- Ihren Dienst per DDoS-Angriff lahmlegen
Rate-Limits und Kontingente schützen Kosten, Latenz und Fairness.
Rate-Limit oder Kontingent
- Rate-Limit — Requests pro Sekunde/Minute (kurzfristig)
- Kontingent — Gesamtbudget pro Tag/Monat (langfristig)
Sie benötigen beides.
Token-Bucket-Algorithmus
Der klassische Algorithmus: Jeder Benutzer hat einen „Bucket“, der sich mit einer festen Rate auffüllt. Jeder Request verbraucht ein Token. Keine Tokens, kein Dienst.
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))
Kostenbasierte Kontingente
Begrenzen Sie die Kosten, nicht nur die Anzahl der Requests:
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)Limits für Nebenläufigkeit
Begrenzen Sie außerdem die Anzahl laufender Requests pro Benutzer:
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.Globales Rate-Limit
Schützen Sie nachgelagerte LLM-APIs vor Ihrem eigenen Dienst:
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)Verteilte Rate-Limits
Wenn Sie mehrere API-Server betreiben, müssen Rate-Limits gemeinsam genutzt werden. Redis ist das Standard-Backend; Cloudflare und Kong bieten verwaltete Alternativen.
Burst-Spielraum
Die tatsächliche Nutzung erfolgt in Bursts. Erlauben Sie einen kleinen Burst, z. B. 30 Requests gleichzeitig bei einer Rate von 10 pro Sekunde. Token-Bucket-Implementierungen unterstützen das mit einer höheren `capacity` ganz natürlich.
Alarmierung
Alarmieren Sie, wenn:
- Auslösungen des globalen Rate-Limits mehr als X-mal pro Minute auftreten
- Ein Benutzer dauerhaft sein Limit erreicht (wahrscheinlich benötigt er ein Upgrade oder es liegt ein Fehler vor)
- Sich das Tagesbudget 80 % nähert
Schutz auf zwei Ebenen
Warum sollten Sie SOWOHL Rate-Limits ALS AUCH Kontingente verwenden?
Zusammenfassung
Token-Bucket für Rate-Limits, Kostenzähler für Kontingente, Limits für Nebenläufigkeit pro Benutzer, globaler Circuit Breaker, hilfreiche 429-Antworten mit Retry-After.
Häufig gestellte Fragen
Ist die Lektion „Rate-Limiting und Quotenverwaltung“ kostenlos?
Ja — der vollständige Text von „Rate-Limiting und Quotenverwaltung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Agents-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Rate-Limiting und Quotenverwaltung“?
Legen Sie Quoten pro Benutzer, Organisation und Endpunkt fest, damit ein einzelner Mandant Ihr OpenAI-Budget nicht aufbrauchen kann. Du übst AI Agents mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um AI Agents zu starten?
Keine Vorkenntnisse erforderlich. AI Agents auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Rate-Limiting und Quotenverwaltung“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser AI Agents-Lektion Code schreiben und ausführen?
Ja. Jede AI Agents-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Agents hinter einer API bereitstellen
- Asynchrone Workflows und Hintergrundjobs
- Rate-Limiting und Quotenverwaltung
- Blue-Green- und Canary-Deployments für Agents