diff --git a/xtts/llm-adapter/adapter.py b/xtts/llm-adapter/adapter.py index 2d7c039..d9f9854 100644 --- a/xtts/llm-adapter/adapter.py +++ b/xtts/llm-adapter/adapter.py @@ -47,6 +47,14 @@ RVS_TOKEN = os.getenv("RVS_TOKEN", "").strip() LLAMA_URL = os.getenv("LLAMA_URL", "http://llama:8081").rstrip("/") LLM_MODEL = os.getenv("LLM_MODEL", "qwen3-8b") LLM_TIMEOUT_SEC = float(os.getenv("LLM_TIMEOUT_SEC", "60")) +# Qwen3 hat Thinking-Mode default AN — dann verbraet es Tokens in einem +# -Block und liefert (bei kleinem max_tokens) leeren/abgeschnittenen +# content, ausserdem 3x langsamer. ARIAs schnelles Tier will KEIN Grübeln +# (grübeln = harter Turn = Claude). Wir schalten Thinking daher per +# chat_template_kwargs ab (Qwen3-Template versteht enable_thinking=false; +# andere Templates ignorieren das kwarg). Bei einem Modell, das darauf +# empfindlich reagiert: LLM_DISABLE_THINKING=false setzen. +LLM_DISABLE_THINKING = os.getenv("LLM_DISABLE_THINKING", "true").lower() == "true" async def _send(ws, mtype: str, payload: dict) -> None: @@ -73,6 +81,10 @@ async def _call_llama(messages: list, *, max_tokens: int, temperature: float, } if stop: body["stop"] = stop + if LLM_DISABLE_THINKING: + # llama.cpp (--jinja) reicht chat_template_kwargs an die Chat-Vorlage + # weiter. Qwen3 unterdrueckt damit den -Block. + body["chat_template_kwargs"] = {"enable_thinking": False} try: async with httpx.AsyncClient(timeout=LLM_TIMEOUT_SEC) as client: r = await client.post(f"{LLAMA_URL}/v1/chat/completions", json=body)