LLM-toepassingen in productie (RAG + vectordatabase + caching) · Les

Rate limiting en misbruikpreventie

Configureer rate limits en andere beveiligingsmaatregelen om misbruik te voorkomen, kosten te beheersen en de beschikbaarheid van de service te handhaven.

Les 2 van 411 stappen

Rate limiting en misbruikpreventie is een gratis LLM-toepassingen in productie (RAG + vectordatabase + caching)-les op CoddyKit. Dit is les 2 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 LLM-toepassingen in productie (RAG + vectordatabase + caching). Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus LLM-toepassingen in productie (RAG + vectordatabase + caching) bevat in totaal 4 lessen.

Introductie tot snelheidsbeperking

Stel je een populair restaurant voor. Als iedereen tegelijk probeert te bestellen, raakt de keuken overbelast! Snelheidsbeperking lijkt op het beheren van bestellingen in een restaurant, zodat iedereen vlot wordt geholpen.

In LLM-applicaties bepaalt snelheidsbeperking hoe vaak een gebruiker of systeem verzoeken naar je API of de onderliggende LLM-aanbieder mag sturen.

Waarom LLM's aan snelheidsbeperking onderwerpen?

Snelheidsbeperking is om verschillende redenen cruciaal voor LLM-applicaties:

  • Beheersing van kosten: Voor aanroepen van LLM-API's betaal je vaak per token of per verzoek. Ongecontroleerd gebruik kan tot onverwacht hoge rekeningen leiden.
  • Misbruik voorkomen: Kwaadwillenden kunnen proberen je dienst te overspoelen met verzoeken (DDoS) of deze voor hun eigen doeleinden uit te buiten.
  • Stabiliteit van de dienst: Voorkomt dat één gebruiker of een kleine groep alle bronnen in beslag neemt, zodat alle gebruikers eerlijke toegang en consistente prestaties krijgen.
  • Naleving van API-regels: LLM-aanbieders (zoals OpenAI) hebben hun eigen snelheidslimieten. Je moet die respecteren om te voorkomen dat je wordt geblokkeerd.

Strategieën voor snelheidsbeperking

Er zijn enkele gebruikelijke manieren om snelheidsbeperking te implementeren:

  • Vast tijdvenster: Staat N verzoeken toe binnen een vast tijdvenster (bijvoorbeeld 100 verzoeken per minuut). Eenvoudig, maar kan aan de randen van het venster pieken veroorzaken.
  • Schuivend tijdvenster: Een flexibelere aanpak die verzoeken binnen een voortschrijdend tijdvenster bijhoudt en pieken vermindert.
  • Tokenemmer: Een 'emmer' wordt met een constante snelheid gevuld met tokens. Elk verzoek verbruikt één token. Als de emmer leeg is, wordt het verzoek geweigerd. Zo zijn pieken mogelijk tot aan de capaciteit van de emmer.

De tokenemmer uitgelegd

Het algoritme van de tokenemmer is populair omdat het korte activiteits pieken toestaat en tegelijk een gemiddelde snelheid afdwingt.

Je kunt het als volgt zien:

  • Je hebt een emmer met een maximale capaciteit.
  • Er worden met een constante snelheid tokens aan de emmer toegevoegd.
  • Elk verzoek 'neemt' een token uit de emmer.
  • Als er geen tokens beschikbaar zijn, wordt het verzoek geweigerd of in een wachtrij geplaatst.

Zo combineert dit algoritme een gelijkmatig gemiddeld gebruik met flexibiliteit voor incidentele pieken.

Eenvoudige tokenemmer in Python

Bekijk een eenvoudige Python-implementatie van een tokenemmer. In dit voorbeeld wordt tijd gebruikt om het genereren van tokens te simuleren.

import time

class TokenBucket:
    def __init__(self, capacity, fill_rate):
        self.capacity = float(capacity)
        self.fill_rate = float(fill_rate) # tokens per second
        self.tokens = float(capacity)
        self.last_refill_time = time.time()

    def consume(self, tokens_needed=1):
        now = time.time()
        # Refill tokens
        self.tokens += (now - self.last_refill_time) * self.fill_rate
        self.tokens = min(self.tokens, self.capacity)
        self.last_refill_time = now

        if self.tokens >= tokens_needed:
            self.tokens -= tokens_needed
            return True # Request allowed
        return False # Request denied

# Example Usage
bucket = TokenBucket(capacity=5, fill_rate=1) # 5 tokens, 1 token/sec refill
print(f"Initial tokens: {bucket.tokens}")

for i in range(7):
    if bucket.consume():
        print(f"Request {i+1} ALLOWED. Tokens left: {bucket.tokens:.2f}")
    else:
        print(f"Request {i+1} DENIED. Tokens left: {bucket.tokens:.2f}")
    time.sleep(0.5) # Simulate some time passing

Geavanceerde snelheidsbeperking

