Fix Thinking Off handling
This commit is contained in:
+1
-1
@@ -11,7 +11,7 @@ XTTS_IMAGE=ghcr.io/coqui-ai/xtts-streaming-server:latest-cuda121@sha256:f7fb3b1f
|
|||||||
XTTS_CACHE_DIR=/data/models/xtts-v2-cache
|
XTTS_CACHE_DIR=/data/models/xtts-v2-cache
|
||||||
XTTS_GPU_DEVICE=GPU-4834d9d7-5b61-3004-1fb3-4ae49d482d4b
|
XTTS_GPU_DEVICE=GPU-4834d9d7-5b61-3004-1fb3-4ae49d482d4b
|
||||||
AI_DNS=192.168.1.1
|
AI_DNS=192.168.1.1
|
||||||
DEFAULT_REASONING_EFFORT=medium
|
DEFAULT_REASONING_EFFORT=off
|
||||||
|
|
||||||
FAST_MODEL_FILE=qwen-mix/Qwen3.8-27B-IQ4-MIX.gguf
|
FAST_MODEL_FILE=qwen-mix/Qwen3.8-27B-IQ4-MIX.gguf
|
||||||
MEDIUM_MODEL_FILE=qwen-pure/qwen3.8-27b-IQ4_XS-pure.gguf
|
MEDIUM_MODEL_FILE=qwen-pure/qwen3.8-27b-IQ4_XS-pure.gguf
|
||||||
|
|||||||
+1
-1
@@ -576,7 +576,7 @@ services:
|
|||||||
# request limit llama.cpp uses n_predict=-1 and a reasoning loop can
|
# request limit llama.cpp uses n_predict=-1 and a reasoning loop can
|
||||||
# consume the complete context before yielding visible output.
|
# consume the complete context before yielding visible output.
|
||||||
MAX_GENERATION_TOKENS: "8192"
|
MAX_GENERATION_TOKENS: "8192"
|
||||||
DEFAULT_REASONING_EFFORT: "${DEFAULT_REASONING_EFFORT:-medium}"
|
DEFAULT_REASONING_EFFORT: "${DEFAULT_REASONING_EFFORT:-off}"
|
||||||
IMAGE_DIR: /data/images
|
IMAGE_DIR: /data/images
|
||||||
IMAGE_WORKER_URL: http://image-worker:8086
|
IMAGE_WORKER_URL: http://image-worker:8086
|
||||||
IMAGE_WORKER_TOKEN: "${CONTROLLER_TOKEN:?CONTROLLER_TOKEN is required}"
|
IMAGE_WORKER_TOKEN: "${CONTROLLER_TOKEN:?CONTROLLER_TOKEN is required}"
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ EXPERIMENTAL_MODEL_SHA256=40fac4050e940397dbf13087afd50f4734a11805bf9d65ef8ddd74
|
|||||||
VISION_PROJECTOR_FILE=qwen/mmproj-BF16.gguf
|
VISION_PROJECTOR_FILE=qwen/mmproj-BF16.gguf
|
||||||
VISION_PROJECTOR_URL=https://huggingface.co/unsloth/Qwen3.8-27B-GGUF/resolve/main/mmproj-BF16.gguf
|
VISION_PROJECTOR_URL=https://huggingface.co/unsloth/Qwen3.8-27B-GGUF/resolve/main/mmproj-BF16.gguf
|
||||||
VISION_PROJECTOR_SHA256=83ee4f4f205fa514161778c41df1ea14144faa0f713510893b63c2395f5c2d53
|
VISION_PROJECTOR_SHA256=83ee4f4f205fa514161778c41df1ea14144faa0f713510893b63c2395f5c2d53
|
||||||
DEFAULT_REASONING_EFFORT=medium
|
DEFAULT_REASONING_EFFORT=off
|
||||||
# All standard profiles use the MTP tensor embedded in their GGUF. A separate
|
# All standard profiles use the MTP tensor embedded in their GGUF. A separate
|
||||||
# draft-model artifact is neither downloaded nor passed to llama-server.
|
# draft-model artifact is neither downloaded nor passed to llama-server.
|
||||||
|
|
||||||
|
|||||||
@@ -129,8 +129,10 @@ class ChatImageInputTests(unittest.TestCase):
|
|||||||
|
|
||||||
|
|
||||||
class LlamaCppReasoningTests(unittest.TestCase):
|
class LlamaCppReasoningTests(unittest.TestCase):
|
||||||
def test_none_really_disables_thinking(self) -> None:
|
def test_disabled_values_really_disable_thinking(self) -> None:
|
||||||
request = {"reasoning_effort": "none", "messages": []}
|
for effort in (None, "none", "off", "disabled", False):
|
||||||
|
with self.subTest(effort=effort):
|
||||||
|
request = {"reasoning_effort": effort, "messages": []}
|
||||||
normalized = _normalize_llamacpp_reasoning(request)
|
normalized = _normalize_llamacpp_reasoning(request)
|
||||||
self.assertNotIn("reasoning_effort", normalized)
|
self.assertNotIn("reasoning_effort", normalized)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
@@ -171,10 +173,13 @@ class LlamaCppReasoningTests(unittest.TestCase):
|
|||||||
"reasoning_effort": "low",
|
"reasoning_effort": "low",
|
||||||
})
|
})
|
||||||
|
|
||||||
def test_request_without_effort_is_unchanged(self) -> None:
|
def test_request_without_effort_uses_safe_off_default(self) -> None:
|
||||||
request = {"messages": []}
|
request = {"messages": []}
|
||||||
self.assertIs(_normalize_llamacpp_reasoning(request), request)
|
self.assertIs(_normalize_llamacpp_reasoning(request), request)
|
||||||
self.assertNotIn("chat_template_kwargs", request)
|
self.assertEqual(
|
||||||
|
request["chat_template_kwargs"],
|
||||||
|
{"enable_thinking": False},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ChatGenerationLimitTests(unittest.TestCase):
|
class ChatGenerationLimitTests(unittest.TestCase):
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ CONNECT_TIMEOUT = float(os.environ.get("CONNECT_TIMEOUT", "10")) # s, Connect
|
|||||||
POLL_INTERVAL = float(os.environ.get("POLL_INTERVAL", "2")) # s, Polling-Intervall
|
POLL_INTERVAL = float(os.environ.get("POLL_INTERVAL", "2")) # s, Polling-Intervall
|
||||||
MAX_GENERATION_TOKENS = int(os.environ.get("MAX_GENERATION_TOKENS", "8192"))
|
MAX_GENERATION_TOKENS = int(os.environ.get("MAX_GENERATION_TOKENS", "8192"))
|
||||||
DEFAULT_REASONING_EFFORT = os.environ.get(
|
DEFAULT_REASONING_EFFORT = os.environ.get(
|
||||||
"DEFAULT_REASONING_EFFORT", "medium").strip().lower()
|
"DEFAULT_REASONING_EFFORT", "off").strip().lower()
|
||||||
|
|
||||||
# --- Bildgenerierung und Referenzbild-Bearbeitung (FLUX.2 Klein 4B) ---
|
# --- Bildgenerierung und Referenzbild-Bearbeitung (FLUX.2 Klein 4B) ---
|
||||||
LLAMA_SERVICE = os.environ.get("LLAMA_SERVICE", "mike-ai-llama-ui.service")
|
LLAMA_SERVICE = os.environ.get("LLAMA_SERVICE", "mike-ai-llama-ui.service")
|
||||||
@@ -1280,7 +1280,9 @@ def _normalize_llamacpp_reasoning(data: dict) -> dict:
|
|||||||
else:
|
else:
|
||||||
# A client may already speak llama.cpp's native template dialect.
|
# A client may already speak llama.cpp's native template dialect.
|
||||||
# Preserve that explicit choice; otherwise apply the platform-wide
|
# Preserve that explicit choice; otherwise apply the platform-wide
|
||||||
# default so every OpenAI-compatible client behaves consistently.
|
# default. Hermes deliberately omits reasoning_effort when its UI is
|
||||||
|
# set to Off, so the safe default must remain Off; enabled levels are
|
||||||
|
# sent explicitly by Hermes and other capable clients.
|
||||||
existing_kwargs = data.get("chat_template_kwargs")
|
existing_kwargs = data.get("chat_template_kwargs")
|
||||||
if isinstance(existing_kwargs, dict) and (
|
if isinstance(existing_kwargs, dict) and (
|
||||||
"reasoning_effort" in existing_kwargs
|
"reasoning_effort" in existing_kwargs
|
||||||
|
|||||||
Reference in New Issue
Block a user