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:
-
Mitmekasutajalisus (multi-tenancy):
- Iga kliendile (rentnikule) määratakse eraldi identifikaator.
- Andmed ja mudelid on isoleeritud või loogiliselt eraldatud, et tagada turvalisus ja privaatsus.
-
Autentimine ja autoriseerimine:
- Kasutada API-võtmeid või OAuth-i klientide identifitseerimiseks.
- Kontrollida õigusi ja tellimusi iga päringu puhul.
-
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).
-
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.
-
Arhitektuur:
- API Gateway marsruutimiseks ja juurdepääsu kontrollimiseks.
- Mikroteenused päringute töötlemiseks LLM-ile.
- Logide ja mõõdikute salvestus.
-
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.