M_chatbot / core /ai_provider.py
minh-4T's picture
remove base retriever
4b27f50
import os
import logging
import threading
import groq
logger = logging.getLogger(__name__)
class AIProviderManager:
def __init__(self):
# Lấy danh sách keys
self.groq_keys = [k.strip() for k in os.getenv("GROQ_API_KEYS", "").split(",") if k.strip()]
self.gemini_keys = [k.strip() for k in os.getenv("GEMINI_API_KEYS", "").split(",") if k.strip()]
self.groq_idx = 0
self.gemini_idx = 0
self._lock = threading.Lock() # Đảm bảo Thread-Safe khi có nhiều Request cùng lúc
def get_groq_client(self):
if not self.groq_keys: return None
return groq.Groq(api_key=self.groq_keys[self.groq_idx])
def rotate_groq(self):
with self._lock:
if len(self.groq_keys) > 1:
self.groq_idx = (self.groq_idx + 1) % len(self.groq_keys)
logger.info(f"Đã xoay sang Groq Key thứ {self.groq_idx + 1}")
def get_gemini_key(self):
if not self.gemini_keys: return None
return self.gemini_keys[self.gemini_idx]
def rotate_gemini(self):
with self._lock:
if len(self.gemini_keys) > 1:
self.gemini_idx = (self.gemini_idx + 1) % len(self.gemini_keys)
logger.info("Đã xoay sang Gemini Key dự phòng")
api_manager = AIProviderManager()