Skip to content

Commit d1b6691

Browse files
author
ochafik
committed
r1: revert making <|tool▁calls▁begin|> optional as somehow sampling triggers us on "<|tool▁call▁begin|><", which is already invalid per the grammar
1 parent 0db9881 commit d1b6691

File tree

1 file changed

+5
-7
lines changed

1 file changed

+5
-7
lines changed

common/chat.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,7 @@ static common_chat_msg common_chat_parse_llama_3_1(const std::string & input, bo
564564

565565
static common_chat_params common_chat_params_init_deepseek_r1(const common_chat_template & tmpl, const struct common_chat_inputs & inputs) {
566566
common_chat_params data;
567-
if (!inputs.tools.is_null() && !inputs.tools.empty()) {
567+
if (inputs.tools.is_array() && !inputs.tools.empty()) {
568568
data.grammar_lazy = inputs.tool_choice != "required";
569569
data.grammar = build_grammar([&](const common_grammar_builder & builder) {
570570
std::vector<std::string> tool_rules;
@@ -580,21 +580,19 @@ static common_chat_params common_chat_params_init_deepseek_r1(const common_chat_
580580
// Distill Qwen 7B & 32B models seem confused re/ syntax of their tool call opening tag,
581581
// so we accept common variants (then it's all constrained)
582582
builder.add_rule("root",
583-
"( \"<|tool▁calls▁begin|>\" | \"<|tool_calls_begin|>\" | \"<|tool calls begin|>\" | \"<|tool\\\\_calls\\\\_begin|>\" )? "
584-
"(" +string_join(tool_rules, " | ") + ")" + (inputs.parallel_tool_calls ? "*" : "") + " "
583+
"( \"<|tool▁calls▁begin|>\" | \"<|tool_calls_begin|>\" | \"<|tool calls begin|>\" | \"<|tool\\\\_calls\\\\_begin|>\" ) "
584+
"(" + string_join(tool_rules, " | ") + ")" + (inputs.parallel_tool_calls ? "*" : "") + " "
585585
"\"<|tool▁calls▁end|>\""
586586
" space");
587587
data.grammar_triggers.push_back({"<|tool▁calls▁begin|>", /* .at_start = */ false});
588588
data.grammar_triggers.push_back({"<|tool_calls_begin|>", /* .at_start = */ false});
589589
data.grammar_triggers.push_back({"<|tool calls begin|>", /* .at_start = */ false});
590590
data.grammar_triggers.push_back({"<|tool\\_calls\\_begin|>", /* .at_start = */ false});
591-
data.grammar_triggers.push_back({"<|tool▁call▁begin|>", /* .at_start = */ false});
592591
data.preserved_tokens = {
593592
"<think>",
594593
"</think>",
595594
"<|tool▁sep|>",
596595
"<|tool▁calls▁end|",
597-
"<|tool▁call▁begin|>",
598596
"<|tool▁call▁end|>",
599597
};
600598
}, grammar_options);
@@ -654,7 +652,7 @@ static common_chat_params common_chat_params_init_firefunction_v2(const common_c
654652
{"datetime", "Jan 29 2025 13:00:00 GMT"},
655653
{"functions", json(inputs.tools.empty() ? "" : inputs.tools.dump(2))},
656654
});
657-
if (!inputs.tools.is_null() && !inputs.tools.empty()) {
655+
if (inputs.tools.is_array() && !inputs.tools.empty()) {
658656
data.grammar_lazy = inputs.tool_choice != "required";
659657
data.grammar = build_grammar([&](const common_grammar_builder & builder) {
660658
auto schemas = json::array();
@@ -699,7 +697,7 @@ static common_chat_params common_chat_params_init_functionary_v3_2(const common_
699697
common_chat_params data;
700698
data.prompt = apply(tmpl, inputs.messages, inputs.tools.empty() ? json() : inputs.tools, inputs.add_generation_prompt);
701699
data.format = COMMON_CHAT_FORMAT_FUNCTIONARY_V3_2;
702-
if (!inputs.tools.is_null() && !inputs.tools.empty()) {
700+
if (inputs.tools.is_array() && !inputs.tools.empty()) {
703701
data.grammar_lazy = inputs.tool_choice != "required";
704702
data.grammar = build_grammar([&](const common_grammar_builder & builder) {
705703
std::vector<std::string> first_tool_rules;

0 commit comments

Comments
 (0)