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 ( ...@@ -17,6 +17,7 @@ from mistral_common.tokens.tokenizers.sentencepiece import (
SentencePieceTokenizer, SentencePieceTokenizer,
) )
from mistral_common.tokens.tokenizers.tekken import Tekkenizer from mistral_common.tokens.tokenizers.tekken import Tekkenizer
from pydantic import ValidationError
from vllm.entrypoints.chat_utils import ChatCompletionMessageParam from vllm.entrypoints.chat_utils import ChatCompletionMessageParam
from vllm.entrypoints.openai.chat_completion.protocol import ChatCompletionRequest from vllm.entrypoints.openai.chat_completion.protocol import ChatCompletionRequest
...@@ -64,14 +65,16 @@ def maybe_serialize_tool_calls(request: "MistralChatCompletionRequest"): ...@@ -64,14 +65,16 @@ def maybe_serialize_tool_calls(request: "MistralChatCompletionRequest"):
# TODO: remove when pydantic v2.11 is released # TODO: remove when pydantic v2.11 is released
for i, message in enumerate(request.messages): for i, message in enumerate(request.messages):
if message.get("role") == "assistant": if message.get("role") == "assistant":
tool_calls_validator = message.get("tool_calls", ().__iter__()) if (tool_calls_validator := message.get("tool_calls", None)) is not None:
validated_tool_calls = []
while True:
try: try:
tool_call = next(tool_calls_validator) # type: ignore validated_tool_calls = list(tool_calls_validator)
validated_tool_calls.append(tool_call) except ValidationError as e:
except StopIteration: raise ValueError(
break "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 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