|
|
@@ -58,6 +58,32 @@ static T json_value(const json & body, const std::string & key, const T & defaul
|
|
|
|
|
|
const static std::string build_info("b" + std::to_string(LLAMA_BUILD_NUMBER) + "-" + LLAMA_COMMIT);
|
|
|
|
|
|
+// thin wrapper around common_grammar_trigger with (de)serialization functions
|
|
|
+struct server_grammar_trigger {
|
|
|
+ common_grammar_trigger value;
|
|
|
+
|
|
|
+ server_grammar_trigger() = default;
|
|
|
+ server_grammar_trigger(const common_grammar_trigger & value) : value(value) {}
|
|
|
+ server_grammar_trigger(const json & in) {
|
|
|
+ value.type = (common_grammar_trigger_type) in.at("type").get<int>();
|
|
|
+ value.value = in.at("value").get<std::string>();
|
|
|
+ if (value.type == COMMON_GRAMMAR_TRIGGER_TYPE_TOKEN) {
|
|
|
+ value.token = (llama_token) in.at("token").get<int>();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ json to_json() const {
|
|
|
+ json out {
|
|
|
+ {"type", (int) value.type},
|
|
|
+ {"value", value.value},
|
|
|
+ };
|
|
|
+ if (value.type == COMMON_GRAMMAR_TRIGGER_TYPE_TOKEN) {
|
|
|
+ out["token"] = (int) value.token;
|
|
|
+ }
|
|
|
+ return out;
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
//
|
|
|
// tokenizer and input processing utils
|
|
|
//
|
|
|
@@ -627,7 +653,8 @@ static json oaicompat_completion_params_parse(
|
|
|
llama_params["grammar_lazy"] = chat_params.grammar_lazy;
|
|
|
auto grammar_triggers = json::array();
|
|
|
for (const auto & trigger : chat_params.grammar_triggers) {
|
|
|
- grammar_triggers.push_back(trigger.to_json<json>());
|
|
|
+ server_grammar_trigger ct(trigger);
|
|
|
+ grammar_triggers.push_back(ct.to_json());
|
|
|
}
|
|
|
llama_params["grammar_triggers"] = grammar_triggers;
|
|
|
llama_params["preserved_tokens"] = chat_params.preserved_tokens;
|