Sobes.tech
Senior

მრავალსართულიანი LLM სერვისის პროექტირება სიჩქარის შეზღუდვით და კვოტებით აბონემენტის მიხედვით.

sobes.tech AI

პასუხი AI-სგან

მულტი-ტენანტი LLM-სერვისის პროექტირებისთვის, რომელიც მოიცავს სიჩქარის შეზღუდვას და გამოწერის კოატებს, საჭიროა რამდენიმე ძირითადი ასპექტის გათვალისწინება:

  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);

ამ გზით, სერვისი უზრუნველყოფს მომხმარებლების იზოლაციას, დატვირთვის კონტროლს და გამოწერის შეზღუდვების დაცვას.