# SPDX-License-Identifier: Apache-2.0 # SPDX-FileCopyrightText: Copyright contributors to the vLLM project from vllm.entrypoints.openai.chat_completion.protocol import ( ChatCompletionRequest, ) from vllm.tool_parsers.deepseekv32_tool_parser import DeepSeekV32ToolParser from vllm.tool_parsers.structural_tag_registry import ( get_enable_structured_outputs_in_reasoning, get_model_structural_tag, ) class DeepSeekV4ToolParser(DeepSeekV32ToolParser): """ DeepSeek V4 DSML tool parser. V4 keeps the V3.2 DSML invoke/parameter grammar, but wraps tool calls in ``<|DSML|tool_calls>`` instead of ``<|DSML|function_calls>``. """ tool_call_start_token: str = "<|DSML|tool_calls>" tool_call_end_token: str = "" def get_structural_tag(self, request: ChatCompletionRequest): return get_model_structural_tag( model="deepseek_v4", tools=request.tools, tool_choice=request.tool_choice, reasoning=get_enable_structured_outputs_in_reasoning(), )