2025-02-02 14:58:18 -05:00
|
|
|
# SPDX-License-Identifier: Apache-2.0
|
2025-06-03 11:20:17 -07:00
|
|
|
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
2025-02-02 14:58:18 -05:00
|
|
|
|
2025-11-05 15:37:02 +08:00
|
|
|
from vllm.reasoning.abs_reasoning_parsers import ReasoningParser, ReasoningParserManager
|
2025-01-29 11:38:08 +08:00
|
|
|
|
|
|
|
|
__all__ = [
|
2025-03-26 08:28:07 -06:00
|
|
|
"ReasoningParser",
|
|
|
|
|
"ReasoningParserManager",
|
2025-01-29 11:38:08 +08:00
|
|
|
]
|
2025-11-05 15:37:02 +08:00
|
|
|
"""
|
|
|
|
|
Register a lazy module mapping.
|
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
ReasoningParserManager.register_lazy_module(
|
|
|
|
|
name="qwen3",
|
|
|
|
|
module_path="vllm.reasoning.qwen3_reasoning_parser",
|
|
|
|
|
class_name="Qwen3ReasoningParser",
|
|
|
|
|
)
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_REASONING_PARSERS_TO_REGISTER = {
|
|
|
|
|
"deepseek_r1": ( # name
|
|
|
|
|
"deepseek_r1_reasoning_parser", # filename
|
|
|
|
|
"DeepSeekR1ReasoningParser", # class_name
|
|
|
|
|
),
|
|
|
|
|
"deepseek_v3": (
|
|
|
|
|
"deepseek_v3_reasoning_parser",
|
|
|
|
|
"DeepSeekV3ReasoningParser",
|
|
|
|
|
),
|
|
|
|
|
"ernie45": (
|
|
|
|
|
"ernie45_reasoning_parser",
|
|
|
|
|
"Ernie45ReasoningParser",
|
|
|
|
|
),
|
|
|
|
|
"glm45": (
|
2026-01-28 21:16:53 +08:00
|
|
|
"deepseek_v3_reasoning_parser",
|
|
|
|
|
"DeepSeekV3ReasoningWithThinkingParser",
|
2025-11-05 15:37:02 +08:00
|
|
|
),
|
|
|
|
|
"openai_gptoss": (
|
|
|
|
|
"gptoss_reasoning_parser",
|
|
|
|
|
"GptOssReasoningParser",
|
|
|
|
|
),
|
|
|
|
|
"granite": (
|
|
|
|
|
"granite_reasoning_parser",
|
|
|
|
|
"GraniteReasoningParser",
|
|
|
|
|
),
|
2025-12-05 03:38:45 +01:00
|
|
|
"holo2": (
|
2026-01-28 21:16:53 +08:00
|
|
|
"deepseek_v3_reasoning_parser",
|
|
|
|
|
"DeepSeekV3ReasoningWithThinkingParser",
|
2025-12-05 03:38:45 +01:00
|
|
|
),
|
2025-11-05 15:37:02 +08:00
|
|
|
"hunyuan_a13b": (
|
|
|
|
|
"hunyuan_a13b_reasoning_parser",
|
|
|
|
|
"HunyuanA13BReasoningParser",
|
|
|
|
|
),
|
2025-11-05 21:48:33 +08:00
|
|
|
"kimi_k2": (
|
2026-02-27 06:58:28 -08:00
|
|
|
"kimi_k2_reasoning_parser",
|
|
|
|
|
"KimiK2ReasoningParser",
|
2025-11-05 21:48:33 +08:00
|
|
|
),
|
2025-11-05 15:37:02 +08:00
|
|
|
"minimax_m2": (
|
|
|
|
|
"minimax_m2_reasoning_parser",
|
|
|
|
|
"MiniMaxM2ReasoningParser",
|
|
|
|
|
),
|
|
|
|
|
"minimax_m2_append_think": (
|
|
|
|
|
"minimax_m2_reasoning_parser",
|
|
|
|
|
"MiniMaxM2AppendThinkReasoningParser",
|
|
|
|
|
),
|
|
|
|
|
"mistral": (
|
|
|
|
|
"mistral_reasoning_parser",
|
|
|
|
|
"MistralReasoningParser",
|
|
|
|
|
),
|
2026-03-10 00:11:41 +02:00
|
|
|
"nemotron_v3": (
|
|
|
|
|
"nemotron_v3_reasoning_parser",
|
|
|
|
|
"NemotronV3ReasoningParser",
|
|
|
|
|
),
|
2025-11-05 15:37:02 +08:00
|
|
|
"olmo3": (
|
|
|
|
|
"olmo3_reasoning_parser",
|
|
|
|
|
"Olmo3ReasoningParser",
|
|
|
|
|
),
|
|
|
|
|
"qwen3": (
|
|
|
|
|
"qwen3_reasoning_parser",
|
|
|
|
|
"Qwen3ReasoningParser",
|
|
|
|
|
),
|
|
|
|
|
"seed_oss": (
|
|
|
|
|
"seedoss_reasoning_parser",
|
|
|
|
|
"SeedOSSReasoningParser",
|
|
|
|
|
),
|
|
|
|
|
"step3": (
|
|
|
|
|
"step3_reasoning_parser",
|
|
|
|
|
"Step3ReasoningParser",
|
|
|
|
|
),
|
2026-02-02 10:21:18 +08:00
|
|
|
"step3p5": (
|
|
|
|
|
"step3p5_reasoning_parser",
|
|
|
|
|
"Step3p5ReasoningParser",
|
|
|
|
|
),
|
2025-11-05 15:37:02 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def register_lazy_reasoning_parsers():
|
|
|
|
|
for name, (file_name, class_name) in _REASONING_PARSERS_TO_REGISTER.items():
|
|
|
|
|
module_path = f"vllm.reasoning.{file_name}"
|
|
|
|
|
ReasoningParserManager.register_lazy_module(name, module_path, class_name)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
register_lazy_reasoning_parsers()
|