mistral_common.tokens.tokenizers.instruct
InstructTokenizerBase(tokenizer, image_encoder=None, audio_encoder=None)
Bases: InstructTokenizer, Generic[InstructRequestType, FIMRequestType, TokenizedType]
Base instruct tokenizer implementing version-independent encoding.
Concrete versioned tokenizers (V1, V2, ...) inherit from this class and implement the version-specific message encodings.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tokenizer
|
Tokenizer
|
The text tokenizer to use. |
required |
image_encoder
|
ImageEncoder | None
|
The image encoder to use, or |
None
|
audio_encoder
|
AudioEncoder | None
|
The audio encoder to use, or |
None
|
Source code in src/mistral_common/tokens/tokenizers/instruct.py
mm_encoder
property
Deprecated alias for image_encoder.
Returns:
| Type | Description |
|---|---|
ImageEncoder | None
|
The image encoder, or |
decode(tokens, special_token_policy=SpecialTokenPolicy.IGNORE)
Decode tokens to a string.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tokens
|
list[int]
|
The token IDs to decode. |
required |
special_token_policy
|
SpecialTokenPolicy
|
The policy to use for special tokens (IGNORE, KEEP, or RAISE). |
IGNORE
|
Returns:
| Type | Description |
|---|---|
str
|
The decoded string. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_assistant_message(message, is_before_last_user_message)
abstractmethod
Encode an assistant message.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
message
|
AssistantMessage
|
The assistant message to encode. |
required |
is_before_last_user_message
|
bool
|
|
required |
Returns:
| Type | Description |
|---|---|
list[int]
|
The encoded token IDs for this message. |
Raises:
| Type | Description |
|---|---|
NotImplementedError
|
The assistant message is not implemented for the base tokenizer. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_instruct(request)
Encode an instruct request.
Walks the message list, encoding each message with its version-specific
encoder, and aggregates the resulting tokens, images, and audio into a
single Tokenized object. Applies truncation when
request.truncate_at_max_tokens is set.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
InstructRequest[ChatMessage, Tool]
|
The request to encode. |
required |
Returns:
| Type | Description |
|---|---|
Tokenized
|
The tokenized request, with all images and audio collected across |
Tokenized
|
the messages. |
Raises:
| Type | Description |
|---|---|
TokenizerException
|
If a message has an unknown type. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 | |
encode_think(chunk)
abstractmethod
Encode a think chunk.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
chunk
|
ThinkChunk
|
The think chunk to encode. |
required |
Returns:
| Type | Description |
|---|---|
list[int]
|
The encoded token IDs for this chunk. |
Raises:
| Type | Description |
|---|---|
NotImplementedError
|
The think chunk is not implemented for the base tokenizer. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_tool_message(message, is_before_last_user_message)
abstractmethod
Encode a tool message.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
message
|
ToolMessage
|
The tool message to encode. |
required |
is_before_last_user_message
|
bool
|
|
required |
Returns:
| Type | Description |
|---|---|
A tuple of (tokens, images, audios
|
the encoded token IDs, images, |
list[ndarray]
|
and audio for this message. |
Raises:
| Type | Description |
|---|---|
NotImplementedError
|
The tool message is not implemented for the base tokenizer. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
find_first_last_user(request)
staticmethod
Find the first and last user message in the request.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
InstructRequest
|
The request to search for user messages. |
required |
Returns:
| Type | Description |
|---|---|
int
|
A tuple of ( |
int
|
the first and last UserMessage. Both are -1 if the request has no |
tuple[int, int]
|
user messages. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
start()
validate_messages(messages)
classmethod
Validate messages before tokenization.
No-op for this tokenizer version; message validation starts at v7.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
messages
|
list[UATS]
|
The messages that were validated. |
required |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
InstructTokenizerV1(tokenizer, image_encoder=None, audio_encoder=None)
Bases: InstructTokenizerBase, Generic[InstructRequestType, FIMRequestType, TokenizedType]
Instruct tokenizer V1.
Basic message encoding wrapping content in [INST]/[/INST] markers. Does not support tools, images, audio, FIM, or system messages as separate messages (the system prompt is merged into the first user message).
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_assistant_message(message, is_before_last_user_message)
Encode an assistant message.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
message
|
AssistantMessage
|
The message to encode. |
required |
is_before_last_user_message
|
bool
|
Not used. |
required |
Returns: The encoded tokens.
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_fim(request)
Encode a FIM request.
Raises:
| Type | Description |
|---|---|
TokenizerException
|
The FIM request is not implemented for this version. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_speech_request(request)
Encode a speech synthesis request.
Raises:
| Type | Description |
|---|---|
TokenizerException
|
Always; speech requests are not supported by this version. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_system_message(message)
Encode a system message.
Raises:
| Type | Description |
|---|---|
NotImplementedError
|
Always; system messages are not supported by this version. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_think(chunk)
Encode a think chunk.
Raises:
| Type | Description |
|---|---|
TokenizerException
|
The think chunk is not implemented for this version. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_tool_message(message, is_before_last_user_message)
Encode a tool message.
Raises:
| Type | Description |
|---|---|
TokenizerException
|
The tool message is not implemented for this version. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_transcription(request)
Encode a transcription request.
Raises:
| Type | Description |
|---|---|
TokenizerException
|
Always; transcription is not supported by this version. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_user_content(content, is_last, system_prompt=None, force_img_first=False)
Encode a user content.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
content
|
str | list[ContentChunk]
|
The content to encode. |
required |
is_last
|
bool
|
Whether the message is the last one. |
required |
system_prompt
|
str | None
|
The system prompt. |
None
|
force_img_first
|
bool
|
Not used. |
False
|
Returns:
| Type | Description |
|---|---|
tuple[list[int], list[ndarray], list[Audio]]
|
The encoded tokens and empty list. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_user_message(message, available_tools, is_last, is_first, system_prompt=None, force_img_first=False, settings=ModelSettings.none())
Encode a user message.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
message
|
UserMessage
|
The message to encode. |
required |
available_tools
|
list[Tool] | None
|
Not used. |
required |
is_last
|
bool
|
Not used. |
required |
is_first
|
bool
|
Whether the message is the first one. |
required |
system_prompt
|
str | None
|
The system prompt. |
None
|
force_img_first
|
bool
|
Not used. |
False
|
settings
|
ModelSettings
|
Not used. |
none()
|
Returns:
| Type | Description |
|---|---|
tuple[list[int], list[ndarray], list[Audio]]
|
The encoded tokens and empty list. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
InstructTokenizerV11(tokenizer, image_encoder=None, audio_encoder=None)
Bases: InstructTokenizerV7
Instruct tokenizer V11.
The difference with V7 tokenizer is that it encodes tool calls differently:
Tool call results are encoded as :
- [begin tool call] call_name_tokens [call id] call_id_tokens [args] content tokens
Source code in src/mistral_common/tokens/tokenizers/instruct.py
InstructTokenizerV13(tokenizer, image_encoder=None, audio_encoder=None)
Bases: InstructTokenizerV11
Instruct tokenizer V13.
The difference with V11 tokenizer is that it encodes tool calls differently
- available tools are tokenized at the first user message.
- call id is no longer tokenized for tool calls or results.
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_think(chunk)
Encode a thinking chunk.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
chunk
|
ThinkChunk
|
The thinking chunk to encode. |
required |
Returns: The encoded tokens.
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_tool_message(message, is_before_last_user_message)
Encode a tool message.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
message
|
ToolMessage
|
The message to encode. |
required |
is_before_last_user_message
|
bool
|
Not used. |
required |
Returns: The encoded tokens, images, and audios.
Source code in src/mistral_common/tokens/tokenizers/instruct.py
validate_messages(messages)
classmethod
Validate messages before tokenization.
No-op: unlike v7, this version allows system prompts and audio chunks to coexist.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
messages
|
list[UATS]
|
The messages that were validated. |
required |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
InstructTokenizerV15(tokenizer, image_encoder=None, audio_encoder=None)
Bases: InstructTokenizerV13
Instruct tokenizer V15.
Extends V13 with model settings encoding. Inherits V13's tool call behavior (no call ID in tool calls/results, first-position tools, think support).
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_system_message(message)
Encode a system message, rejecting ThinkChunk content.
Source code in src/mistral_common/tokens/tokenizers/instruct.py
InstructTokenizerV2(tokenizer, image_encoder=None, audio_encoder=None)
Bases: InstructTokenizerV1, Generic[InstructRequestType, FIMRequestType, TokenizedType]
Instruct tokenizer V2.
Adds support for images, tools, and FIM requests on top of V1. Tool definitions are encoded in the last user message.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tokenizer
|
Tokenizer
|
The tokenizer to use. |
required |
image_encoder
|
ImageEncoder | None
|
The image encoder to use. |
None
|
audio_encoder
|
AudioEncoder | None
|
The audio encoder to use. |
None
|
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_assistant_message(message, is_before_last_user_message)
Encode an assistant message.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
message
|
AssistantMessage
|
The message to encode. |
required |
is_before_last_user_message
|
bool
|
Whether the message is before the last user message. If has tools and true, the message is not encoded. |
required |
Returns: The encoded tokens.
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_fim(request)
Encode a FIM request.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
FIMRequest
|
The request to encode. |
required |
Returns:
| Type | Description |
|---|---|
Tokenized
|
The encoded tokens. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_instruct(request)
Encode a request after validating tool-result limitations.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
InstructRequest[ChatMessage, Tool]
|
The instruct request to encode. |
required |
Returns:
| Type | Description |
|---|---|
Tokenized
|
The tokenized request. |
Raises:
| Type | Description |
|---|---|
UnsupportedTokenizerFeatureException
|
If an assistant turn has multiple tool results. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_tool_message(message, is_before_last_user_message)
Encode a tool message.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
message
|
ToolMessage
|
The message to encode. |
required |
is_before_last_user_message
|
bool
|
Whether the message is before the last user message. If true, the message is not encoded. |
required |
Returns:
| Type | Description |
|---|---|
tuple[list[int], list[ndarray], list[Audio]]
|
The encoded tokens, images, and audios. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_user_message(message, available_tools, is_last, is_first, system_prompt=None, force_img_first=False, settings=ModelSettings.none())
Encode a user message.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
message
|
UserMessage
|
The message to encode. |
required |
available_tools
|
list[Tool] | None
|
The list of available tools if any. |
required |
is_last
|
bool
|
Whether the message is the last one. |
required |
is_first
|
bool
|
Not used. |
required |
system_prompt
|
str | None
|
The system prompt. |
None
|
force_img_first
|
bool
|
Whether to force the image to be first. |
False
|
settings
|
ModelSettings
|
Not used. |
none()
|
Returns:
| Type | Description |
|---|---|
tuple[list[int], list[ndarray], list[Audio]]
|
The encoded tokens and the list of images. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
InstructTokenizerV3(tokenizer, image_encoder=None, audio_encoder=None)
Bases: InstructTokenizerV2, Generic[InstructRequestType, FIMRequestType, TokenizedType]
Instruct tokenizer V3.
The only difference with V2 tokenizer is that it encodes the tool messages differently.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tokenizer
|
Tokenizer
|
The tokenizer to use. |
required |
image_encoder
|
ImageEncoder | None
|
The image encoder to use. |
None
|
audio_encoder
|
AudioEncoder | None
|
The audio encoder to use. |
None
|
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_assistant_message(message, is_before_last_user_message)
Encode an assistant message.
Note
Same as V2 but always encode the tool history.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
message
|
AssistantMessage
|
The message to encode. |
required |
is_before_last_user_message
|
bool
|
Not used. |
required |
Returns:
| Type | Description |
|---|---|
list[int]
|
The encoded tokens. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_tool_message(message, is_before_last_user_message)
Encode a tool message.
Note
Same as V2 but tools are not wrapped in a list and the history is also tokenized.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
message
|
ToolMessage
|
The message to encode. |
required |
is_before_last_user_message
|
bool
|
Whether the message is before the last user message. If true, the message is not encoded. |
required |
Returns:
| Type | Description |
|---|---|
tuple[list[int], list[ndarray], list[Audio]]
|
The encoded tokens, images, and audios. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_user_content(content, is_last, system_prompt=None, force_img_first=False)
Encode a user content.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
content
|
str | list[ContentChunk]
|
The content to encode. |
required |
is_last
|
bool
|
Whether the message is the last one. |
required |
system_prompt
|
str | None
|
The system prompt. |
None
|
force_img_first
|
bool
|
Whether to force the image to be first. |
False
|
Returns:
| Type | Description |
|---|---|
tuple[list[int], list[ndarray], list[Audio]]
|
The encoded tokens and the images. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
InstructTokenizerV7(tokenizer, image_encoder=None, audio_encoder=None)
Bases: InstructTokenizerV3
Instruct tokenizer V7.
The difference with V3 tokenizer is that it encodes the system prompts differently: - in V7 the system prompts are treated as separate SystemMessages - they are no longer prepended to the last user message - they are printed between special tokens
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tokenizer
|
Tokenizer
|
The tokenizer to use. |
required |
image_encoder
|
ImageEncoder | None
|
The image encoder to use. |
None
|
audio_encoder
|
AudioEncoder | None
|
The audio encoder to use. |
None
|
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_assistant_message(message, is_before_last_user_message)
Encode an assistant message.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
message
|
AssistantMessage
|
The message to encode. |
required |
is_before_last_user_message
|
bool
|
Not used. |
required |
Returns: The encoded tokens.
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_speech_request(request)
Encode a speech synthesis request into a tokenized sequence.
Produces: [BOS] + audio_tokens + [TEXT_TO_AUDIO] + text_tokens + [AUDIO_TO_TEXT] + [BEGIN_AUDIO].
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
SpeechRequest
|
The speech request containing input text and voice/audio data. |
required |
Returns:
| Type | Description |
|---|---|
Tokenized
|
Tokenized object with the full token sequence and optional audio data. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_system_message(message)
Encode a system message.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
message
|
SystemMessage
|
The message to encode. |
required |
Returns:
| Type | Description |
|---|---|
tuple[list[int], list[Audio]]
|
The encoded tokens and audios. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_tool_message(message, is_before_last_user_message)
Encode a tool message.
Note
Same as V3 but tools are not wrapped in a list and history is also tokenized
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
message
|
ToolMessage
|
The message to encode. |
required |
is_before_last_user_message
|
bool
|
Not used. |
required |
Returns:
| Type | Description |
|---|---|
tuple[list[int], list[ndarray], list[Audio]]
|
The encoded tokens, images, and audios. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_transcription(request)
Encodes an audio transcription request into a tokenized format.
This method processes a transcription request containing audio data, encodes the user message, and returns the tokenized output.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
TranscriptionRequest
|
The transcription request object containing the audio data to be encoded. |
required |
Returns:
| Type | Description |
|---|---|
Tokenized
|
The tokenized representation of the audio data, including processed audio and tokens |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_user_content(content, is_last, system_prompt=None, force_img_first=False)
Encode a user content.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
content
|
str | list[ContentChunk]
|
The content to encode. |
required |
is_last
|
bool
|
Whether the message is the last one. |
required |
system_prompt
|
str | None
|
The system prompt. |
None
|
force_img_first
|
bool
|
Whether to force the image to be first. |
False
|
Returns:
| Type | Description |
|---|---|
tuple[list[int], list[ndarray], list[Audio]]
|
The encoded tokens and the images. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
encode_user_message(message, available_tools, is_last, is_first, system_prompt=None, force_img_first=False, settings=ModelSettings.none())
Encode a user message.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
message
|
UserMessage
|
The message to encode. |
required |
available_tools
|
list[Tool] | None
|
The list of available tools if any. |
required |
is_last
|
bool
|
Whether the message is the last one. |
required |
is_first
|
bool
|
Whether the message is the first one. |
required |
system_prompt
|
str | None
|
Not used. |
None
|
force_img_first
|
bool
|
Whether to force the image to be first. |
False
|
settings
|
ModelSettings
|
Not used. |
none()
|
Returns:
| Type | Description |
|---|---|
tuple[list[int], list[ndarray], list[Audio]]
|
The encoded tokens and the list of images. |
Source code in src/mistral_common/tokens/tokenizers/instruct.py
validate_messages(messages)
classmethod
Validate that system prompts and audio chunks are not used together in v7.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
messages
|
list[UATS]
|
The messages to validate. |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
If audio chunks are present alongside a system message. |