main
py 246 lines 5.49 KB
Raw
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()