diff --git a/backend/services/llamaswap.py b/backend/services/llamaswap.py index f1ae1cc..0782ced 100644 --- a/backend/services/llamaswap.py +++ b/backend/services/llamaswap.py @@ -6,6 +6,7 @@ NEU in 2.0: `groups` für Ko-Residenz (schnell + schwer gleichzeitig geladen, `swap:false`) → Multi-Model-Delegation ohne Nachlade-Latenz. """ +import logging import os import re @@ -14,6 +15,8 @@ from ruamel.yaml.scalarstring import LiteralScalarString from config import CMD_TEMPLATE, CONFIG_PATH, DEFAULT_TTL, LLAMA_SWAP_URL, SPEC_DRAFT_MODEL_PATH +log = logging.getLogger(__name__) + # Kanonische Rollen (vereinheitlicht ggü. v1: kein manager/reviewer mehr). ROLE_IDS = {"vision", "coder", "reasoning", "agent", "scout"} @@ -304,12 +307,15 @@ def delete_model(model_id: str) -> bool: def get_running_models() -> list[str]: - """Fragt den /running Endpunkt von llama-swap ab. Gibt geladene Modelle zurück.""" + """Fragt den /running Endpunkt von llama-swap ab. Gibt die Namen der geladenen + Modelle zurück. Neuere llama-swap-Versionen liefern Objekte ({model, state, ...}) + statt Strings — beide Formen werden auf Namens-Strings normalisiert.""" try: with httpx.Client(timeout=2.0) as c: r = c.get(f"{LLAMA_SWAP_URL}/running") if r.status_code == 200: - return r.json().get("running") or [] + data = r.json().get("running") or [] + return [x.get("model", "") if isinstance(x, dict) else x for x in data] except Exception: - pass + log.warning("get_running_models fehlgeschlagen", exc_info=True) return []