adjusted_messages.push_back(adjusted);
}
- auto has_tools = inputs.tools.is_array() && !inputs.tools.empty();
- auto extract_reasoning = inputs.reasoning_format != COMMON_REASONING_FORMAT_NONE;
- auto include_grammar = true;
+ auto has_tools = inputs.tools.is_array() && !inputs.tools.empty();
+ auto has_response_format = inputs.json_schema.is_object() && !inputs.json_schema.empty();
+ auto extract_reasoning = inputs.reasoning_format != COMMON_REASONING_FORMAT_NONE;
+ auto include_grammar = true;
data.supports_thinking = true;
data.thinking_start_tag = "[THINK]";
extract_reasoning ? p.optional("[THINK]" + p.reasoning(p.until("[/THINK]")) + "[/THINK]") : p.eps();
// Response format parser
- if (inputs.json_schema.is_object() && !inputs.json_schema.empty()) {
+ if (has_response_format) {
// Ministral wants to emit json surrounded by code fences
return generation_prompt + (reasoning << "```json" << p.content(p.schema(p.json(), "response-format", inputs.json_schema)) << "```");
}
auto schema = function.at("parameters");
builder.resolve_refs(schema);
});
+ if (has_response_format) {
+ auto schema = inputs.json_schema;
+ builder.resolve_refs(schema);
+ }
parser.build_grammar(builder, data.grammar_lazy);
});
auto schema = function.at("parameters");
builder.resolve_refs(schema);
});
+ if (has_response_format) {
+ auto schema = inputs.json_schema;
+ builder.resolve_refs(schema);
+ }
parser.build_grammar(builder, data.grammar_lazy);
});
auto schema = function.at("parameters");
builder.resolve_refs(schema);
});
+ if (has_response_format) {
+ auto schema = inputs.json_schema;
+ builder.resolve_refs(schema);
+ }
parser.build_grammar(builder, data.grammar_lazy);
});