Infrastructure & API-Architectuur

Zelf een LLM-Gateway Hosten: Architectuur, Failover en Configuratie

Wanneer een organisatie meerdere applicaties bouwt die gebruikmaken van externe en interne AI-modellen, ontstaat snel een kluwen van rechtstreekse API-koppelingen. Een zelf-gehoste LLM-gateway fungeert als een centrale proxy tussen jouw software en modelproviders. In dit artikel behandelen we de architectuur, functionaliteiten, randvoorwaarden en een praktisch configuratievoorbeeld voor een robuuste productie-inrichting.

Het probleem van directe API-koppelingen

In de beginfase van AI-adoptie integreren softwareteams een LLM-provider direct in de code van een specifieke dienst. Een backend-microservice roept bijvoorbeeld rechtstreeks de REST API van OpenAI of Anthropic aan. Zolang het om één applicatie gaat, werkt deze aanpak uitstekend. Zodra het aantal applicaties, teams of gebruikte AI-modellen groeit, ontstaan er echter duidelijke knelpunten op het gebied van beheerbaarheid, beveiliging en kosten.

Wanneer applicaties rechtstreeks communiceren met externe providers, raakt het beheer van secret keys versnipperd over tientallen repository's en omgevingen. Dit verhoogt het risico op onveilige API-sleutels aanzienlijk. Daarnaast ontbreekt een centraal overzicht van de totale consumptie en gemaakte kosten per afdeling of gebruiker. Ook heeft elke provider een eigen API-specificatie, foutafhandeling en rate-limiting logica, waardoor ontwikkelaars telkens opnieuw 'het wiel moeten uitvinden' als er een nieuw model moet worden gekoppeld of als er getest moet worden met een alternatieve leverancier.

Wat is een LLM-gateway?

Een LLM-gateway (ook wel een AI proxy of API-aggregator genoemd) is een lichte, centrale tussenlaag die het netwerkverkeer tussen je interne applicaties en externe of interne AI-modelproviders afhandelt. Applicaties praten niet langer rechtstreeks met de API's van externe partijen, maar sturen hun verzoeken naar het uniforme eindpunt van de gateway.

De gateway ontvangt een gestandaardiseerd verzoek (vaak op basis van de gangbare OpenAI-compatibele API-indeling), verwerkt dit volgens vooraf ingestelde regels, voegt de vereiste authenticatie toe, stopt eventueel een cache-controle in de keten en stuurt de aanroep door naar de juiste doellocatie. Vervolgens wordt het antwoord teruggezonden naar de aanroepende applicatie.

De kernfuncties van een centrale gateway

Door de interactie met LLM's te centraliseren in één gecontroleerde tussenlaag, krijgt het infrastructuurteam grip op vijf cruciale aspecten van AI-integratie:

1. Centraal sleutel- en authenticatiebeheer

Sleutels van externe providers zoals OpenAI, Anthropic, Mistral of Azure OpenAI worden uitsluitend opgeslagen in de beveiligde omgeving van de gateway. De achterliggende applicaties authenticeren zich bij de gateway met een intern gegenereerde API-sleutel of token. Mocht een interne sleutel lekken, dan kan deze direct op de gateway worden ingetrokken zonder dat er externe API-sleutels bij de leverancier moeten worden vervangen.

2. Quota, rate limiting en kostenbeheersing

Zonder centrale controle kan een bug in een lus of een plotselinge piek in gebruikersverkeer leiden tot onverwacht hoge maandrekeningen. Een gateway stelt beheerders in staat om per team, gebruiker of applicatie strikte kwota in te stellen (bijvoorbeeld een maximaal budget per maand of een maximum aantal tokens per minuut). Lees meer over het opzetten van dit soort restricties in ons artikel over rate limits en kostenbeheersing.

3. Observability, logging en audit trails

Om te voldoen aan wet- en regelgeving (zoals de AVG/GDPR en de EU AI Act) is het essentieel te weten welke gegevens de organisatie verlaten en naar welke verwerkers deze worden gestuurd. Een gateway biedt centrale instrumentatie voor observability en logging, inclusief metrieken zoals latency, tokenverbruik, error-percentages en prompt-logs.

4. Slimme caching van antwoorden

Veel applicaties versturen regelmatig identieke of sterk vergelijkbare prompts naar een model. Door op gateway-niveau respons-caching toe te passen, worden identieke verzoeken direct vanuit het geheugen of een snelle datastore beantwoord. Dit levert een drastische reductie op in latency en bespaart tokens. Zie ook onze gids over caching van LLM-antwoorden voor een verdieping op exacte versus semantische caching.

5. Model-routing en leverancieronafhankelijkheid

Een van de grootste voordelen van een gateway is de abstractie van de leverancier. Applicaties vragen om een bepaald type functionaliteit (bijvoorbeeld general-chat-fast) in plaats van een hardcoded modelnaam. De gateway bepaalt op basis van regels welk fysiek model wordt aangeroepen. Voor meer geavanceerde strategieën kun je ons artikel over dynamische model-routing raadplegen.

Wat een LLM-gateway wel én niet oplost

Hoewel een gateway een krachtige bouwsteen is in je AI-infrastructuur, is het belangrijk om heldere verwachtingen te hebben over de reikwijdte ervan.

Wel opgelost door de gateway Niet opgelost door de gateway
Centralisatie van API-sleutels en secrets Data-preparatie, chunking en vector-embedding logica
Kostenplafonds, rate limits en budget-alerts per team Prompt engineering en applicatiespecifieke contextophaling
Automatische retries, timeouts en failover bij uitval Kwaliteitsborging van de inhoudelijke LLM-output
Inzicht in latency, foutpercentages en tokenverbruik Fine-tuning of het trainen van eigen modellen

