Senior
Abonelik bazlı oran sınırı ve kota ile çok kiracılı LLM hizmeti tasarlayın.
sobes.tech yapay zeka
AI'dan gelen yanıt
Rate limit ve abonelik kotalarıyla çok kiracılı (multi-tenant) bir LLM servisi tasarlamak için birkaç temel unsuru göz önünde bulundurmak gerekir:
-
Çok Kiracılık (multi-tenancy):
- Her müşteriye (kiracıya) benzersiz bir kimlik atanır.
- Veriler ve modeller izole edilir veya mantıksal olarak ayrılır, böylece güvenlik ve gizlilik sağlanır.
-
Kimlik doğrulama ve yetkilendirme:
- Müşterileri tanımlamak için API anahtarları veya OAuth kullanılır.
- Her istekte erişim hakları ve abonelikler kontrol edilir.
-
Hız sınırlaması:
- Her müşteri için belirli bir zaman diliminde yapılan istek sayısı sınırlandırılır.
- Token-bucket veya leaky bucket gibi algoritmalar kullanılabilir.
- Limit durumları hızlı bir depolama (örneğin Redis) içinde saklanır.
-
Abonelik kotaları:
- Kullanım limitleri (örneğin, token veya aylık istek sayısı) plana göre belirlenir.
- Tüketim izlenir ve aşıldığında engellenir veya bildirilir.
-
Mimari:
- Yönlendirme ve erişim kontrolü için API Gateway.
- LLM isteklerini işlemek için mikroservisler.
- Günlükler ve metrikler için depolama.
-
İzleme ve günlükleme:
- Kullanım, hata ve performans izlenir.
Node.js ve Redis kullanarak basitleştirilmiş rate limiting şeması örneği:
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 dakika
max: (req) => {
// Kullanıcının abonelik limitini al
return req.user.subscriptionLimit || 100;
},
keyGenerator: (req) => req.user.id,
handler: (req, res) => {
res.status(429).json({ error: 'İstek limiti aşıldı' });
}
});
app.use('/api/llm', authenticateUser, limiter, llmHandler);
Bu şekilde, hizmet müşterilerin izolasyonunu sağlar, yükü kontrol eder ve abonelik kısıtlamalarına uyar.