Skip to content

Commit ba2704a

Browse files
committed
initial commit for handling extra template kwargs
1 parent 6c8b915 commit ba2704a

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

common/chat.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ struct templates_params {
3434
bool add_generation_prompt = true;
3535
bool extract_reasoning = true;
3636
std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
37+
json extra_context;
3738
};
3839

3940
common_chat_tool_choice common_chat_tool_choice_parse_oaicompat(const std::string & tool_choice) {
@@ -1582,7 +1583,7 @@ static common_chat_msg common_chat_parse_hermes_2_pro(const std::string& input,
15821583

15831584
static common_chat_params common_chat_params_init_without_tools(const common_chat_template & tmpl, const struct templates_params & inputs) {
15841585
common_chat_params data;
1585-
data.prompt = apply(tmpl, inputs.messages, inputs.tools.empty() ? json() : inputs.tools, inputs.add_generation_prompt);
1586+
data.prompt = apply(tmpl, inputs.messages, inputs.tools.empty() ? json() : inputs.tools, inputs.add_generation_prompt,inputs.extra_context);
15861587
data.format = COMMON_CHAT_FORMAT_CONTENT_ONLY;
15871588
data.grammar_lazy = false;
15881589
if (!inputs.json_schema.is_null()) {
@@ -1613,6 +1614,12 @@ static common_chat_params common_chat_templates_apply_jinja(
16131614
params.tool_choice = inputs.tool_choice;
16141615
params.grammar = inputs.grammar;
16151616
params.now = inputs.now;
1617+
1618+
for(auto el: inputs.chat_template_kwargs)
1619+
{
1620+
params.extra_context[el.first] = json::parse(el.second);
1621+
}
1622+
16161623
if (!inputs.json_schema.empty()) {
16171624
params.json_schema = json::parse(inputs.json_schema);
16181625
}

common/chat.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <chrono>
77
#include <string>
88
#include <vector>
9+
#include <map>
910

1011
struct common_chat_templates;
1112

@@ -73,6 +74,7 @@ struct common_chat_templates_inputs {
7374
bool parallel_tool_calls = false;
7475
bool extract_reasoning = true;
7576
std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
77+
std::map<std::string,std::string> chat_template_kwargs;
7678
};
7779

7880
struct common_chat_params {

tools/server/utils.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -726,6 +726,12 @@ static json oaicompat_completion_params_parse(
726726
inputs.parallel_tool_calls = json_value(body, "parallel_tool_calls", false);
727727
inputs.extract_reasoning = reasoning_format != COMMON_REASONING_FORMAT_NONE;
728728
inputs.add_generation_prompt = json_value(body, "add_generation_prompt", true);
729+
730+
auto chat_template_kwargs_object = json_value(body, "chat_template_kwargs", json::object());
731+
for (const auto & item : chat_template_kwargs_object.items()) {
732+
inputs.chat_template_kwargs[item.key()] = item.value().dump();
733+
}
734+
729735
if (!inputs.tools.empty() && inputs.tool_choice != COMMON_CHAT_TOOL_CHOICE_NONE && body.contains("grammar")) {
730736
throw std::runtime_error("Cannot use custom grammar constraints with tools.");
731737
}

0 commit comments

Comments
 (0)