diff --git a/tests/entrypoints/launchers/test_cli_args.py b/tests/entrypoints/launchers/test_cli_args.py index 1d98170e55..a9c714ada0 100644 --- a/tests/entrypoints/launchers/test_cli_args.py +++ b/tests/entrypoints/launchers/test_cli_args.py @@ -11,6 +11,7 @@ from vllm.entrypoints.launchers.cli_args import ( validate_parsed_serve_args, ) from vllm.entrypoints.openai.models.protocol import LoRAModulePath +from vllm.exceptions import VLLMValidationError from vllm.utils.argparse_utils import FlexibleArgumentParser LORA_MODULE = { @@ -204,7 +205,7 @@ def test_chat_template_validation_for_happy_paths(serve_parser): def test_chat_template_validation_for_sad_paths(serve_parser): """Ensure validation fails if the chat template doesn't exist""" args = serve_parser.parse_args(args=["--chat-template", "does/not/exist"]) - with pytest.raises(ValueError): + with pytest.raises(VLLMValidationError): validate_parsed_serve_args(args) diff --git a/tests/renderers/test_hf.py b/tests/renderers/test_hf.py index 24a9e26fe9..c2377e956c 100644 --- a/tests/renderers/test_hf.py +++ b/tests/renderers/test_hf.py @@ -6,6 +6,7 @@ import pytest from vllm.config import ModelConfig from vllm.entrypoints.chat_utils import load_chat_template from vllm.entrypoints.openai.chat_completion.protocol import ChatCompletionRequest +from vllm.exceptions import VLLMValidationError from vllm.renderers.hf import ( _consolidate_system_messages, _convert_developer_to_system, @@ -97,7 +98,7 @@ def test_no_load_chat_template_filelike(): # Testing chatml template template = "../../examples/does_not_exist" - with pytest.raises(ValueError, match="looks like a file path"): + with pytest.raises(VLLMValidationError, match="looks like a file path"): load_chat_template(chat_template=template) diff --git a/vllm/entrypoints/chat_utils.py b/vllm/entrypoints/chat_utils.py index fe0eac85b1..9ff0a04d86 100644 --- a/vllm/entrypoints/chat_utils.py +++ b/vllm/entrypoints/chat_utils.py @@ -1446,10 +1446,11 @@ def validate_chat_template(chat_template: Path | str | None): builtin_template_path = CHAT_TEMPLATES_DIR / chat_template if not builtin_template_path.exists(): - raise ValueError( + raise VLLMValidationError( f"The supplied chat template string ({chat_template}) " f"appears path-like, but doesn't exist! " - f"Tried: {chat_template} and {builtin_template_path}" + f"Tried: {chat_template} and {builtin_template_path}", + parameter="chat_template", ) else: @@ -1497,7 +1498,7 @@ def _load_chat_template( f"Tried: {chat_template} and {builtin_template_path}. " f"Reason: {e}" ) - raise ValueError(msg) from e + raise VLLMValidationError(msg, parameter="chat_template") from e # If opening a file fails, set chat template to be args to # ensure we decode so our escape are interpreted correctly @@ -1575,7 +1576,8 @@ def _get_full_multimodal_text_prompt( logger.debug("Input prompt: %s", text_prompt) raise VLLMValidationError( f"Found more '{placeholder}' placeholders in input prompt than " - "actual multimodal data items." + "actual multimodal data items.", + parameter="messages", ) missing_placeholders.extend([placeholder] * placeholder_counts[placeholder]) @@ -1833,7 +1835,8 @@ def _reject_reserved_placeholder_in_text(text: str, model_config: ModelConfig) - raise VLLMValidationError( _RESERVED_PLACEHOLDER_IN_TEXT_ERROR.format( token=PROMPT_EMBEDS_PLACEHOLDER_TOKEN - ) + ), + parameter="messages", )