Hoewel de tokenemmer krachtig is, hebben systemen in de praktijk vaak meer nodig:

  • Gedistribueerde snelheidsbeperking: Voor horizontaal geschaalde applicaties heb je een gedeelde status nodig (bijvoorbeeld Redis) om limieten op meerdere servers bij te houden.
  • Beperking aan de clientzijde: Door clients met HTTP-headers (zoals Retry-After) te instrueren langzamer te werken, kun je de belasting van de server verminderen.
  • Piekbeheersing: Sommige limieten staan korte tijd een hogere 'piekfrequentie' toe voordat ze terugvallen naar een lagere aanhoudende snelheid.

Deze technieken helpen je verkeer in complexe omgevingen effectiever te beheren.

Invoervalidatie en zuivering

Naast het beperken van verzoeken houdt het voorkomen van misbruik ook in dat je de invoer voor je LLM beveiligt. Invoervalidatie zorgt ervoor dat prompts van gebruikers voldoen aan de verwachte indeling en lengte.

Zuivering verwijdert of neutraliseert mogelijk schadelijke tekens of patronen. Voor LLM-applicaties is dit cruciaal om promptinjectieaanvallen tegen te gaan, waarbij gebruikers het gedrag van de LLM proberen te manipuleren.

Kwaadwillende patronen detecteren

Geavanceerd misbruik gaat vaak verder dan het eenvoudig overschrijden van snelheidslimieten. Technieken zijn onder andere:

  • Detectie van afwijkingen: Ongebruikelijke patronen in het gedrag van gebruikers herkennen (bijvoorbeeld plotselinge pieken in verzoeken vanaf een nieuw IP-adres of herhaalde onzinnige vragen) die op een bot of aanval kunnen wijzen.
  • Inhoudsfiltering: De inhoud van prompts analyseren op verboden trefwoorden, gevoelige informatie of pogingen om de beveiligingen van de LLM te omzeilen.
  • Analyse van gebruikersgedrag: Profielen van normaal gebruikersgedrag opbouwen en afwijkingen markeren.

Deze methoden voegen een extra beveiligingslaag toe.

Snelheidslimieten bewaken

Het instellen van snelheidslimieten is slechts de helft van het werk; je moet ze ook bewaken! Integreer registratie en metingen in je logica voor snelheidsbeperking.

  • Houd bij hoeveel verzoeken worden toegestaan en hoeveel worden geweigerd.
  • Houd het huidige aantal tokens in je emmers in de gaten.
  • Stel waarschuwingen in voor situaties waarin het weigeringspercentage een bepaalde drempel overschrijdt of specifieke gebruikers/IP-adressen voortdurend tegen limieten aanlopen.

Zo kun je limieten aanpassen, mogelijke aanvallen herkennen en eerlijk gebruik garanderen.

Controle van snelheidsbeperking

Je hebt geleerd over snelheidsbeperking en het voorkomen van misbruik. Test je begrip!

Samenvatting en volgende stappen

Goed gedaan! In deze les hebben we de cruciale rol van snelheidsbeperking en misbruikpreventie in LLM-productiesystemen onderzocht.

  • We hebben begrepen waarom snelheidsbeperking essentieel is voor kostenbeheersing, stabiliteit en beveiliging.
  • We hebben veelgebruikte strategieën bekeken, zoals het tokenemmeralgoritme, en een eenvoudig Python-voorbeeld gezien.
  • We hebben ook bredere technieken voor misbruikpreventie behandeld, zoals invoervalidatie en het detecteren van afwijkingen.

Door deze maatregelen te implementeren worden je LLM-applicaties robuuster, veiliger en kostenefficiënter. Hierna gaan we in op foutafhandeling en veerkrachtpatronen om je applicaties nog beter bestand te maken tegen fouten.

Gratis beginnen

Leer LLM-toepassingen in productie (RAG + vectordatabase + caching) 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
12
Lessen
48

Veelgestelde vragen

Is de les “Rate limiting en misbruikpreventie” gratis?

Ja — de volledige tekst van “Rate limiting en misbruikpreventie” 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 LLM-toepassingen in productie (RAG + vectordatabase + caching) wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus LLM-toepassingen in productie (RAG + vectordatabase + caching) bevat in totaal 4 lessen.

Wat leer ik in “Rate limiting en misbruikpreventie”?

Configureer rate limits en andere beveiligingsmaatregelen om misbruik te voorkomen, kosten te beheersen en de beschikbaarheid van de service te handhaven. Je oefent met LLM-toepassingen in productie (RAG + vectordatabase + caching) 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 LLM-toepassingen in productie (RAG + vectordatabase + caching) te beginnen?

Ervaring vooraf is niet nodig. LLM-toepassingen in productie (RAG + vectordatabase + caching) 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 2 van 4.

Hoe lang duurt de les “Rate limiting en misbruikpreventie”?

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 LLM-toepassingen in productie (RAG + vectordatabase + caching)?

Ja. Elke les over LLM-toepassingen in productie (RAG + vectordatabase + caching) 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

  1. LLM-API-sleutels en gevoelige data beveiligen
  2. Rate limiting en misbruikpreventie
  3. Foutafhandeling en veerkrachtpatronen
  4. Bescherming tegen prompt injection
← Terug naar LLM-toepassingen in productie (RAG + vectordatabase + caching)