@@ -801,8 +801,7 @@ static std::string apply(
801801 const struct templates_params & inputs,
802802 const std::optional<json> & messages_override = std::nullopt ,
803803 const std::optional<json> & tools_override = std::nullopt ,
804- const std::optional<json> & additional_context = std::nullopt ,
805- const std::optional<minja::chat_template_options> & tmpl_opts = std::nullopt )
804+ const std::optional<json> & additional_context = std::nullopt )
806805{
807806 minja::chat_template_inputs tmpl_inputs;
808807 tmpl_inputs.messages = messages_override ? *messages_override : inputs.messages ;
@@ -820,11 +819,11 @@ static std::string apply(
820819 // TODO: add flag to control date/time, if only for testing purposes.
821820 // tmpl_inputs.now = std::chrono::system_clock::now();
822821
823- minja::chat_template_options default_tmpl_opts ;
822+ minja::chat_template_options tmpl_opts ;
824823 // To avoid double BOS / EOS tokens, we're manually removing begining / trailing tokens
825824 // instead of using `chat_template_options.use_bos_token = false`, since these tokens
826825 // may be needed inside the template / between messages too.
827- auto result = tmpl.apply (tmpl_inputs, tmpl_opts ? *tmpl_opts : default_tmpl_opts );
826+ auto result = tmpl.apply (tmpl_inputs, tmpl_opts);
828827 if (inputs.add_bos && string_starts_with (result, tmpl.bos_token ())) {
829828 result = result.substr (tmpl.bos_token ().size ());
830829 }
@@ -1817,6 +1816,7 @@ static void common_chat_parse_deepseek_v3_1(common_chat_msg_parser & builder) {
18171816
18181817static common_chat_params common_chat_params_init_minimax_m2 (const common_chat_template & tmpl, const struct templates_params & params) {
18191818 common_chat_params data;
1819+ data.grammar_lazy = params.tool_choice != COMMON_CHAT_TOOL_CHOICE_REQUIRED;;
18201820
18211821 data.prompt = apply (tmpl, params);
18221822 data.format = COMMON_CHAT_FORMAT_MINIMAX_M2;
@@ -1872,6 +1872,7 @@ static void common_chat_parse_minimax_m2(common_chat_msg_parser & builder) {
18721872
18731873static common_chat_params common_chat_params_init_qwen3_coder_xml (const common_chat_template & tmpl, const struct templates_params & params) {
18741874 common_chat_params data;
1875+ data.grammar_lazy = params.tool_choice != COMMON_CHAT_TOOL_CHOICE_REQUIRED;;
18751876
18761877 data.prompt = apply (tmpl, params);
18771878 data.format = COMMON_CHAT_FORMAT_QWEN3_CODER_XML;
@@ -1920,6 +1921,7 @@ static void common_chat_parse_qwen3_coder_xml(common_chat_msg_parser & builder)
19201921
19211922static common_chat_params common_chat_params_init_kimi_k2 (const common_chat_template & tmpl, const struct templates_params & params) {
19221923 common_chat_params data;
1924+ data.grammar_lazy = params.tool_choice != COMMON_CHAT_TOOL_CHOICE_REQUIRED;;
19231925
19241926 data.prompt = apply (tmpl, params);
19251927 data.format = COMMON_CHAT_FORMAT_KIMI_K2;
@@ -1977,6 +1979,7 @@ static void common_chat_parse_kimi_k2(common_chat_msg_parser & builder) {
19771979
19781980static common_chat_params common_chat_params_init_apriel_1_5 (const common_chat_template & tmpl, const struct templates_params & params) {
19791981 common_chat_params data;
1982+ data.grammar_lazy = params.tool_choice != COMMON_CHAT_TOOL_CHOICE_REQUIRED;;
19801983
19811984 data.prompt = apply (tmpl, params);
19821985 data.format = COMMON_CHAT_FORMAT_APRIEL_1_5;
@@ -2030,6 +2033,7 @@ static void common_chat_parse_apriel_1_5(common_chat_msg_parser & builder) {
20302033
20312034static common_chat_params common_chat_params_init_xiaomi_mimo (const common_chat_template & tmpl, const struct templates_params & params) {
20322035 common_chat_params data;
2036+ data.grammar_lazy = params.tool_choice != COMMON_CHAT_TOOL_CHOICE_REQUIRED;;
20332037
20342038 data.prompt = apply (tmpl, params);
20352039 data.format = COMMON_CHAT_FORMAT_XIAOMI_MIMO;
@@ -2313,6 +2317,7 @@ static void common_chat_parse_gpt_oss(common_chat_msg_parser & builder) {
23132317
23142318static common_chat_params common_chat_params_init_glm_4_5 (const common_chat_template & tmpl, const struct templates_params & inputs) {
23152319 common_chat_params data;
2320+ data.grammar_lazy = inputs.tool_choice != COMMON_CHAT_TOOL_CHOICE_REQUIRED;
23162321
23172322 std::string prompt = apply (tmpl, inputs);
23182323
0 commit comments