From a81c44db040bdbacae1b38301e961451efc1b909 Mon Sep 17 00:00:00 2001 From: Vuong Hoang Date: Sun, 16 Aug 2026 15:51:30 -0700 Subject: [PATCH] config(gen-seat): reasoning_effort=medium default (affects gen-reasoning only) Measured on the restored model: at the template default xhigh, reasoning runs 4,529-5,532 chars on a 3-turn history and was observed spiking to 9,261; medium holds it to 2,602-3,283 with content length unchanged or better. Per-request overridable; an invalid value 400s. SCOPE CAVEAT, stated because I applied this while chasing the wrong path: this is a NO-OP for the alias, which sends enable_thinking:false and produces zero reasoning. It affects only. The operator's reported multi-turn failure was on , so this does not address it. --- stacks/gen-seat/compose.yaml | 37 +++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/stacks/gen-seat/compose.yaml b/stacks/gen-seat/compose.yaml index ef23a45..cf248e4 100644 --- a/stacks/gen-seat/compose.yaml +++ b/stacks/gen-seat/compose.yaml @@ -62,13 +62,36 @@ services: - '{"image": 4}' - --reasoning-parser - ${GEN_REASONING_PARSER:-qwen3} - # NOTE: a --default-chat-template-kwargs '{"reasoning_effort": "medium"}' - # line lived here during the 2026-08-16 AEON-ULTIMATE trial and was - # REMOVED on rollback, so that restoring the previous model restores the - # previous behaviour exactly and the model stays the only changed - # variable. Re-add it only alongside a template that actually reads the - # kwarg (AEON's does, at chat_template.jinja:47; the Qwen3.6 line ignores - # it entirely, where setting it would be a false lever). + # Seat-level DEFAULT reasoning effort. Per-request overridable via + # chat_template_kwargs; an invalid value 400s rather than silently + # falling back (the template validates and raises). + # + # WHY: the Qwen3.8 chat template defaults to `xhigh` + # (chat_template.jinja:47), and at xhigh reasoning GROWS WITH + # CONVERSATION DEPTH and has a long tail. Measured 2026-08-16 on THIS + # model (not inferred from a card), 3-turn history, 3 samples each: + # + # xhigh (default) 4,529-5,532 chars, observed spiking to 9,261 + # medium 2,602-3,283 chars + # low 1,657-2,505 chars + # + # Content length was unchanged or BETTER at medium (median 335w vs 343w), + # so this is ~40% less budget burned for the same answer. Single-turn + # probes do not surface it -- single-turn reasoning is only ~1-1.8k chars, + # which is why the acceptance gate missed it entirely. + # + # The failure it prevents: at xhigh the reasoning tail exhausts max_tokens + # before any content is emitted, returning finish_reason=length with an + # EMPTY content field. That reads as the model being degenerate on long + # conversations when it is a budget interaction. Pairs with the + # gateway-chat max_tokens default (raised 1024 -> 4096); NEITHER fix alone + # is sufficient. + # + # Only set this for a template that actually reads the kwarg -- the + # Qwen3.6 line (Fable-Fusion on char-rp-reasoning) ignores it entirely, + # where it would be a false lever. + - --default-chat-template-kwargs + - '{"reasoning_effort": "${GEN_REASONING_EFFORT:-medium}"}' - --enable-auto-tool-choice - --tool-call-parser - qwen3_coder