| 1 | # SPDX-License-Identifier: Apache-2.0 |
| 2 | # SPDX-FileCopyrightText: Copyright contributors to the vLLM project |
| 3 | |
| 4 | import regex as re |
| 5 | |
| 6 | from vllm.tokenizers import TokenizerLike |
| 7 | from vllm.tool_parsers.abstract_tool_parser import Tool |
| 8 | from vllm.tool_parsers.hermes_tool_parser import Hermes2ProToolParser |
| 9 | |
| 10 | |
| 11 | class LongcatFlashToolParser(Hermes2ProToolParser): |
| 12 | def __init__(self, tokenizer: TokenizerLike, tools: list[Tool] | None = None): |
| 13 | super().__init__(tokenizer, tools) |
| 14 | |
| 15 | self.tool_call_start_token: str = "<longcat_tool_call>" |
| 16 | self.tool_call_end_token: str = "</longcat_tool_call>" |
| 17 | |
| 18 | self.tool_call_regex = re.compile( |
| 19 | r"<longcat_tool_call>(.*?)</longcat_tool_call>" |
| 20 | r"|<longcat_tool_call>(.*)", |
| 21 | re.DOTALL, |
| 22 | ) |