Relax prefill parser to allow space. (#21240)
* Relax prefill parser to allow space. * Move changes from prefix() to parser generation * Only allow spaces if we're not having a pure content parser next
This commit is contained in:
parent
6137c325a1
commit
e15efe007d
|
|
@ -100,6 +100,7 @@ common_peg_arena autoparser::build_parser(const generation_params & inputs) cons
|
||||||
|
|
||||||
bool has_tools = inputs.tools.is_array() && !inputs.tools.empty();
|
bool has_tools = inputs.tools.is_array() && !inputs.tools.empty();
|
||||||
bool has_response_format = inputs.json_schema.is_object() && !inputs.json_schema.empty();
|
bool has_response_format = inputs.json_schema.is_object() && !inputs.json_schema.empty();
|
||||||
|
bool pure_content = reasoning.mode == reasoning_mode::NONE;
|
||||||
|
|
||||||
if (has_response_format) {
|
if (has_response_format) {
|
||||||
auto response_format = p.rule("response-format", p.content(p.schema(p.json(), "response-format-schema", inputs.json_schema)));
|
auto response_format = p.rule("response-format", p.content(p.schema(p.json(), "response-format-schema", inputs.json_schema)));
|
||||||
|
|
@ -107,12 +108,14 @@ common_peg_arena autoparser::build_parser(const generation_params & inputs) cons
|
||||||
p.literal("```json") + p.space() + response_format + p.space() + p.literal("```"),
|
p.literal("```json") + p.space() + response_format + p.space() + p.literal("```"),
|
||||||
response_format
|
response_format
|
||||||
}) + p.end();
|
}) + p.end();
|
||||||
|
pure_content = false;
|
||||||
} else if (has_tools && inputs.tool_choice != COMMON_CHAT_TOOL_CHOICE_NONE && jinja_caps.supports_tool_calls) {
|
} else if (has_tools && inputs.tool_choice != COMMON_CHAT_TOOL_CHOICE_NONE && jinja_caps.supports_tool_calls) {
|
||||||
parser = tools.build_parser(ctx);
|
parser = tools.build_parser(ctx);
|
||||||
|
pure_content = false;
|
||||||
} else {
|
} else {
|
||||||
parser = content.build_parser(ctx);
|
parser = content.build_parser(ctx);
|
||||||
}
|
}
|
||||||
return p.prefix(inputs.generation_prompt, reasoning.start) + parser;
|
return pure_content ? p.prefix(inputs.generation_prompt, reasoning.start) + parser : p.prefix(inputs.generation_prompt, reasoning.start) << parser;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1709,7 +1709,7 @@ static common_chat_params common_chat_templates_apply_jinja(const struct common_
|
||||||
data.format = COMMON_CHAT_FORMAT_PEG_NATIVE;
|
data.format = COMMON_CHAT_FORMAT_PEG_NATIVE;
|
||||||
data.generation_prompt = params.generation_prompt;
|
data.generation_prompt = params.generation_prompt;
|
||||||
auto parser = build_chat_peg_parser([¶ms](common_chat_peg_builder &p) {
|
auto parser = build_chat_peg_parser([¶ms](common_chat_peg_builder &p) {
|
||||||
return p.prefix(params.generation_prompt) + p.content(p.rest());
|
return p.prefix(params.generation_prompt) << p.content(p.rest());
|
||||||
});
|
});
|
||||||
data.parser = parser.save();
|
data.parser = parser.save();
|
||||||
return data;
|
return data;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue