Senior
Abunəlik əsasında rate limit və kvotalar ilə çox kirayəli LLM xidməti dizayn edin.
sobes.tech Süni İntellekt
AI-dan cavab
Çox kiracılı (multi-tenant) LLM xidməti dizayn etmək üçün rate limit və abunəlik kvotaları ilə əlaqədar bir neçə əsas aspekti nəzərə almaq lazımdır:
-
Multi-tenancy:
- Hər müştəriyə (kiracıya) unikal identifikator verilir.
- Məlumatlar və modellər izolyasiya olunur və ya məntiqi olaraq ayrılır ki, təhlükəsizlik və gizlilik təmin olunsun.
-
İstifadəçi identifikasiyası və icazə:
- Müştəriləri tanımaq üçün API-keys və ya OAuth istifadə edin.
- Hər sorğuda giriş hüquqları və abunəlikləri yoxlayın.
-
Rate limiting:
- Hər müştəri üçün müəyyən zaman ərzində edilən sorğu sayını məhdudlaşdırın.
- Token-bucket və ya leaky bucket kimi alqoritmlərdən istifadə edə bilərsiniz.
- Limitlərin vəziyyətini sürətli yaddaşda (məsələn, Redis) saxlayın.
-
Abunəlik kvotaları:
- İstifadə limiti (məsələn, token və ya aylıq sorğu sayı) tarifə görə müəyyən edin.
- İstifadəni izləyin və aşkar etdikdə bloklayın və ya xəbərdarlıq edin.
-
Mimari:
- API Gateway vasitəsilə marşrutlaşdırma və giriş nəzarəti.
- LLM-ə edilən sorğuları işləyən mikroservislər.
- Loglar və metriklər üçün saxlama.
-
Monitorinq və qeydiyyat:
- İstifadə, səhvlər və performansı izləyin.
Node.js və Redis ilə sadə rate limiting sxeminin nümunəsi:
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 dəqiqə
max: (req) => {
// İstifadəçinin abunəlik limitini əldə edin
return req.user.subscriptionLimit || 100;
},
keyGenerator: (req) => req.user.id,
handler: (req, res) => {
res.status(429).json({ error: 'Sorğu limiti keçildi' });
}
});
app.use('/api/llm', authenticateUser, limiter, llmHandler);
Bu şəkildə, xidmət müştərilərin izolyasiyasını təmin edir, yükü idarə edir və abunəlik məhdudiyyətlərinə riayət edir.