0Pricing
AI Agents · Pelajaran

Pembatasan Laju dan Pengelolaan Kuota

Terapkan kuota per pengguna, per organisasi, dan per titik akhir agar satu penyewa tidak menghabiskan anggaran OpenAI Anda.

Pembatasan Laju dan Pengelolaan Kuota adalah pelajaran AI Agents gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Agents, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Agents mencakup 4 pelajaran total.

Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.

Mengapa Perlu Batas?

Tanpa batas, satu klien yang menyalahgunakan layanan dapat:

  • Menghabiskan anggaran OpenAI Anda
  • Mengurangi kapasitas untuk pengguna lain
  • Melakukan DDoS terhadap layanan Anda

Batas laju dan kuota melindungi biaya, latensi, serta keadilan.

Batas Laju vs Kuota

  • Batas laju — jumlah permintaan per detik/menit (jangka pendek)
  • Kuota — total anggaran per hari/bulan (jangka panjang)

Anda memerlukan keduanya.

Algoritme Bucket Token

Algoritme klasik: setiap pengguna memiliki "bucket" yang diisi ulang dengan laju tetap. Setiap permintaan mengambil satu token. Tanpa token, tidak ada layanan.

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))

Kuota Berbasis Biaya

Batasi jumlah dolar, bukan hanya jumlah permintaan:

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)

Batas Konkurensi

Batasi juga permintaan yang sedang berjalan untuk setiap pengguna:

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.

Batas Laju Global

Lindungi API LLM hilir dari layanan Anda sendiri:

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)

Batas Laju Terdistribusi

Jika Anda menjalankan beberapa server API, batas laju harus dibagikan. Redis adalah backend standar; Cloudflare dan Kong memiliki alternatif terkelola.

Kelonggaran Lonjakan

Penggunaan nyata sering melonjak. Izinkan lonjakan kecil (misalnya, 30 permintaan sekaligus jika lajunya 10/detik). Implementasi bucket token menangani hal ini secara alami dengan capacity yang lebih tinggi.

Peringatan

Berikan peringatan ketika:

  • Pemicu batas laju global terjadi lebih dari X kali per menit
  • Pengguna mana pun terus-menerus mencapai batasnya (kemungkinan memerlukan peningkatan paket atau mengalami bug)
  • Anggaran harian mendekati 80%

Perlindungan Dua Lapis

Mengapa memiliki BOTH batas laju AND kuota?

Ringkasan

Gunakan bucket token untuk batas laju, penghitung biaya untuk kuota, batas konkurensi per pengguna, pemutus sirkuit global, serta respons 429 yang membantu dengan Retry-After.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pembatasan Laju dan Pengelolaan Kuota” gratis?

Ya — teks lengkap “Pembatasan Laju dan Pengelolaan Kuota” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Agents, upgrade ke CoddyKit PRO. Kursus AI Agents mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pembatasan Laju dan Pengelolaan Kuota”?

Terapkan kuota per pengguna, per organisasi, dan per titik akhir agar satu penyewa tidak menghabiskan anggaran OpenAI Anda. Kamu berlatih AI Agents dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai AI Agents?

Tidak diperlukan pengalaman sebelumnya. AI Agents di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Pembatasan Laju dan Pengelolaan Kuota” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Agents ini?

Ya. Setiap pelajaran AI Agents menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Menyajikan Agen melalui API
  2. Alur Kerja Asinkron dan Pekerjaan Latar Belakang
  3. Pembatasan Laju dan Pengelolaan Kuota
  4. Penerapan Blue-Green dan Canary untuk Agen
← Kembali ke AI Agents