[FIX] kimi_k2 reasoning parser (#17901)
Signed-off-by: Xinyuan Tong <xinyuantong.cs@gmail.com>
This commit is contained in:
@@ -1196,16 +1196,23 @@ class OpenAIServingChat(OpenAIServingBase):
|
|||||||
"""Judge whether the request needs reasoning"""
|
"""Judge whether the request needs reasoning"""
|
||||||
if not self.reasoning_parser:
|
if not self.reasoning_parser:
|
||||||
return False
|
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 (
|
return (
|
||||||
request.chat_template_kwargs is not None
|
request.chat_template_kwargs is not None
|
||||||
and request.chat_template_kwargs.get("thinking") is True
|
and request.chat_template_kwargs.get("thinking") is True
|
||||||
)
|
)
|
||||||
if self.reasoning_parser in ["qwen3", "glm45", "nano_v3", "interns1"]:
|
if self.reasoning_parser in ["kimi_k2"]:
|
||||||
# qwen3, glm45, nano_v3, and interns1 are reasoning by default
|
# Models that thinking by default, and can be disabled by setting thinking=False
|
||||||
return (
|
return (
|
||||||
not request.chat_template_kwargs
|
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
|
return True # default
|
||||||
|
|
||||||
|
|||||||
@@ -179,26 +179,6 @@ class DeepSeekR1Detector(BaseReasoningFormatDetector):
|
|||||||
# https://github.com/sgl-project/sglang/pull/3202#discussion_r1950153599
|
# 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: (<think>)*(.*)</think>.
|
|
||||||
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__(
|
|
||||||
"<think>",
|
|
||||||
"</think>",
|
|
||||||
# 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):
|
class Qwen3Detector(BaseReasoningFormatDetector):
|
||||||
"""
|
"""
|
||||||
Detector for Qwen3 models (e.g., Qwen/Qwen3-235B-A22B).
|
Detector for Qwen3 models (e.g., Qwen/Qwen3-235B-A22B).
|
||||||
@@ -398,7 +378,7 @@ class ReasoningParser:
|
|||||||
"glm45": Qwen3Detector,
|
"glm45": Qwen3Detector,
|
||||||
"gpt-oss": GptOssDetector,
|
"gpt-oss": GptOssDetector,
|
||||||
"kimi": KimiDetector,
|
"kimi": KimiDetector,
|
||||||
"kimi_k2": KimiK2Detector,
|
"kimi_k2": Qwen3Detector,
|
||||||
"qwen3": Qwen3Detector,
|
"qwen3": Qwen3Detector,
|
||||||
"qwen3-thinking": Qwen3Detector,
|
"qwen3-thinking": Qwen3Detector,
|
||||||
"minimax": Qwen3Detector,
|
"minimax": Qwen3Detector,
|
||||||
|
|||||||
Reference in New Issue
Block a user