@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 60ca7981bc
Fork 0

A high-throughput and memory-efficient inference and serving engine for LLMs

Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git

Synced Nov 8, 07:30 UTC

Add explicit validation error for tool calls. (#34438)

Signed-off-by: juliendenize <julien.denize@mistral.ai>

Julien Denize committed Feb 14, 2026 at 05:04 UTC 60ca7981bce1bd6e2155df1a58bc9f916f7c4093
1 file changed +10 -7
vllm/tokenizers/mistral.py
+10 -7
@@ -17,6 +17,7 @@ from mistral_common.tokens.tokenizers.sentencepiece import (
17 SentencePieceTokenizer,
18 )
19 from mistral_common.tokens.tokenizers.tekken import Tekkenizer
20 +from pydantic import ValidationError
21
22 from vllm.entrypoints.chat_utils import ChatCompletionMessageParam
23 from vllm.entrypoints.openai.chat_completion.protocol import ChatCompletionRequest
@@ -64,14 +65,16 @@ def maybe_serialize_tool_calls(request: "MistralChatCompletionRequest"):
65 # TODO: remove when pydantic v2.11 is released
66 for i, message in enumerate(request.messages):
67 if message.get("role") == "assistant":
67 - tool_calls_validator = message.get("tool_calls", ().__iter__())
68 - validated_tool_calls = []
69 - while True:
68 + if (tool_calls_validator := message.get("tool_calls", None)) is not None:
69 try:
71 - tool_call = next(tool_calls_validator) # type: ignore
72 - validated_tool_calls.append(tool_call)
73 - except StopIteration:
74 - break
70 + validated_tool_calls = list(tool_calls_validator)
71 + except ValidationError as e:
72 + raise ValueError(
73 + "Validating messages' `tool_calls` raised an error. "
74 + "Please ensure `tool_calls` are iterable of tool calls."
75 + ) from e
76 + else:
77 + validated_tool_calls = []
78
79 request.messages[i]["tool_calls"] = validated_tool_calls
80