Skip to content

Commit 92ec57e

Browse files
committed
can set chat_template_kwargs in command line
1 parent c4e7718 commit 92ec57e

File tree

4 files changed

+20
-2
lines changed

4 files changed

+20
-2
lines changed

common/arg.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2775,6 +2775,16 @@ common_params_context common_params_parser_init(common_params & params, llama_ex
27752775
params.ssl_file_cert = value;
27762776
}
27772777
).set_examples({LLAMA_EXAMPLE_SERVER}).set_env("LLAMA_ARG_SSL_CERT_FILE"));
2778+
add_opt(common_arg(
2779+
{"--chat-template-kwargs"}, "STRING",
2780+
string_format("sets additional params for the json template parser"),
2781+
[](common_params & params, const std::string & value) {
2782+
auto parsed = json::parse(value);
2783+
for (const auto & item : parsed.items()) {
2784+
params.default_template_kwargs[item.key()] = item.value().dump();
2785+
}
2786+
}
2787+
).set_examples({LLAMA_EXAMPLE_SERVER}).set_env("CHAT_TEMPLATE_KWARGS"));
27782788
add_opt(common_arg(
27792789
{"-to", "--timeout"}, "N",
27802790
string_format("server read/write timeout in seconds (default: %d)", params.timeout_read),

common/common.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include <set>
88
#include <string>
99
#include <vector>
10+
#include <map>
1011
#include <sstream>
1112

1213
#ifdef _WIN32
@@ -372,6 +373,8 @@ struct common_params {
372373
std::string ssl_file_key = ""; // NOLINT
373374
std::string ssl_file_cert = ""; // NOLINT
374375

376+
std::map<std::string,std::string> default_template_kwargs;
377+
375378
// "advanced" endpoints are disabled by default for better security
376379
bool webui = true;
377380
bool endpoint_slots = false;

examples/server/server.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4153,7 +4153,7 @@ int main(int argc, char ** argv) {
41534153
}
41544154

41554155
auto body = json::parse(req.body);
4156-
json data = oaicompat_completion_params_parse(body, params.use_jinja, params.reasoning_format, ctx_server.chat_templates.get());
4156+
json data = oaicompat_completion_params_parse(body, params.use_jinja, params.reasoning_format, params.default_template_kwargs, ctx_server.chat_templates.get());
41574157

41584158
return handle_completions_impl(
41594159
SERVER_TASK_TYPE_COMPLETION,
@@ -4166,7 +4166,7 @@ int main(int argc, char ** argv) {
41664166
// same with handle_chat_completions, but without inference part
41674167
const auto handle_apply_template = [&ctx_server, &params, &res_ok](const httplib::Request & req, httplib::Response & res) {
41684168
auto body = json::parse(req.body);
4169-
json data = oaicompat_completion_params_parse(body, params.use_jinja, params.reasoning_format, ctx_server.chat_templates.get());
4169+
json data = oaicompat_completion_params_parse(body, params.use_jinja, params.reasoning_format, params.default_template_kwargs, ctx_server.chat_templates.get());
41704170
res_ok(res, {{ "prompt", std::move(data.at("prompt")) }});
41714171
};
41724172

examples/server/utils.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,7 @@ static json oaicompat_completion_params_parse(
579579
const json & body, /* openai api json semantics */
580580
bool use_jinja,
581581
common_reasoning_format reasoning_format,
582+
const std::map<std::string,std::string> default_template_kwargs,
582583
const struct common_chat_templates * tmpls)
583584
{
584585
json llama_params;
@@ -640,6 +641,10 @@ static json oaicompat_completion_params_parse(
640641
inputs.add_generation_prompt = json_value(body, "add_generation_prompt", true);
641642

642643
auto chat_template_kwargs_object = json_value(body, "chat_template_kwargs", json::object());
644+
for (const auto & item: default_template_kwargs)
645+
{
646+
inputs.chat_template_kwargs[item.first] = item.second;
647+
}
643648
for (const auto & item : chat_template_kwargs_object.items()) {
644649
inputs.chat_template_kwargs[item.key()] = item.value().dump();
645650
}

0 commit comments

Comments
 (0)