diff --git a/backend/services/llamaswap.py b/backend/services/llamaswap.py index 3888aec..bed1759 100644 --- a/backend/services/llamaswap.py +++ b/backend/services/llamaswap.py @@ -91,8 +91,12 @@ def engine_reachable() -> bool: # --- Schreiben --------------------------------------------------------------- def model_id_from_path(model_path: str) -> str: """Sprechende Modell-ID (= API-Name) aus dem GGUF-Pfad: Repo-Ordnername ohne - '-GGUF'. Fallback: Dateiname ohne Quant-Suffix.""" + '-GGUF'. Fallback: Dateiname ohne Quant-Suffix. + Split-GGUFs liegen oft in einem Quant-Unterordner (…/Q4_K_M/file-00001-of-…) → + dann eine Ebene höher (Repo-Ordner) nehmen, sonst hieße das Modell 'Q4_K_M'.""" d = os.path.basename(os.path.dirname(model_path)) + if re.fullmatch(r"(I?Q\d[\w]*|UD-Q\d[\w]*|F16|BF16|FP16|F32)", d, flags=re.I): + d = os.path.basename(os.path.dirname(os.path.dirname(model_path))) name = re.sub(r"[-_]?GGUF$", "", d, flags=re.I).strip("-_") if not name: fn = re.sub(r"\.gguf$", "", os.path.basename(model_path), flags=re.I)