Skip to content

Commit 3b127c7

Browse files
authored
common : add -jf / --json-schema-file flag (#12011)
1 parent e5007a5 commit 3b127c7

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

common/arg.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1948,6 +1948,23 @@ common_params_context common_params_parser_init(common_params & params, llama_ex
19481948
params.sampling.grammar = json_schema_to_grammar(json::parse(value));
19491949
}
19501950
).set_sparam());
1951+
add_opt(common_arg(
1952+
{"-jf", "--json-schema-file"}, "FILE",
1953+
"File containing a JSON schema to constrain generations (https://json-schema.org/), e.g. `{}` for any JSON object\nFor schemas w/ external $refs, use --grammar + example/json_schema_to_grammar.py instead",
1954+
[](common_params & params, const std::string & value) {
1955+
std::ifstream file(value);
1956+
if (!file) {
1957+
throw std::runtime_error(string_format("error: failed to open file '%s'\n", value.c_str()));
1958+
}
1959+
std::string schema;
1960+
std::copy(
1961+
std::istreambuf_iterator<char>(file),
1962+
std::istreambuf_iterator<char>(),
1963+
std::back_inserter(schema)
1964+
);
1965+
params.sampling.grammar = json_schema_to_grammar(json::parse(schema));
1966+
}
1967+
).set_sparam());
19511968
add_opt(common_arg(
19521969
{"--pooling"}, "{none,mean,cls,last,rank}",
19531970
"pooling type for embeddings, use model default if unspecified",

0 commit comments

Comments
 (0)