From 71c2c7fb8bcccac42e6a04771542c1b58046f2d6 Mon Sep 17 00:00:00 2001 From: Jhen-Jie Hong Date: Wed, 13 Nov 2024 10:31:58 +0800 Subject: [PATCH 1/2] server : fix validate_model_chat_template --- examples/server/server.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/examples/server/server.cpp b/examples/server/server.cpp index a6d3a1c9545cb..76a02bc1a9fb4 100644 --- a/examples/server/server.cpp +++ b/examples/server/server.cpp @@ -655,11 +655,15 @@ struct server_context { } bool validate_model_chat_template() const { - llama_chat_message chat[] = {{"user", "test"}}; - - const int res = llama_chat_apply_template(model, nullptr, chat, 1, true, nullptr, 0); - - return res > 0; + std::vector model_template(2048, 0); // longest known template is about 1200 bytes + std::string template_key = "tokenizer.chat_template"; + int32_t res = llama_model_meta_val_str(model, template_key.c_str(), model_template.data(), model_template.size()); + if (res >= 0) { + llama_chat_message chat[] = {{"user", "test"}}; + std::string tmpl = std::string(model_template.data(), model_template.size()); + res = llama_chat_apply_template(model, tmpl.c_str(), chat, 1, true, nullptr, 0); + } + return res >= 0; } void init() { From 0b069a47108b23b96c620296ad41c921455ed1e3 Mon Sep 17 00:00:00 2001 From: Jhen-Jie Hong Date: Wed, 13 Nov 2024 10:51:00 +0800 Subject: [PATCH 2/2] server : fix chat res --- examples/server/server.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/server/server.cpp b/examples/server/server.cpp index 76a02bc1a9fb4..cac55007acaab 100644 --- a/examples/server/server.cpp +++ b/examples/server/server.cpp @@ -661,9 +661,10 @@ struct server_context { if (res >= 0) { llama_chat_message chat[] = {{"user", "test"}}; std::string tmpl = std::string(model_template.data(), model_template.size()); - res = llama_chat_apply_template(model, tmpl.c_str(), chat, 1, true, nullptr, 0); + int32_t chat_res = llama_chat_apply_template(model, tmpl.c_str(), chat, 1, true, nullptr, 0); + return chat_res > 0; } - return res >= 0; + return false; } void init() {