Spaces:
Running
Running
| 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 | |
| class OpenAI_ApiKeyManager(): | |
| def __init__(self, mode='blacklist') -> None: | |
| # self.key_avail_list = [] | |
| self.key_black_list = [] | |
| def add_key_to_blacklist(self, key): | |
| self.key_black_list.append(key) | |
| def select_avail_key(self, key_list): | |
| # select key from key_list, but avoid keys also in self.key_black_list, raise error if no key can be found | |
| 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 |