From 1689f7ef86c3e87842fbbb649aa580606bf0fa4b Mon Sep 17 00:00:00 2001 From: kxz2002 <115912648+kxz2002@users.noreply.github.com> Date: Wed, 5 Nov 2025 10:59:47 +0800 Subject: [PATCH] [Cherry-Pick] Fix ernie4_5_vl_processor.py and qwen_vl_processor.py can not disable thinking (#4762) (#4798) * [Feature] add a new reasoning parser (#4571) * add new reasoning_parser initial commit * add parser file content * add register * ernie_test_reasoning_parser * support token and add tool_parser * add and fix unit tests * modify reasoning_parser * modify reasoning parser and tool parser * modify unit tests * modify reasoning_parser and tool_parser * modify unit tests * fix tool_parser * modify the logic of reasoning_parser and tool_parser * add and modify unit tests * standardize code style * simplify reasoning_parser and tool_parser * modify unit test * [BugFix] Fix finish reason in _create_chat_completion_choice (#4582) * fix n_param _create_chat_completion_choicel * fix unit test * fix final_res * modify unit tests * [BugFix] fix offline llm chat "enable_thinking" is always "False" (#4686) * fix enable_thinking * recover ernie4_5_vl_processor * [BugFix] Fix ernie4_5_vl_processor.py and qwen_vl_processor.py can not disable thinking (#4762) * fix ernie4_5_vl_processor.py and qwen_vl_processor.py * add unit test --- .../ernie4_5_vl_processor.py | 2 +- .../qwen_vl_processor/qwen_vl_processor.py | 2 +- tests/input/test_qwen_vl_processor.py | 20 +++++++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/fastdeploy/input/ernie4_5_vl_processor/ernie4_5_vl_processor.py b/fastdeploy/input/ernie4_5_vl_processor/ernie4_5_vl_processor.py index 317980038..862709757 100644 --- a/fastdeploy/input/ernie4_5_vl_processor/ernie4_5_vl_processor.py +++ b/fastdeploy/input/ernie4_5_vl_processor/ernie4_5_vl_processor.py @@ -233,7 +233,7 @@ class Ernie4_5_VLProcessor(Ernie4_5Processor): if chat_template_kwargs: if isinstance(chat_template_kwargs, dict): for k, v in chat_template_kwargs.items(): - if k not in request: + if k not in request or request[k] is None: request[k] = v else: raise ValueError("Invalid input: chat_template_kwargs must be a dict") diff --git a/fastdeploy/input/qwen_vl_processor/qwen_vl_processor.py b/fastdeploy/input/qwen_vl_processor/qwen_vl_processor.py index cc649c9ba..06f43f335 100644 --- a/fastdeploy/input/qwen_vl_processor/qwen_vl_processor.py +++ b/fastdeploy/input/qwen_vl_processor/qwen_vl_processor.py @@ -237,7 +237,7 @@ class QwenVLProcessor(TextProcessor): if chat_template_kwargs: if isinstance(chat_template_kwargs, dict): for k, v in chat_template_kwargs.items(): - if k not in request: + if k not in request or request[k] is None: request[k] = v else: raise ValueError("Invalid input: chat_template_kwargs must be a dict") diff --git a/tests/input/test_qwen_vl_processor.py b/tests/input/test_qwen_vl_processor.py index a6db80cde..083f7017c 100644 --- a/tests/input/test_qwen_vl_processor.py +++ b/tests/input/test_qwen_vl_processor.py @@ -204,6 +204,26 @@ class TestQwenVLProcessor(unittest.TestCase): result["multimodal_inputs"]["image_type_ids"].shape[0], result["multimodal_inputs"]["grid_thw"][:, 0].sum() ) + def test_process_request_dict_enable_thinking(self): + num_completion_token_ids = 10 + request = { + "request_id": "12345", + "completion_token_ids": [1] * num_completion_token_ids, + "stop": ["stop", "eof"], + "messages": [ + { + "role": "user", + "content": [ + {"type": "text", "text": "Hello"}, + ], + } + ], + "chat_template_kwargs": {"enable_thinking": True}, + } + + result = self.processor.process_request_dict(request, 100) + self.assertEqual(result.get("enable_thinking"), False) + def test_prompt(self): """ Test processing of prompt with image and video placeholders