Unverified Commit 60ca7981 authored by Julien Denize's avatar Julien Denize Committed by GitHub
Browse files

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


Signed-off-by: default avatarjuliendenize <julien.denize@mistral.ai>
parent 0ef5b914
......@@ -17,6 +17,7 @@ from mistral_common.tokens.tokenizers.sentencepiece import (
SentencePieceTokenizer,
)
from mistral_common.tokens.tokenizers.tekken import Tekkenizer
from pydantic import ValidationError
from vllm.entrypoints.chat_utils import ChatCompletionMessageParam
from vllm.entrypoints.openai.chat_completion.protocol import ChatCompletionRequest
......@@ -64,14 +65,16 @@ def maybe_serialize_tool_calls(request: "MistralChatCompletionRequest"):
# TODO: remove when pydantic v2.11 is released
for i, message in enumerate(request.messages):
if message.get("role") == "assistant":
tool_calls_validator = message.get("tool_calls", ().__iter__())
validated_tool_calls = []
while True:
if (tool_calls_validator := message.get("tool_calls", None)) is not None:
try:
tool_call = next(tool_calls_validator) # type: ignore
validated_tool_calls.append(tool_call)
except StopIteration:
break
validated_tool_calls = list(tool_calls_validator)
except ValidationError as e:
raise ValueError(
"Validating messages' `tool_calls` raised an error. "
"Please ensure `tool_calls` are iterable of tool calls."
) from e
else:
validated_tool_calls = []
request.messages[i]["tool_calls"] = validated_tool_calls
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment