from typing import Optional from app.ai.base import VisionProvider, TextProvider class AIManager: _instance = None def __new__(cls): if cls._instance is None: cls._instance = super().__new__(cls) cls._instance._initialized = False return cls._instance def __init__(self): if self._initialized: return self.vision_providers: dict[str, VisionProvider] = {} self.text_providers: dict[str, TextProvider] = {} self._initialized = True def register_vision_provider(self, name: str, provider: VisionProvider): self.vision_providers[name] = provider def register_text_provider(self, name: str, provider: TextProvider): self.text_providers[name] = provider def get_vision_provider(self, name: str) -> Optional[VisionProvider]: return self.vision_providers.get(name) def get_text_provider(self, name: str) -> Optional[TextProvider]: return self.text_providers.get(name) ai_manager = AIManager()