| import random |
|
|
| def Singleton(cls): |
| _instance = {} |
| |
| def _singleton(*args, **kargs): |
| if cls not in _instance: |
| _instance[cls] = cls(*args, **kargs) |
| return _instance[cls] |
| |
| return _singleton |
|
|
|
|
| @Singleton |
| class OpenAI_ApiKeyManager(): |
| def __init__(self, mode='blacklist') -> None: |
| |
| self.key_black_list = [] |
| |
| def add_key_to_blacklist(self, key): |
| self.key_black_list.append(key) |
|
|
| def select_avail_key(self, key_list): |
| |
| available_keys = [key for key in key_list if key not in self.key_black_list] |
| if not available_keys: |
| raise KeyError("No available key found.") |
| selected_key = random.choice(available_keys) |
| return selected_key |