[Bugfix][Gemma4] Align parser enable_thinking default with template (#52430)

Signed-off-by: lxy-alexander <lxy_alexander@outlook.com>
Co-authored-by: Chauncey <chaunceyjiang@gmail.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
This commit is contained in:
Alexander Lee
2026-08-18 12:41:26 +00:00
committed by GitHub
co-authored by Chauncey mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
parent be3f614ff1
commit d29dc3ab87
3 changed files with 31 additions and 9 deletions
@@ -170,7 +170,7 @@ def mock_tokenizer():
@pytest.fixture
def parser(mock_tokenizer):
return Gemma4Parser(mock_tokenizer)
return Gemma4Parser(mock_tokenizer, chat_template_kwargs={"enable_thinking": True})
@pytest.fixture
@@ -289,7 +289,10 @@ class TestGemma4PromptOpenReasoning:
@pytest.fixture
def open_reasoning_parser(self, open_reasoning_tokenizer):
return Gemma4Parser(open_reasoning_tokenizer)
return Gemma4Parser(
open_reasoning_tokenizer,
chat_template_kwargs={"enable_thinking": True},
)
@staticmethod
def _prompt_ids_open_channel() -> list[int]:
@@ -394,7 +397,9 @@ class TestGemma4PreInitReasoningRobustness:
@pytest.fixture
def pre_init_parser(self, pre_init_tokenizer):
return Gemma4Parser(pre_init_tokenizer)
return Gemma4Parser(
pre_init_tokenizer, chat_template_kwargs={"enable_thinking": True}
)
def test_model_emitted_channel_open_after_new_turn(
self, pre_init_parser, pre_init_tokenizer, request_obj
@@ -489,7 +494,9 @@ class TestGemma4ChannelLessOutputConsistency:
@pytest.fixture
def plain_parser(self, plain_tokenizer):
return Gemma4Parser(plain_tokenizer)
return Gemma4Parser(
plain_tokenizer, chat_template_kwargs={"enable_thinking": True}
)
def test_streaming_channel_less_output_is_content(
self, plain_parser, plain_tokenizer, request_obj
@@ -521,7 +528,9 @@ class TestGemma4ChannelLessOutputConsistency:
assert reasoning is None
assert content == _PLAIN_ANSWER_TEXT
stream_parser = Gemma4Parser(plain_tokenizer)
stream_parser = Gemma4Parser(
plain_tokenizer, chat_template_kwargs={"enable_thinking": True}
)
results = _stream_tokens_batched(
stream_parser,
plain_tokenizer,
@@ -262,14 +262,27 @@ def test_gemma4_adjust_request(generic_tokenizer):
assert result is request
def test_gemma4_previous_turn_reasoning_is_reasoning_end(generic_tokenizer):
@pytest.mark.parametrize(
("chat_template_kwargs", "expected_is_reasoning_end"),
[
pytest.param({}, True, id="omitted_enable_thinking"),
pytest.param({"enable_thinking": False}, True, id="thinking_disabled"),
pytest.param({"enable_thinking": True}, False, id="thinking_enabled"),
],
)
def test_gemma4_new_turn_reasoning_end_matches_enable_thinking(
generic_tokenizer,
chat_template_kwargs,
expected_is_reasoning_end,
):
output = (
"<|channel>thought\n1st thought<channel|>1st content<turn|>\n"
"<|turn>user\nThanks<|turn>model\n"
)
output_tokens = gemma4_encode_output(generic_tokenizer, output)
parser: ReasoningParser = ReasoningParserManager.get_reasoning_parser(parser_name)(
generic_tokenizer
generic_tokenizer,
chat_template_kwargs=chat_template_kwargs,
)
is_reasoning_end = parser.is_reasoning_end(output_tokens)
assert not is_reasoning_end
assert is_reasoning_end is expected_is_reasoning_end
+1 -1
View File
@@ -400,7 +400,7 @@ class Gemma4Parser(ParserEngine):
**kwargs,
) -> None:
chat_kwargs = kwargs.get("chat_template_kwargs", {}) or {}
self._thinking_enabled = chat_kwargs.get("enable_thinking", True)
self._thinking_enabled = chat_kwargs.get("enable_thinking", False)
super().__init__(
tokenizer,
tools,