@@ -35,6 +35,7 @@ static const std::map<std::string, llm_chat_template> LLM_CHAT_TEMPLATES = {
35
35
{ " mistral-v3" , LLM_CHAT_TEMPLATE_MISTRAL_V3 },
36
36
{ " mistral-v3-tekken" , LLM_CHAT_TEMPLATE_MISTRAL_V3_TEKKEN },
37
37
{ " mistral-v7" , LLM_CHAT_TEMPLATE_MISTRAL_V7 },
38
+ { " mistral-v7-tekken" , LLM_CHAT_TEMPLATE_MISTRAL_V7_TEKKEN },
38
39
{ " phi3" , LLM_CHAT_TEMPLATE_PHI_3 },
39
40
{ " phi4" , LLM_CHAT_TEMPLATE_PHI_4 },
40
41
{ " falcon3" , LLM_CHAT_TEMPLATE_FALCON_3 },
@@ -202,19 +203,20 @@ int32_t llm_chat_apply_template(
202
203
if (add_ass) {
203
204
ss << " <|im_start|>assistant\n " ;
204
205
}
205
- } else if (tmpl == LLM_CHAT_TEMPLATE_MISTRAL_V7) {
206
+ } else if (tmpl == LLM_CHAT_TEMPLATE_MISTRAL_V7 || tmpl == LLM_CHAT_TEMPLATE_MISTRAL_V7_TEKKEN ) {
206
207
// Official mistral 'v7' template
207
208
// See: https://huggingface.co/mistralai/Mistral-Large-Instruct-2411#basic-instruct-template-v7
209
+ // https://huggingface.co/mistralai/Mistral-Small-3.1-24B-Instruct-2503#basic-instruct-template-v7-tekken
210
+ const char * trailing_space = tmpl == LLM_CHAT_TEMPLATE_MISTRAL_V7 ? " " : " " ;
208
211
for (auto message : chat) {
209
212
std::string role (message->role );
210
213
std::string content (message->content );
211
214
if (role == " system" ) {
212
- ss << " [SYSTEM_PROMPT] " << content << " [/SYSTEM_PROMPT]" ;
215
+ ss << " [SYSTEM_PROMPT]" << trailing_space << content << " [/SYSTEM_PROMPT]" ;
213
216
} else if (role == " user" ) {
214
- ss << " [INST] " << content << " [/INST]" ;
215
- }
216
- else {
217
- ss << " " << content << " </s>" ;
217
+ ss << " [INST]" << trailing_space << content << " [/INST]" ;
218
+ } else {
219
+ ss << trailing_space << content << " </s>" ;
218
220
}
219
221
}
220
222
} else if (tmpl == LLM_CHAT_TEMPLATE_MISTRAL_V1
@@ -447,8 +449,16 @@ int32_t llm_chat_apply_template(
447
449
if (add_ass) {
448
450
ss << " <|assistant|>" ;
449
451
}
450
- } else if (tmpl == LLM_CHAT_TEMPLATE_CHATGLM_4 || tmpl == LLM_CHAT_TEMPLATE_GLMEDGE ) {
452
+ } else if (tmpl == LLM_CHAT_TEMPLATE_CHATGLM_4) {
451
453
ss << " [gMASK]" << " <sop>" ;
454
+ for (auto message : chat) {
455
+ std::string role (message->role );
456
+ ss << " <|" << role << " |>" << " \n " << message->content ;
457
+ }
458
+ if (add_ass) {
459
+ ss << " <|assistant|>\n " ;
460
+ }
461
+ } else if (tmpl == LLM_CHAT_TEMPLATE_GLMEDGE) {
452
462
for (auto message : chat) {
453
463
std::string role (message->role );
454
464
ss << " <|" << role << " |>" << " \n " << message->content ;
0 commit comments