summaryrefslogtreecommitdiff
path: root/llama.cpp
diff options
context:
space:
mode:
authorTristan Druyen <tristan@vault81.mozmail.com>2024-05-23 16:15:15 +0200
committerGitHub <noreply@github.com>2024-05-23 16:15:15 +0200
commit007489e895bad02e4e54758bf0bdf2d6a4cdb7c1 (patch)
treef400e674d191ef7a9dac8f01b44f9a7542a62e23 /llama.cpp
parent8b94e799dfa482adf63419df4905dc79b37e179f (diff)
Fix phi3 chat template confusion with zephyr (#7449)
* Fix phi3 template matching vs zephyr * Add regression test for new phi3 chat template * Implement review suggestions * Fix phi3 jinja test templates & match by <|end|> * Apply suggestion Co-authored-by: Xuan Son Nguyen <thichthat@gmail.com> * Add all phi3 template variants in tests * Remove unneeded message trimming Co-authored-by: Xuan Son Nguyen <thichthat@gmail.com> * Fix tests to not expect trimmed messages --------- Co-authored-by: Xuan Son Nguyen <thichthat@gmail.com>
Diffstat (limited to 'llama.cpp')
-rw-r--r--llama.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/llama.cpp b/llama.cpp
index e540c1b3..15c66077 100644
--- a/llama.cpp
+++ b/llama.cpp
@@ -17852,6 +17852,15 @@ static int32_t llama_chat_apply_template_internal(
}
}
// llama2 templates seem to not care about "add_generation_prompt"
+ } else if (tmpl == "phi3" || (tmpl.find("<|assistant|>") != std::string::npos && tmpl.find("<|end|>") != std::string::npos)) {
+ // Phi 3
+ for (auto message : chat) {
+ std::string role(message->role);
+ ss << "<|" << role << "|>\n" << message->content << "<|end|>\n";
+ }
+ if (add_ass) {
+ ss << "<|assistant|>\n";
+ }
} else if (tmpl == "zephyr" || tmpl.find("<|user|>") != std::string::npos) {
// zephyr template
for (auto message : chat) {
@@ -17984,15 +17993,6 @@ static int32_t llama_chat_apply_template_internal(
if (add_ass) {
ss << "<|start_header_id|>assistant<|end_header_id|>\n\n";
}
- } else if (tmpl == "phi3" || (tmpl.find("<|assistant|>") != std::string::npos && tmpl.find("<|end|>") != std::string::npos )) {
- // Phi 3
- for (auto message : chat) {
- std::string role(message->role);
- ss << "<|" << role << "|>\n" << trim(message->content) << "<|end|>\n";
- }
- if (add_ass) {
- ss << "<|assistant|>\n";
- }
} else {
// template not supported
return -1;