| 1 | # SPDX-License-Identifier: Apache-2.0 |
| 2 | # SPDX-FileCopyrightText: Copyright contributors to the vLLM project |
| 3 | |
| 4 | from vllm.tool_parsers.abstract_tool_parser import ( |
| 5 | ToolParser, |
| 6 | ToolParserManager, |
| 7 | ) |
| 8 | |
| 9 | __all__ = ["ToolParser", "ToolParserManager"] |
| 10 | |
| 11 | |
| 12 | """ |
| 13 | Register a lazy module mapping. |
| 14 | |
| 15 | Example: |
| 16 | ToolParserManager.register_lazy_module( |
| 17 | name="kimi_k2", |
| 18 | module_path="vllm.tool_parsers.kimi_k2_tool_parser", |
| 19 | class_name="KimiK2ToolParser", |
| 20 | ) |
| 21 | """ |
| 22 | |
| 23 | |
| 24 | _TOOL_PARSERS_TO_REGISTER = { |
| 25 | "dots": ( |
| 26 | "dots_tool_parser", |
| 27 | "DotsToolParser", |
| 28 | ), |
| 29 | "deepseek_v3": ( # name |
| 30 | "deepseekv3_tool_parser", # filename |
| 31 | "DeepSeekV3ToolParser", # class_name |
| 32 | ), |
| 33 | "deepseek_v31": ( |
| 34 | "deepseekv31_tool_parser", |
| 35 | "DeepSeekV31ToolParser", |
| 36 | ), |
| 37 | "deepseek_v32": ( |
| 38 | "deepseekv32_engine_tool_parser", |
| 39 | "DeepSeekV32EngineToolParser", |
| 40 | ), |
| 41 | "deepseek_v4": ( |
| 42 | "deepseekv4_engine_tool_parser", |
| 43 | "DeepSeekV4EngineToolParser", |
| 44 | ), |
| 45 | "deepseek_v41": ( |
| 46 | "deepseekv41_engine_tool_parser", |
| 47 | "DeepSeekV41EngineToolParser", |
| 48 | ), |
| 49 | "cohere_command3": ( |
| 50 | "cohere_command_tool_parser", |
| 51 | "CohereCommand3ToolParser", |
| 52 | ), |
| 53 | "cohere_command4": ( |
| 54 | "cohere_command_tool_parser", |
| 55 | "CohereCommand4ToolParser", |
| 56 | ), |
| 57 | "ernie45": ( |
| 58 | "ernie45_tool_parser", |
| 59 | "Ernie45ToolParser", |
| 60 | ), |
| 61 | "glm45": ( |
| 62 | "glm47_moe_tool_parser", |
| 63 | "Glm47MoeModelToolParser", |
| 64 | ), |
| 65 | "glm47": ( |
| 66 | "glm47_moe_tool_parser", |
| 67 | "Glm47MoeModelToolParser", |
| 68 | ), |
| 69 | "ling3": ( |
| 70 | "ling3_tool_parser", |
| 71 | "Ling3ToolParser", |
| 72 | ), |
| 73 | "granite-20b-fc": ( |
| 74 | "granite_20b_fc_tool_parser", |
| 75 | "Granite20bFCToolParser", |
| 76 | ), |
| 77 | "granite": ( |
| 78 | "granite_engine_tool_parser", |
| 79 | "GraniteEngineToolParser", |
| 80 | ), |
| 81 | "granite4": ( |
| 82 | "granite4_tool_parser", |
| 83 | "Granite4ToolParser", |
| 84 | ), |
| 85 | "hermes": ( |
| 86 | "hermes_tool_parser", |
| 87 | "Hermes2ProToolParser", |
| 88 | ), |
| 89 | "hf": ( |
| 90 | "response_template_tool_parser", |
| 91 | "ResponseTemplateToolParser", |
| 92 | ), |
| 93 | "poolside_v1": ( |
| 94 | "poolside_v1_tool_parser", |
| 95 | "PoolsideV1ToolParser", |
| 96 | ), |
| 97 | "hunyuan_a13b": ( |
| 98 | "hunyuan_a13b_tool_parser", |
| 99 | "HunyuanA13BToolParser", |
| 100 | ), |
| 101 | "hy_v3": ( |
| 102 | "hy_v3_tool_parser", |
| 103 | "HYV3ToolParser", |
| 104 | ), |
| 105 | "hy_v4": ( |
| 106 | "hy_v4_tool_parser", |
| 107 | "HYV4ToolParser", |
| 108 | ), |
| 109 | "internlm": ( |
| 110 | "internlm2_tool_parser", |
| 111 | "Internlm2ToolParser", |
| 112 | ), |
| 113 | "jamba": ( |
| 114 | "jamba_tool_parser", |
| 115 | "JambaToolParser", |
| 116 | ), |
| 117 | "lfm2": ( |
| 118 | "lfm2_tool_parser", |
| 119 | "Lfm2ToolParser", |
| 120 | ), |
| 121 | "kimi_k2": ( |
| 122 | "kimi_k2_tool_parser", |
| 123 | "KimiK2ToolParser", |
| 124 | ), |
| 125 | "kimi_k3": ( |
| 126 | "kimi_k3_tool_parser", |
| 127 | "KimiK3ToolParser", |
| 128 | ), |
| 129 | "k2_horizon": ( |
| 130 | "k2_horizon_tool_parser", |
| 131 | "K2HorizonToolParser", |
| 132 | ), |
| 133 | "llama3_json": ( |
| 134 | "llama_tool_parser", |
| 135 | "Llama3JsonToolParser", |
| 136 | ), |
| 137 | "llama4_json": ( |
| 138 | "llama_tool_parser", |
| 139 | "Llama3JsonToolParser", |
| 140 | ), |
| 141 | "llama4_pythonic": ( |
| 142 | "llama4_pythonic_tool_parser", |
| 143 | "Llama4PythonicToolParser", |
| 144 | ), |
| 145 | "longcat": ( |
| 146 | "longcat_tool_parser", |
| 147 | "LongcatFlashToolParser", |
| 148 | ), |
| 149 | "mimo": ( |
| 150 | "mimo_tool_parser", |
| 151 | "MiMoToolParser", |
| 152 | ), |
| 153 | "minimax_m2": ( |
| 154 | "minimax_m2_tool_parser", |
| 155 | "MinimaxM2ToolParser", |
| 156 | ), |
| 157 | "minimax_m3": ( |
| 158 | "minimax_m3_tool_parser", |
| 159 | "MinimaxM3ToolParser", |
| 160 | ), |
| 161 | "minicpm5": ( |
| 162 | "minicpm5xml_tool_parser", |
| 163 | "MiniCPM5XMLToolParser", |
| 164 | ), |
| 165 | "mistral": ( |
| 166 | "mistral_tool_parser", |
| 167 | "MistralToolParser", |
| 168 | ), |
| 169 | "olmo3": ( |
| 170 | "olmo3_tool_parser", |
| 171 | "Olmo3PythonicToolParser", |
| 172 | ), |
| 173 | "plamo3": ( |
| 174 | "plamo3_engine_tool_parser", |
| 175 | "Plamo3EngineToolParser", |
| 176 | ), |
| 177 | "muse_glimmer": ( |
| 178 | "muse_glimmer_tool_parser", |
| 179 | "MuseGlimmerToolParser", |
| 180 | ), |
| 181 | "openai": ( |
| 182 | "gptoss_tool_parser", |
| 183 | "GptOssToolParser", |
| 184 | ), |
| 185 | "phi4_mini_json": ( |
| 186 | "phi4mini_tool_parser", |
| 187 | "Phi4MiniJsonToolParser", |
| 188 | ), |
| 189 | "pythonic": ( |
| 190 | "pythonic_tool_parser", |
| 191 | "PythonicToolParser", |
| 192 | ), |
| 193 | "qwen3_coder": ( |
| 194 | "qwen3_engine_tool_parser", |
| 195 | "Qwen3EngineToolParser", |
| 196 | ), |
| 197 | "qwen3_xml": ( |
| 198 | "qwen3_engine_tool_parser", |
| 199 | "Qwen3EngineToolParser", |
| 200 | ), |
| 201 | "seed_oss": ( |
| 202 | "seed_oss_engine_tool_parser", |
| 203 | "SeedOssEngineToolParser", |
| 204 | ), |
| 205 | "step3": ( |
| 206 | "step3_tool_parser", |
| 207 | "Step3ToolParser", |
| 208 | ), |
| 209 | "step3p5": ( |
| 210 | "step3p5_tool_parser", |
| 211 | "Step3p5ToolParser", |
| 212 | ), |
| 213 | "inkling": ( |
| 214 | "inkling_tool_parser", |
| 215 | "InklingEngineToolParser", |
| 216 | ), |
| 217 | "xlam": ( |
| 218 | "xlam_tool_parser", |
| 219 | "xLAMToolParser", |
| 220 | ), |
| 221 | "gigachat3": ( |
| 222 | "gigachat3_tool_parser", |
| 223 | "GigaChat3ToolParser", |
| 224 | ), |
| 225 | "functiongemma": ( |
| 226 | "functiongemma_tool_parser", |
| 227 | "FunctionGemmaToolParser", |
| 228 | ), |
| 229 | "gemma4": ( |
| 230 | "gemma4_engine_tool_parser", |
| 231 | "Gemma4EngineToolParser", |
| 232 | ), |
| 233 | "apertus": ( |
| 234 | "apertus_tool_parser", |
| 235 | "ApertusToolParser", |
| 236 | ), |
| 237 | } |
| 238 | |
| 239 | |
| 240 | def register_lazy_tool_parsers(): |
| 241 | for name, (file_name, class_name) in _TOOL_PARSERS_TO_REGISTER.items(): |
| 242 | module_path = f"vllm.tool_parsers.{file_name}" |
| 243 | ToolParserManager.register_lazy_module(name, module_path, class_name) |
| 244 | |
| 245 | |
| 246 | register_lazy_tool_parsers() |