Views
No views yet
mistral_common1from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
2from mistral_common.protocol.instruct.messages import UserMessage
3from mistral_common.protocol.instruct.request import ChatCompletionRequest
4
5mistral_models_path = "MISTRAL_MODELS_PATH"
6
7tokenizer = MistralTokenizer.v3()
8
9completion_request = ChatCompletionRequest(messages=[UserMessage(content="Explain Machine Learning to me in a nutshell.")])
10
11tokens = tokenizer.encode_chat_completion(completion_request).tokensmistral_inference1from mistral_inference.transformer import Transformer
2from mistral_inference.generate import generate
3
4model = Transformer.from_folder(mistral_models_path)
5out_tokens, _ = generate([tokens], model, max_tokens=64, temperature=0.0, eos_id=tokenizer.instruct_tokenizer.tokenizer.eos_id)
6
7result = tokenizer.decode(out_tokens[0])
8
9print(result)transformers1from transformers import AutoTokenizer
2
3tokenizer = AutoTokenizer.from_pretrained("mistralai/Mixtral-8x22B-Instruct-v0.1")
4
5chat = [{"role": "user", "content": "Explain Machine Learning to me in a nutshell."}]
6
7tokens = tokenizer.apply_chat_template(chat, return_dict=True, return_tensors="pt", add_generation_prompt=True)transformers1from transformers import AutoModelForCausalLM
2import torch
3
4# You can also use 8-bit or 4-bit quantization here
5model = AutoModelForCausalLM.from_pretrained("mistralai/Mixtral-8x22B-Instruct-v0.1", torch_dtype=torch.bfloat16, device_map="auto")
6model.to("cuda")
7
8generated_ids = model.generate(**tokens, max_new_tokens=1000, do_sample=True)
9
10# decode with HF tokenizer
11result = tokenizer.decode(generated_ids[0])
12print(result)[!TIP] PRs to correct thetransformerstokenizer so that it gives 1-to-1 the same results as themistral_commonreference implementation are very welcome!
1from transformers import AutoModelForCausalLM
2from mistral_common.protocol.instruct.messages import (
3 AssistantMessage,
4 UserMessage,
5)
6from mistral_common.protocol.instruct.tool_calls import (
7 Tool,
8 Function,
9)
10from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
11from mistral_common.tokens.instruct.normalize import ChatCompletionRequest
12
13device = "cuda" # the device to load the model onto
14
15tokenizer_v3 = MistralTokenizer.v3()
16
17mistral_query = ChatCompletionRequest(
18 tools=[
19 Tool(
20 function=Function(
21 name="get_current_weather",
22 description="Get the current weather",
23 parameters={
24 "type": "object",
25 "properties": {
26 "location": {
27 "type": "string",
28 "description": "The city and state, e.g. San Francisco, CA",
29 },
30 "format": {
31 "type": "string",
32 "enum": ["celsius", "fahrenheit"],
33 "description": "The temperature unit to use. Infer this from the users location.",
34 },
35 },
36 "required": ["location", "format"],
37 },
38 )
39 )
40 ],
41 messages=[
42 UserMessage(content="What's the weather like today in Paris"),
43 ],
44 model="test",
45)
46
47encodeds = tokenizer_v3.encode_chat_completion(mistral_query).tokens
48model = AutoModelForCausalLM.from_pretrained("mistralai/Mixtral-8x22B-Instruct-v0.1")
49model_inputs = encodeds.to(device)
50model.to(device)
51
52generated_ids = model.generate(model_inputs, max_new_tokens=1000, do_sample=True)
53sp_tokenizer = tokenizer_v3.instruct_tokenizer.tokenizer
54decoded = sp_tokenizer.decode(generated_ids[0])
55print(decoded)transformerstransformers version 4.42.0 or higher. Please see the
function calling guide
in the transformers docs for more information.1from transformers import AutoModelForCausalLM, AutoTokenizer
2import torch
3
4model_id = "mistralai/Mixtral-8x22B-Instruct-v0.1"
5tokenizer = AutoTokenizer.from_pretrained(model_id)
6
7def get_current_weather(location: str, format: str):
8 """
9 Get the current weather
10
11 Args:
12 location: The city and state, e.g. San Francisco, CA
13 format: The temperature unit to use. Infer this from the users location. (choices: ["celsius", "fahrenheit"])
14 """
15 pass
16
17conversation = [{"role": "user", "content": "What's the weather like in Paris?"}]
18tools = [get_current_weather]
19
20# format and tokenize the tool use prompt
21inputs = tokenizer.apply_chat_template(
22 conversation,
23 tools=tools,
24 add_generation_prompt=True,
25 return_dict=True,
26 return_tensors="pt",
27)
28
29model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16, device_map="auto")
30
31inputs.to(model.device)
32outputs = model.generate(**inputs, max_new_tokens=1000)
33print(tokenizer.decode(outputs[0], skip_special_tokens=True))pip install mistral-common1from mistral_common.protocol.instruct.messages import (
2 AssistantMessage,
3 UserMessage,
4)
5from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
6from mistral_common.tokens.instruct.normalize import ChatCompletionRequest
7
8from transformers import AutoTokenizer
9
10tokenizer_v3 = MistralTokenizer.v3()
11
12mistral_query = ChatCompletionRequest(
13 messages=[
14 UserMessage(content="How many experts ?"),
15 AssistantMessage(content="8"),
16 UserMessage(content="How big ?"),
17 AssistantMessage(content="22B"),
18 UserMessage(content="Noice 🎉 !"),
19 ],
20 model="test",
21)
22hf_messages = mistral_query.model_dump()['messages']
23
24tokenized_mistral = tokenizer_v3.encode_chat_completion(mistral_query).tokens
25
26tokenizer_hf = AutoTokenizer.from_pretrained('mistralai/Mixtral-8x22B-Instruct-v0.1')
27tokenized_hf = tokenizer_hf.apply_chat_template(hf_messages, tokenize=True)
28
29assert tokenized_hf == tokenized_mistral