""" Model Service - Each model handles its own logic """ import models.registry as model_registry class ModelService: @staticmethod async def get_model_response(user_id: str, message: str, model_id: str, **kwargs) -> dict: try: model_cfg = model_registry.get(model_id) if "r1" in model_id.lower(): return await ModelService._handle_r1(user_id, message, model_cfg, **kwargs) elif "vision" in model_id.lower(): return await ModelService._handle_vision(user_id, message, model_cfg, **kwargs) else: return await ModelService._handle_default(user_id, message, model_cfg, **kwargs) except Exception as e: logging.error(f"[ModelService] Error for {model_id}: {e}") return { "response": "Model temporarily unavailable. Please try again.", "error": True, "model": model_id } @staticmethod async def _handle_r1(user_id, message, model_cfg, **kwargs): # R1 specific: Deep thinking + dataset examples return { "response": f"[R1 Deep Think] {message[:120]}...", "model": model_cfg["display_name"], "mode": "deep_think" } @staticmethod async def _handle_vision(user_id, message, model_cfg, **kwargs): # Vision specific logic return { "response": f"[Vision Analysis] {message[:100]}...", "model": model_cfg["display_name"], "mode": "vision" } @staticmethod async def _handle_default(user_id, message, model_cfg, **kwargs): return { "response": f"[Default] {message[:100]}...", "model": model_cfg["display_name"], "mode": "standard" }