Skip to content

Commit 60ca798

Browse files
authored
Add explicit validation error for tool calls. (#34438)
Signed-off-by: juliendenize <julien.denize@mistral.ai>
1 parent 0ef5b91 commit 60ca798

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

vllm/tokenizers/mistral.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
SentencePieceTokenizer,
1818
)
1919
from mistral_common.tokens.tokenizers.tekken import Tekkenizer
20+
from pydantic import ValidationError
2021

2122
from vllm.entrypoints.chat_utils import ChatCompletionMessageParam
2223
from vllm.entrypoints.openai.chat_completion.protocol import ChatCompletionRequest
@@ -64,14 +65,16 @@ def maybe_serialize_tool_calls(request: "MistralChatCompletionRequest"):
6465
# TODO: remove when pydantic v2.11 is released
6566
for i, message in enumerate(request.messages):
6667
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:
7069
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 = []
7578

7679
request.messages[i]["tool_calls"] = validated_tool_calls
7780

0 commit comments

Comments
 (0)