diff --git a/python/sglang/srt/entrypoints/openai/serving_chat.py b/python/sglang/srt/entrypoints/openai/serving_chat.py
index f833120db..ab4d6c7fb 100644
--- a/python/sglang/srt/entrypoints/openai/serving_chat.py
+++ b/python/sglang/srt/entrypoints/openai/serving_chat.py
@@ -1196,16 +1196,23 @@ class OpenAIServingChat(OpenAIServingBase):
"""Judge whether the request needs reasoning"""
if not self.reasoning_parser:
return False
- if self.reasoning_parser in ["deepseek-v3", "kimi_k2"]:
+ if self.reasoning_parser in ["deepseek-v3"]:
+ # Models that require explicit enable thinking (thinking=True)
return (
request.chat_template_kwargs is not None
and request.chat_template_kwargs.get("thinking") is True
)
- if self.reasoning_parser in ["qwen3", "glm45", "nano_v3", "interns1"]:
- # qwen3, glm45, nano_v3, and interns1 are reasoning by default
+ if self.reasoning_parser in ["kimi_k2"]:
+ # Models that thinking by default, and can be disabled by setting thinking=False
return (
not request.chat_template_kwargs
- or request.chat_template_kwargs.get("enable_thinking", True) is True
+ or request.chat_template_kwargs.get("thinking") is not False
+ )
+ if self.reasoning_parser in ["qwen3", "glm45", "nano_v3", "interns1"]:
+ # Models that thinking by default, and can be disabled by setting enable_thinking=False
+ return (
+ not request.chat_template_kwargs
+ or request.chat_template_kwargs.get("enable_thinking") is not False
)
return True # default
diff --git a/python/sglang/srt/parser/reasoning_parser.py b/python/sglang/srt/parser/reasoning_parser.py
index 87535d95e..455101b5c 100644
--- a/python/sglang/srt/parser/reasoning_parser.py
+++ b/python/sglang/srt/parser/reasoning_parser.py
@@ -179,26 +179,6 @@ class DeepSeekR1Detector(BaseReasoningFormatDetector):
# https://github.com/sgl-project/sglang/pull/3202#discussion_r1950153599
-class KimiK2Detector(BaseReasoningFormatDetector):
- """
- Detector for Kimi K2 model.
-
- It uses the DeepSeek-R1 reasoning format: ()*(.*).
- Defaults to thinking mode (force_reasoning=True), but allows disabling it
- if the model is configured to not think.
- """
-
- def __init__(self, stream_reasoning: bool = True, force_reasoning: bool = True):
- super().__init__(
- "",
- "",
- # Allow force_reasoning to be controlled by arguments, defaulting to True
- # to match vLLM's default `thinking=True` behavior.
- force_reasoning=force_reasoning,
- stream_reasoning=stream_reasoning,
- )
-
-
class Qwen3Detector(BaseReasoningFormatDetector):
"""
Detector for Qwen3 models (e.g., Qwen/Qwen3-235B-A22B).
@@ -398,7 +378,7 @@ class ReasoningParser:
"glm45": Qwen3Detector,
"gpt-oss": GptOssDetector,
"kimi": KimiDetector,
- "kimi_k2": KimiK2Detector,
+ "kimi_k2": Qwen3Detector,
"qwen3": Qwen3Detector,
"qwen3-thinking": Qwen3Detector,
"minimax": Qwen3Detector,