Begrensning av forespørselsfrekvens og kvotehåndtering
Bruk kvoter per bruker, organisasjon og endepunkt, slik at én leietaker ikke kan bruke opp OpenAI-budsjettet ditt.
Begrensning av forespørselsfrekvens og kvotehåndtering er en gratis leksjon i AI-agenter på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i AI-agenter, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i AI-agenter inneholder totalt 4 leksjoner.
Deler av denne leksjonen er ennå ikke oversatt og vises på engelsk.
Hvorfor begrensninger?
Uten begrensninger kan én misbrukende klient:
- bruke opp OpenAI-budsjettet
- fortrenge andre brukere
- utsette tjenesten for et DDoS-angrep
Hastighetsgrenser og kvoter beskytter kostnader, svartid og rettferdighet.
Hastighetsgrense kontra kvote
- Hastighetsgrense — antall forespørsler per sekund/minutt (kort sikt)
- Kvote — totalt budsjett per dag/måned (lang sikt)
Begge deler er nødvendig.
Token-bøtte-algoritmen
Den klassiske algoritmen: Hver bruker har en «bøtte» som fylles på med en fast hastighet. Hver forespørsel bruker ett token. Ingen tokens betyr ingen tjeneste.
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))
Kostnadsbaserte kvoter
Begrens beløp, ikke bare antall forespørsler:
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)Grenser for samtidige forespørsler
Begrens også antallet forespørsler per bruker som er under behandling:
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.Global hastighetsgrense
Beskytt underliggende LLM-API-er mot deres egen tjeneste:
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)Distribuerte hastighetsgrenser
Hvis flere API-servere kjøres, må hastighetsgrensene deles mellom dem. Redis er standardbackend, mens Cloudflare og Kong har administrerte alternativer.
Tillatte trafikkøkninger
Reell bruk kommer i rykk og napp. Tillat en liten trafikkøkning (for eksempel 30 forespørsler samtidig hvis hastigheten er 10 per sekund). Implementasjoner av token-bøtter håndterer dette naturlig med en høyere `capacity`.
Varsling
Send et varsel når:
- treff på den globale hastighetsgrensen utløses mer enn X ganger per minutt
- en bruker konsekvent ligger på grensen (brukeren trenger sannsynligvis en oppgradering, eller det finnes en feil)
- dagsbudsjettet nærmer seg 80 %
Beskyttelse i to lag
Hvorfor ha BÅDE hastighetsgrenser OG kvoter?
Oppsummering
Bruk token-bøtter for hastighetsgrenser, kostnadstellere for kvoter, grenser for samtidighet per bruker, en global kretsbryter og nyttige 429-svar med Retry-After.
Lær deg AI-agenter med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 60
- Leksjoner
- 239
Ofte stilte spørsmål
Er leksjonen «Begrensning av forespørselsfrekvens og kvotehåndtering» gratis?
Ja – hele teksten i «Begrensning av forespørselsfrekvens og kvotehåndtering» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av AI-agenter-kurset, kan du oppgradere til CoddyKit PRO. Kurset i AI-agenter inneholder totalt 4 leksjoner.
Hva lærer jeg i «Begrensning av forespørselsfrekvens og kvotehåndtering»?
Bruk kvoter per bruker, organisasjon og endepunkt, slik at én leietaker ikke kan bruke opp OpenAI-budsjettet ditt. Du øver på AI-agenter med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med AI-agenter?
Ingen tidligere erfaring er nødvendig. AI-agenter på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Begrensning av forespørselsfrekvens og kvotehåndtering»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne AI-agenter-leksjonen?
Ja. Alle AI-agenter-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Eksponere agenter bak et API
- Asynkrone arbeidsflyter og bakgrunnsjobber
- Begrensning av forespørselsfrekvens og kvotehåndtering
- Blue-green- og canary-distribusjoner for agenter