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