[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:
co-authored by
Chauncey
mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
parent
be3f614ff1
commit
d29dc3ab87
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user