From: matteo Date: Sun, 27 Apr 2025 19:57:32 +0000 (+0200) Subject: llama-chat : fix wrong template in GLM4-0414 (#13140) X-Git-Tag: upstream/0.0.5318~119 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=ced44be34290fab450f8344efa047d8a08e723b4;p=pkg%2Fggml%2Fsources%2Fllama.cpp llama-chat : fix wrong template in GLM4-0414 (#13140) * fix wrong template in GLM4-0414 * fix spaces * no bos token since it is already in the template * moved the chatgml4 check to higher priority * restored template for old GLM models * moved the GLM4 template check in the correct place with correct check --- diff --git a/convert_hf_to_gguf.py b/convert_hf_to_gguf.py index ea3a951b..d4fec408 100755 --- a/convert_hf_to_gguf.py +++ b/convert_hf_to_gguf.py @@ -5154,7 +5154,7 @@ class Glm4Model(TextModel): special_vocab._set_special_token("eos", tokenizer.get_added_vocab()["<|endoftext|>"]) special_vocab._set_special_token("eot", tokenizer.get_added_vocab()["<|user|>"]) special_vocab._set_special_token("unk", tokenizer.get_added_vocab()["<|endoftext|>"]) - special_vocab._set_special_token("bos", tokenizer.get_added_vocab()["[gMASK]"]) + special_vocab._set_special_token("bos", tokenizer.get_added_vocab()["<|endoftext|>"]) special_vocab.add_to_gguf(self.gguf_writer) def set_gguf_parameters(self): diff --git a/src/llama-chat.cpp b/src/llama-chat.cpp index 41f89e3a..698c30ce 100644 --- a/src/llama-chat.cpp +++ b/src/llama-chat.cpp @@ -122,6 +122,8 @@ llm_chat_template llm_chat_detect_template(const std::string & tmpl) { } } else if (tmpl_contains("<|assistant|>") && tmpl_contains("<|end|>")) { return LLM_CHAT_TEMPLATE_PHI_3; + } else if (tmpl_contains("[gMASK]")) { + return LLM_CHAT_TEMPLATE_CHATGML_4; } else if (tmpl_contains("<|assistant|>") && tmpl_contains("<|user|>")) { return tmpl_contains("") ? LLM_CHAT_TEMPLATE_FALCON_3 : LLM_CHAT_TEMPLATE_GLMEDGE; } else if (tmpl_contains("<|{{ item['role'] }}|>") && tmpl_contains("<|begin_of_image|>")) { @@ -155,8 +157,6 @@ llm_chat_template llm_chat_detect_template(const std::string & tmpl) { } else if (tmpl_contains("[gMASK]sop")) { // chatglm3-6b return LLM_CHAT_TEMPLATE_CHATGML_3; - } else if (tmpl_contains("[gMASK]")) { - return LLM_CHAT_TEMPLATE_CHATGML_4; } else if (tmpl_contains(LU8("<用户>"))) { // MiniCPM-3B-OpenHermes-2.5-v2-GGUF return LLM_CHAT_TEMPLATE_MINICPM;