Sobes.tech
Senior

Σχεδιάστε μια υπηρεσία LLM πολλαπλών ενοικιαστών με περιορισμό ρυθμού και ποσοστά ανά συνδρομή.

sobes.tech AI

Απάντηση από AI

Για τον σχεδιασμό μιας υπηρεσίας multi-tenant LLM με όρια ρυθμού και ποσοστώσεις βάσει συνδρομής, πρέπει να ληφθούν υπόψη αρκετές βασικές πτυχές:

  1. Multi-tenancy:

    • Σε κάθε πελάτη (ενοικιαστή) αποδίδεται ένας μοναδικός αναγνωριστικός κωδικός.
    • Τα δεδομένα και τα μοντέλα είναι απομονωμένα ή λογικά διαχωρισμένα για να διασφαλίζεται η ασφάλεια και η ιδιωτικότητα.
  2. Ταυτοποίηση και εξουσιοδότηση:

    • Χρησιμοποιήστε API-keys ή OAuth για την ταυτοποίηση των πελατών.
    • Ελέγχετε τα δικαιώματα πρόσβασης και τις συνδρομές σε κάθε αίτημα.
  3. Περιορισμός ρυθμού:

    • Περιορίστε τον αριθμό των αιτημάτων σε μια συγκεκριμένη χρονική περίοδο για κάθε πελάτη.
    • Μπορείτε να χρησιμοποιήσετε αλγορίθμους όπως token-bucket ή leaky bucket.
    • Αποθηκεύστε την κατάσταση των ορίων σε μια γρήγορη αποθήκευση (π.χ., Redis).
  4. Ποσοστώσεις βάσει συνδρομής:

    • Ορίστε όρια χρήσης (π.χ., αριθμό tokens ή αιτημάτων ανά μήνα) ανάλογα με το πακέτο.
    • Παρακολουθείτε την κατανάλωση και μπλοκάρετε ή ειδοποιείτε σε περίπτωση υπέρβασης.
  5. Αρχιτεκτονική:

    • API Gateway για δρομολόγηση και έλεγχο πρόσβασης.
    • Microservices για την επεξεργασία των αιτημάτων προς το LLM.
    • Αποθήκευση για logs και μετρικές.
  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);

Με αυτόν τον τρόπο, η υπηρεσία διασφαλίζει την απομόνωση των πελατών, ελέγχει το φορτίο και τηρεί τους περιορισμούς των συνδρομών.