Sobes.tech
Senior

Disainige mitme rentnikuga LLM-teenus, millel on kiiruse piirang ja kvotid tellimuse järgi.

sobes.tech AI

Vastus AI-lt

Mitme kasutaja (multi-tenancy) LLM-teenuse projekteerimisel, millel on kiiruse piirang ja tellimuse kvoodid, tuleb arvestada mitmete oluliste aspektidega:

  1. Mitmekasutajalisus (multi-tenancy):

    • Iga kliendile (rentnikule) määratakse eraldi identifikaator.
    • Andmed ja mudelid on isoleeritud või loogiliselt eraldatud, et tagada turvalisus ja privaatsus.
  2. Autentimine ja autoriseerimine:

    • Kasutada API-võtmeid või OAuth-i klientide identifitseerimiseks.
    • Kontrollida õigusi ja tellimusi iga päringu puhul.
  3. Kiiruse piirang:

    • Piirata iga kliendi päringute arvu kindla aja jooksul.
    • Kasutada tokeni-baku või leki-baku algoritme.
    • Hoida piirangute olekut kiirel salvestil (näiteks Redis).
  4. Tellimuse kvoodid:

    • Määrata kasutuslimiidid (näiteks tokenite või päringute arv kuus) vastavalt tariifile.
    • Jälgida tarbimist ning blokeerida või teavitada ületamisest.
  5. Arhitektuur:

    • API Gateway marsruutimiseks ja juurdepääsu kontrollimiseks.
    • Mikroteenused päringute töötlemiseks LLM-ile.
    • Logide ja mõõdikute salvestus.
  6. Jälgimine ja logimine:

    • Jälgida kasutamist, vigu ja jõudlust.

Näide lihtsast kiiruse piirangust Node.js ja Redis abil:

const rateLimit = require('express-rate-limit');
const RedisStore = require('rate-limit-redis');
const redisClient = require('./redisClient');

const limiter = rateLimit({
  store: new RedisStore({ client: redisClient }),
  windowMs: 60 * 1000, // 1 minut
  max: (req) => {
    // Saada kasutaja tellimuse limiit
    return req.user.subscriptionLimit || 100;
  },
  keyGenerator: (req) => req.user.id,
  handler: (req, res) => {
    res.status(429).json({ error: 'Päringute limiit on ületatud' });
  }
});

app.use('/api/llm', authenticateUser, limiter, llmHandler);

Seega tagab teenus klientide isolatsiooni, koormuse kontrolli ja tellimuse piirangute järgimise.