Sobes.tech
Senior

Դիզայնեք բազմաբնակարան LLM ծառայություն՝ արագության սահմանափակում և բաժանորդագրության քվոտաներով։

sobes.tech AI

Պատասխան AI-ից

Մուլտի-տենանտ ԼԼՄ-ծառայության նախագծման համար, որը ունի արագության սահմանափակում և բաժանորդագրության քվոտաներ, անհրաժեշտ է հաշվի առնել մի քանի հիմնական аспектներ:

  1. Մուլտիարենտություն (multi-tenancy):

    • Յուրաքանչյուր հաճախորդին (տենանտին) հատկացվում է առանձին նույնականացուցիչ:
    • Տվյալներն ու մոդելները առանձնացված կամ տրամաբանականորեն բաժանված են՝ ապահովելու անվտանգությունը և գաղտնիությունը:
  2. Անձնագրում և թույլտվություն:

    • Օգտագործել API-հավելումներ կամ OAuth՝ հաճախորդների նույնականացման համար:
    • Ստուգել իրավունքները և բաժանորդագրությունները յուրաքանչյուր հարցում:
  3. Արագության սահմանափակում:

    • Հաշվարկել հարցումների քանակը ժամանակի միավորում յուրաքանչյուր հաճախորդի համար:
    • Կարող է օգտագործել տոքեն-բաք կամ լիկի բաք ալգորիթմներ:
    • Պահել սահմանափակումների վիճակը արագ պահեստում (օրինակ՝ Redis):
  4. Բաժանորդագրության քվոտաներ:

    • Հստակեցնել օգտագործման սահմանափակումները (օրինակ՝ տոքենների կամ հարցումների քանակը ամսական)
    • Հետևել սպառմանը և բլոկավորել կամ ծանուցել գերազանցման դեպքում:
  5. Արարատվություն:

    • API Gateway՝ երթևեկության և մուտքի վերահսկման համար:
    • Միկրոսերվիսներ՝ ԼԼՄ-կապակցված հարցումների մշակման համար:
    • Լոգերի և մետրի պահեստ:
  6. Հսկողություն և լոգավորում:

    • Հետևել օգտագործմանը, սխալներին և արտադրողականությանը:

Նմուշ՝ արագ սահմանափակման պարզեցված սխեմա Node.js-ով և Redis-ով:

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 րոպե
  max: (req) => {
    // Ստանալ բաժանորդագրության սահմանափակումը օգտագործողի կողմից
    return req.user.subscriptionLimit || 100;
  },
  keyGenerator: (req) => req.user.id,
  handler: (req, res) => {
    res.status(429).json({ error: 'Հարցումների սահմանափակումը գերազանցված է' });
  }
});

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

Այսպիսով, ծառայությունը ապահովում է հաճախորդների առանձնացում, բեռի վերահսկում և բաժանորդագրությունների սահմանափակումների պահպանում։