Een gateway is kortom een netwerk- en beheerslaag. Het vervangt niet de applicatielogica zoals een RAG-pijplijn (Retrieval-Augmented Generation). Als je een RAG-systeem opzet, verzorgt de applicatie nog steeds het ophalen van documenten en de vector-zoekopdrachten, terwijl de gateway de uiteindelijke generatieaanroep naar het taalmodel faciliteert. Bekijk de RAG voor beginners gids op leren.llmnet.nl voor meer inzicht in de verdeling van deze verantwoordelijkheden.

Architectuur van een robuuste gateway: Health checks en failover

Wanneer alle applicaties afhankelijk worden van één centrale gateway, verandert de gateway in een kritiek 'single point of failure'. Een robuuste architectuur vereist daarom een hoge beschikbaarheid (high availability) en automatische failover-mechanismen.

Een professionele gateway-inrichting gebruikt actieve en passieve health checks. Een actieve health check verstuurt periodiek een minimale pings aanroep naar de geconfigureerde modelproviders om te controleren of de API reageert en wat de actuele latency is. Passieve health checks monitoren de daadwerkelijke productie-aanroepen. Als een provider opeens 503 Service Unavailable of 429 Too Many Requests foutmeldingen teruggeeft, markeert de gateway deze provider tijdelijk als ongezond (unhealthy).

Failover-principe: Zodra de primaire provider (bijvoorbeeld Provider A) uitvalt of zijn rate limit bereikt, schakelt de gateway het verzoek automatisch en transparant over naar een secundaire provider (Provider B) met een vergelijkbaar model. De aanroepende clientmerkt hier niets van, behalve een minimale toename in responstijd.

Praktisch configuratievoorbeeld

Onderstaand YAML-voorbeeld illustreert een leverancieronafhankelijke declaratieve configuratie van een zelf-gehoste LLM-gateway. Hierin worden twee providers gedefinieerd, inclusief een gecombineerde fallback-route, rate limiting, caching en gezondheidscontroles.

# Configuratiefil voor zelf-gehoste LLM-Gateway
version: "1.0"

server:
  host: "0.0.0.0"
  port: 8080
  timeout_seconds: 30

# Externe modelproviders en hun geheime sleutels uit omgevingsvariabelen
providers:
  - id: openai-main
    type: openai
    api_key: "${OPENAI_API_KEY}"
    health_check:
      enabled: true
      interval_seconds: 15
      path: "/v1/models"

  - id: anthropic-backup
    type: anthropic
    api_key: "${ANTHROPIC_API_KEY}"
    health_check:
      enabled: true
      interval_seconds: 15

# Globale caching instellingen
caching:
  enabled: true
  type: memory
  ttl_seconds: 3600 # 1 uur caching voor identieke prompts

# Geconfigureerde virtuele routes voor interne applicaties
routes:
  - path: "/v1/chat/completions"
    name: "standard-chat-route"
    # Primaire provider met automatische failover
    targets:
      - provider: openai-main
        model: "gpt-4o-mini"
        weight: 100
      - provider: anthropic-backup
        model: "claude-3-5-haiku-20241022"
        is_fallback: true

    # Retry- en uitvalbeleid
    policies:
      max_retries: 2
      retry_on_status: [429, 500, 502, 503, 504]
      rate_limiting:
        requests_per_minute: 120
        tokens_per_minute: 100000

In dit configuratievoorbeeld stuurt het systeem alle verzoeken standaard naar gpt-4o-mini via OpenAI. Mocht OpenAI een foutcode 500 of 429 retourneren, dan vuurt de gateway na twee retries automatisch het verzoek af naar claude-3-5-haiku via Anthropic. De backend-applicatie ontvangt simpelweg een succesvol antwoord zonder ingewikkelde afhandelingslogica in de eigen code-base.

Aandachtspunten bij het zelf hosten

Het besluit om een gateway zelf te hosten (bijvoorbeeld in Kubernetes of op een dedicated virtuele server via Docker) brengt operationele verantwoordelijkheden met zich mee:

  • Streaming en Latency Overhead: Een extra netwerk-hop voegt latency toe. Zorg ervoor dat de gateway is geschreven in een high-performance taal of framework (zoals Go, Rust of een geoptimaliseerde Nginx/Envoy-module) en dat Server-Sent Events (SSE) voor streaming antwoorden efficiënt worden doorgestuurd.
  • Netwerkbeveiliging: Plaats de gateway binnen het interne netwerk (VPC) en stel TLS-encryptie verplicht. Zorg dat de beheersinterface niet openbaar toegankelijk is op het internet.
  • Stateless Scaling: Ontwerp de gateway bij voorkeur stateless. Sla sessiegegevens, rate-limit tellers en cache-indexen op in een gedeelde in-memory datastore zoals Redis, zodat de gateway eenvoudig horizontaal opgeschaald kan worden bij toenemend verkeer.

Conclusie

Het zelf hosten van een LLM-gateway is een essentiële stap voor organisaties die AI-toepassingen professioneel willen schalen. Het ontkoppelt de applicatie-ontwikkeling van de snel veranderende leveranciersmarkt, verhoogt de beveiliging van API-sleutels en biedt noodzakelijke mechanismen voor kostenbeheersing en uitvalbeveiliging. Door vanaf het begin een doordachte gateway-architectuur in te richten, blijft jouw infrastructuur flexibel, robuust en voorbereid op toekomstige ontwikkelingen in het AI-landschap.