Limitazione della frequenza e gestione delle quote
Imposti quote per utente, organizzazione ed endpoint, così un tenant non potrà consumare tutto il budget OpenAI.
Limitazione della frequenza e gestione delle quote è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
Perché imporre limiti?
Senza limiti, un singolo client abusivo può:
- Consumare il budget OpenAI
- Sottrarre risorse agli altri utenti
- Eseguire un DDoS sul servizio
I limiti di frequenza e le quote proteggono costi, latenza ed equità.
Limite di frequenza e quota
- Limite di frequenza — richieste al secondo/minuto (breve periodo)
- Quota — budget totale al giorno/mese (lungo periodo)
Servono entrambi.
Algoritmo del token bucket
L'algoritmo classico: ogni utente ha un «bucket» che si riempie a una velocità fissa. Ogni richiesta consuma un token. Se non ci sono token, il servizio viene negato.
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))
Quote basate sui costi
Limiti i dollari, non solo le richieste:
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)Limiti di concorrenza
Limiti anche le richieste in corso per ogni utente:
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 di frequenza globale
Proteggi le API LLM downstream dal tuo stesso servizio:
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)Limiti di frequenza distribuiti
Se esegui più server API, i limiti di frequenza devono essere condivisi. Redis è il backend standard; Cloudflare e Kong offrono alternative gestite.
Tolleranza ai picchi
L'utilizzo reale è caratterizzato da picchi. Consenti un piccolo picco (ad esempio 30 richieste contemporaneamente se la frequenza è di 10 al secondo). Le implementazioni del token bucket lo gestiscono naturalmente con un valore più alto di capacity.
Avvisi
Genera un avviso quando:
- Gli eventi di superamento del limite di frequenza globale si verificano più di X volte al minuto
- Un utente qualsiasi raggiunge costantemente il proprio limite (probabilmente deve effettuare un upgrade o ha un bug)
- Il budget giornaliero si avvicina all'80%
Protezione a due livelli
Perché usare SIA i limiti di frequenza SIA le quote?
Riepilogo
Token bucket per i limiti di frequenza, contatori dei costi per le quote, limiti di concorrenza per utente, circuit breaker globale e risposte 429 utili con Retry-After.
Domande Frequenti
La lezione «Limitazione della frequenza e gestione delle quote» è gratuita?
Sì — il testo completo di «Limitazione della frequenza e gestione delle quote» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.
Cosa imparerò in «Limitazione della frequenza e gestione delle quote»?
Imposti quote per utente, organizzazione ed endpoint, così un tenant non potrà consumare tutto il budget OpenAI. Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AI Agents?
Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Limitazione della frequenza e gestione delle quote»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AI Agents?
Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Servire gli agenti tramite un'API
- Workflow asincroni e processi in background
- Limitazione della frequenza e gestione delle quote
- Deploy blue-green e canary per gli agenti