""" Komplexitäts-Routing für `model: auto` (eingebauter Gateway). Schnell im Alltag (fast), schwer bei Bedarf (heavy) — regelbasiert, sub-ms, ohne Cloud. """ import os import re FAST = os.environ.get("MC_ROUTE_FAST", "fast") HEAVY = os.environ.get("MC_ROUTE_HEAVY", "heavy") HEAVY_CHARS = int(os.environ.get("MC_GATEWAY_HEAVY_CHARS", "8000")) _HEAVY_KW = re.compile( r"\b(beweis|prove|theorem|refactor|architect|komplex|complex|schwierig|" r"think\s*hard|reason\s*carefully|tief\s*nachdenk|optimi[sz]e|algorithm|" r"root\s*cause|debug|analy[sz]e\s+deeply|step[-\s]?by[-\s]?step)\b", re.IGNORECASE, ) def choose_model(body: dict) -> tuple[str, str]: """Wählt fast|heavy für eine Chat-Anfrage. Gibt (alias, begründung) zurück.""" msgs = body.get("messages") or [] text = "\n".join(str(m.get("content") or "") for m in msgs) n = len(text) if n > HEAVY_CHARS: return HEAVY, f"langer Kontext ({n} > {HEAVY_CHARS} Zeichen)" if _HEAVY_KW.search(text): return HEAVY, "Komplexitäts-Schlüsselwort erkannt" return FAST, "Standard"