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.
This commit is contained in:
vh
2026-08-16 15:51:30 -07:00
parent 821f751870
commit a81c44db04
+30 -7
View File
@@ -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