Spaces:
Sleeping
Sleeping
| 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() |