>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
TypeScript

Stop met het schrijven van adapters voor neurale netwerken en neem de controle over tokenkosten

Onlangs was ik bezig met het herschrijven van de Claude-integratie naar een bijgewerkte client en betrapte mezelf op een gedachte. Op de ene dag vragen klanten om GPT-4o te connecten, de volgende dag eisen ze Anthropic, en een week later vraagt de financiële afdeling waar een factuur van enkele honderden dollars voor tests vandaan kwam. Elke keer moet ik error handling logica toevoegen, keys beheren en handmatig token-uitgaven berekenen.

Diese routine wordt opgelost door LLM Gateway van het The Open Co team. Het project fungeert als een uniforme API-gateway die aanroepen in het standaard OpenAI formaat accepteert en ze routeert naar de juiste providers.

Eén aanvraag voor elk model

Het kernconcept is eenvoudig. In plaats van meerdere SDK's te integreren, stuur je één HTTP-aanvraag naar een lokale of cloud gateway. De controller identificeert automatisch de doelprovider, transformeert het formaat en retourneert het antwoord.

Momenteel worden de belangrijkste providers ondersteund:

  • OpenAI
  • Anthropic
  • Google Vertex AI
  • Andere services met compatibele API's

Zo ziet een standaard gateway-aanvraag eruit:

curl -X POST https://api.llmgateway.io/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $LLM_GATEWAY_API_KEY" \
  -d '{
  "model": "gpt-4o",
  "messages": [
    {"role": "user", "content": "Hello, how are you?"}
  ]
}'

Als je wilt overschakelen naar Claude 3.5 Sonnet, blijft de JSON-structuur in je applicatie hetzelfde. Alleen de modelnaam in de request body verandert.

Kosten tracking en latency metrics

Wanneer meerdere services of ontwikkelaars met neurale netwerken werken, wordt het beheersen van limieten moeilijk. Soms draait iemand een script met een incorrecte prompt in een oneindige lus en verbrandt daarmee een maandbudget in een uur.

De gateway neemt tracking voor zijn rekening. Elke transactie wordt opgeslagen in de database en het systeem berekent automatisch:

  • Aantal input- en output-tokens
  • Totale kosten van elke aanroep
  • Model response tijd
  • Algemene statistieken per keys en projecten

Via het webpanel kun je kant-en-klare grafieken bekijken en direct zien welk specifiek model het grootste deel van het budget verbruikt.

Projectstructuur en draaien in Docker

De auteurs hebben een monorepo gebouwd in TypeScript. Onder de motorkap worden bewezen technologieën gebruikt:

  • Hono verzorgt API-aanvraag proxying
  • Next.js beheert de webinterface en playground
  • Drizzle ORM werkt met PostgreSQL en Redis databases
  • TypeScript zorgt voor end-to-end typing van componenten

Je kunt je eigen service in een paar minuten deployen via Docker. De auteurs hebben een kant-en-klare image samengesteld die de hoofdcomponenten combineert.

docker volume create llmgateway_postgres
docker volume create llmgateway_redis

docker run -d \
  --name llmgateway \
  --restart unless-stopped \
  -p 3002:3002 \
  -p 3003:3003 \
  -p 3005:3005 \
  -p 3006:3006 \
  -p 4001:4001 \
  -p 4002:4002 \
  -v llmgateway_postgres:/var/lib/postgresql/data \
  -v llmgateway_redis:/var/lib/redis \
  -e AUTH_SECRET="$(openssl rand -base64 32 | tr -d '\n')" \
  -e GATEWAY_API_KEY_HASH_SECRET="$(openssl rand -base64 32 | tr -d '\n')" \
  ghcr.io/theopenco/llmgateway-unified:latest

Een klein detail uit de documentatie: mount geen folder vanaf de hostmachine direct in /var/lib/postgresql/data. Vanwege de specificaties van PostgreSQL permission initialisatie in de container kan het proces crashen. De named volumes in het bovenstaande commando elimineren dit probleem.

Als je het systeem eerst wilt uitproberen zonder deployment, hebben de ontwikkelaars een cloudversie op llmgateway.io.

Beperkingen van de gratis versie

De repository gebruikt dual licensing. De hoofdcode wordt gedistribueerd onder AGPLv3, echter behoren sommige folders in de broncode tot de Enterprise-versie.

In de gratis open-source versie wordt de aanroephistorie 30 dagen bewaard. Als je onbeperkte log retention, geavanceerde gebruikersbilling of teamseparatie binnen je organisatie nodig hebt, moet je een commerciële licentie aanschaffen.

Wie heeft baat bij dit tool

Als je applicatie drie aanvragen per dag naar één model maakt, is er geen punt in het opzetten van een aparte proxy. Je voegt alleen maar een extra faalpunt toe en verwaarloosbare netwerk latency.

De gateway bewijst zich in de volgende situaties:

  • Het project gebruikt modellen van verschillende providers
  • Transparante tokenkosten tracking over verschillende services is vereist
  • Proxy deployment in je eigen omgeving is nodig
  • Een snelle fallback switch naar een backup model bij storingen is gepland

Je kunt het project uitproberen op GitHub. De README daar is vrij minimaal, maar het project is zelfs zonder lange instructies te begrijpen.

Gerelateerde projecten