Skip to content

mistral_common.protocol.instruct.validator

MistralRequestValidator(mode=ValidationMode.test)

Bases: Generic[UserMessageType, AssistantMessageType, ToolMessageType, SystemMessageType]

Validator for Mistral requests.

This class validates the structure and content of Mistral requests.

Examples:

>>> from mistral_common.protocol.instruct.messages import UserMessage, AssistantMessage
>>> validator = MistralRequestValidator()
>>> messages = [UserMessage(content="Hello how are you ?")]
>>> validator.validate_messages(messages, False)

Parameters:

Name Type Description Default
mode ValidationMode

The validation mode. Defaults to ValidationMode.test.

test
Source code in src/mistral_common/protocol/instruct/validator.py
def __init__(self, mode: ValidationMode = ValidationMode.test):
    r"""Initializes the `MistralRequestValidator`.

    Args:
        mode: The validation mode. Defaults to ValidationMode.test.
    """
    self._mode = mode

validate_messages(messages, continue_final_message)

Validates the list of messages.

Parameters:

Name Type Description Default
messages list[UATS]

The list of messages to validate.

required
continue_final_message bool

Whether to continue the final message.

required

Examples:

>>> from mistral_common.protocol.instruct.messages import UserMessage, AssistantMessage
>>> validator = MistralRequestValidator()
>>> messages = [AssistantMessage(content="Hi"), UserMessage(content="Hello")]
>>> validator.validate_messages(messages, False)
Source code in src/mistral_common/protocol/instruct/validator.py
def validate_messages(self, messages: list[UATS], continue_final_message: bool) -> None:
    r"""Validates the list of messages.

    Args:
        messages: The list of messages to validate.
        continue_final_message: Whether to continue the final message.

    Examples:
        >>> from mistral_common.protocol.instruct.messages import UserMessage, AssistantMessage
        >>> validator = MistralRequestValidator()
        >>> messages = [AssistantMessage(content="Hi"), UserMessage(content="Hello")]
        >>> validator.validate_messages(messages, False)
    """
    self._validate_message_list_structure(messages, continue_final_message=continue_final_message)
    self._validate_message_list_content(messages)

validate_request(request)

Validates the request

Parameters:

Name Type Description Default
request ChatCompletionRequest

The request to validate.

required

Returns:

Type Description
ChatCompletionRequest[UATS]

The validated request.

Examples:

>>> from mistral_common.protocol.instruct.messages import UserMessage
>>> validator = MistralRequestValidator()
>>> request = ChatCompletionRequest(messages=[UserMessage(content="Hello")])
>>> validated_request = validator.validate_request(request)
Source code in src/mistral_common/protocol/instruct/validator.py
def validate_request(self, request: ChatCompletionRequest) -> ChatCompletionRequest[UATS]:
    r"""Validates the request

    Args:
        request: The request to validate.

    Returns:
        The validated request.

    Examples:
        >>> from mistral_common.protocol.instruct.messages import UserMessage
        >>> validator = MistralRequestValidator()
        >>> request = ChatCompletionRequest(messages=[UserMessage(content="Hello")])
        >>> validated_request = validator.validate_request(request)
    """

    if self._mode == ValidationMode.serving:
        if request.model is None:
            raise InvalidRequestException("Model name parameter is required for serving mode")

    # Validate the messages
    self.validate_messages(request.messages, continue_final_message=request.continue_final_message)

    # Validate the tools
    self._validate_tools(request.tools or [])

    return request

MistralRequestValidatorV13(mode=ValidationMode.test)

Bases: MistralRequestValidatorV5

Validator for v13 Mistral requests.

This validator extends v5 functionality by: - Adding stricter tool call ID validation: they should be distinct and called. - Allowing system prompts with audio chunks

Source code in src/mistral_common/protocol/instruct/validator.py
def __init__(self, mode: ValidationMode = ValidationMode.test):
    r"""Initializes the `MistralRequestValidator`.

    Args:
        mode: The validation mode. Defaults to ValidationMode.test.
    """
    self._mode = mode

MistralRequestValidatorV3(mode=ValidationMode.test)

Bases: MistralRequestValidator

Validator for v3 Mistral requests.

This validator adds additional validation for tool call IDs.

Examples:

>>> validator = MistralRequestValidatorV3()
Source code in src/mistral_common/protocol/instruct/validator.py
def __init__(self, mode: ValidationMode = ValidationMode.test):
    r"""Initializes the `MistralRequestValidator`.

    Args:
        mode: The validation mode. Defaults to ValidationMode.test.
    """
    self._mode = mode

MistralRequestValidatorV5(mode=ValidationMode.test)

Bases: MistralRequestValidatorV3

Validator for v5 Mistral requests.

This validator allows for both tool calls and content in the assistant message.

Note

For requests containing audio, this validator ensures that no system prompt is present.

Examples:

>>> validator = MistralRequestValidatorV5()
Source code in src/mistral_common/protocol/instruct/validator.py
def __init__(self, mode: ValidationMode = ValidationMode.test):
    r"""Initializes the `MistralRequestValidator`.

    Args:
        mode: The validation mode. Defaults to ValidationMode.test.
    """
    self._mode = mode

ValidationMode

Bases: str, Enum

Enum for the validation mode.

Attributes:

Name Type Description
serving

The serving mode.

finetuning

The finetuning mode.

test

The test mode.

Examples:

>>> mode = ValidationMode.serving