@@ -898,30 +898,55 @@ struct server_context {
898
898
slot.oaicompat_model = " " ;
899
899
}
900
900
901
- slot.params .stream = json_value (data, " stream" , false );
902
- slot.params .cache_prompt = json_value (data, " cache_prompt" , false );
903
- slot.params .n_predict = json_value (data, " n_predict" , default_params.n_predict );
904
- slot.sparams .top_k = json_value (data, " top_k" , default_sparams.top_k );
905
- slot.sparams .top_p = json_value (data, " top_p" , default_sparams.top_p );
906
- slot.sparams .min_p = json_value (data, " min_p" , default_sparams.min_p );
907
- slot.sparams .tfs_z = json_value (data, " tfs_z" , default_sparams.tfs_z );
908
- slot.sparams .typical_p = json_value (data, " typical_p" , default_sparams.typical_p );
909
- slot.sparams .temp = json_value (data, " temperature" , default_sparams.temp );
910
- slot.sparams .dynatemp_range = json_value (data, " dynatemp_range" , default_sparams.dynatemp_range );
911
- slot.sparams .dynatemp_exponent = json_value (data, " dynatemp_exponent" , default_sparams.dynatemp_exponent );
912
- slot.sparams .penalty_last_n = json_value (data, " repeat_last_n" , default_sparams.penalty_last_n );
913
- slot.sparams .penalty_repeat = json_value (data, " repeat_penalty" , default_sparams.penalty_repeat );
914
- slot.sparams .penalty_freq = json_value (data, " frequency_penalty" , default_sparams.penalty_freq );
915
- slot.sparams .penalty_present = json_value (data, " presence_penalty" , default_sparams.penalty_present );
916
- slot.sparams .mirostat = json_value (data, " mirostat" , default_sparams.mirostat );
917
- slot.sparams .mirostat_tau = json_value (data, " mirostat_tau" , default_sparams.mirostat_tau );
918
- slot.sparams .mirostat_eta = json_value (data, " mirostat_eta" , default_sparams.mirostat_eta );
919
- slot.sparams .penalize_nl = json_value (data, " penalize_nl" , default_sparams.penalize_nl );
920
- slot.params .n_keep = json_value (data, " n_keep" , slot.params .n_keep );
921
- slot.params .n_discard = json_value (data, " n_discard" , default_params.n_discard );
922
- slot.sparams .seed = json_value (data, " seed" , default_sparams.seed );
923
- slot.sparams .n_probs = json_value (data, " n_probs" , default_sparams.n_probs );
924
- slot.sparams .min_keep = json_value (data, " min_keep" , default_sparams.min_keep );
901
+ slot.params .stream = json_value (data, " stream" , false );
902
+ slot.params .cache_prompt = json_value (data, " cache_prompt" , false );
903
+ slot.params .n_predict = json_value (data, " n_predict" , default_params.n_predict );
904
+ slot.sparams .top_k = json_value (data, " top_k" , default_sparams.top_k );
905
+ slot.sparams .top_p = json_value (data, " top_p" , default_sparams.top_p );
906
+ slot.sparams .min_p = json_value (data, " min_p" , default_sparams.min_p );
907
+ slot.sparams .tfs_z = json_value (data, " tfs_z" , default_sparams.tfs_z );
908
+ slot.sparams .typical_p = json_value (data, " typical_p" , default_sparams.typical_p );
909
+ slot.sparams .temp = json_value (data, " temperature" , default_sparams.temp );
910
+ slot.sparams .dynatemp_range = json_value (data, " dynatemp_range" , default_sparams.dynatemp_range );
911
+ slot.sparams .dynatemp_exponent = json_value (data, " dynatemp_exponent" , default_sparams.dynatemp_exponent );
912
+ slot.sparams .penalty_last_n = json_value (data, " repeat_last_n" , default_sparams.penalty_last_n );
913
+ slot.sparams .penalty_repeat = json_value (data, " repeat_penalty" , default_sparams.penalty_repeat );
914
+ slot.sparams .penalty_freq = json_value (data, " frequency_penalty" , default_sparams.penalty_freq );
915
+ slot.sparams .penalty_present = json_value (data, " presence_penalty" , default_sparams.penalty_present );
916
+ slot.sparams .dry_multiplier = json_value (data, " dry_multiplier" , default_sparams.dry_multiplier );
917
+ slot.sparams .dry_base = json_value (data, " dry_base" , default_sparams.dry_base );
918
+ slot.sparams .dry_allowed_length = json_value (data, " dry_allowed_length" , default_sparams.dry_allowed_length );
919
+ slot.sparams .dry_penalty_last_n = json_value (data, " dry_penalty_last_n" , default_sparams.dry_penalty_last_n );
920
+ slot.sparams .mirostat = json_value (data, " mirostat" , default_sparams.mirostat );
921
+ slot.sparams .mirostat_tau = json_value (data, " mirostat_tau" , default_sparams.mirostat_tau );
922
+ slot.sparams .mirostat_eta = json_value (data, " mirostat_eta" , default_sparams.mirostat_eta );
923
+ slot.sparams .penalize_nl = json_value (data, " penalize_nl" , default_sparams.penalize_nl );
924
+ slot.params .n_keep = json_value (data, " n_keep" , slot.params .n_keep );
925
+ slot.params .n_discard = json_value (data, " n_discard" , default_params.n_discard );
926
+ slot.sparams .seed = json_value (data, " seed" , default_sparams.seed );
927
+ slot.sparams .n_probs = json_value (data, " n_probs" , default_sparams.n_probs );
928
+ slot.sparams .min_keep = json_value (data, " min_keep" , default_sparams.min_keep );
929
+
930
+ // sequence breakers for DRY
931
+ {
932
+ auto dry_seq_breakers = data.find (" dry_seq_breakers" );
933
+ if (dry_seq_breakers != data.end ()) {
934
+ try {
935
+ if (dry_seq_breakers->is_array ()) {
936
+ slot.sparams .dry_seq_breakers = dry_seq_breakers->get <std::vector<std::string>>();
937
+ } else if (dry_seq_breakers->is_string ()) {
938
+ slot.sparams .dry_seq_breakers = json::parse (dry_seq_breakers->get <std::string>()).get <std::vector<std::string>>();
939
+ } else {
940
+ send_error (task, " \" dry_seq_breakers\" : Expected an array of strings or a JSON-encoded array of strings." , ERROR_TYPE_INVALID_REQUEST);
941
+ return false ;
942
+ }
943
+ } catch (const std::exception & e) {
944
+ send_error (task, std::string (" \" dry_seq_breakers\" : " ) + e.what (), ERROR_TYPE_INVALID_REQUEST);
945
+ return false ;
946
+ }
947
+ }
948
+ }
949
+
925
950
926
951
// process "json_schema" and "grammar"
927
952
if (data.contains (" json_schema" ) && !data.at (" json_schema" ).is_null () && data.contains (" grammar" ) && !data.at (" grammar" ).is_null ()) {
@@ -1339,6 +1364,11 @@ struct server_context {
1339
1364
{" frequency_penalty" , slot.sparams .penalty_freq },
1340
1365
{" penalty_prompt_tokens" , slot.sparams .penalty_prompt_tokens },
1341
1366
{" use_penalty_prompt_tokens" , slot.sparams .use_penalty_prompt_tokens },
1367
+ {" dry_multiplier" , slot.sparams .dry_multiplier },
1368
+ {" dry_base" , slot.sparams .dry_base },
1369
+ {" dry_allowed_length" , slot.sparams .dry_allowed_length },
1370
+ {" dry_penalty_last_n" , slot.sparams .dry_penalty_last_n },
1371
+ {" dry_seq_breakers" , slot.sparams .dry_seq_breakers },
1342
1372
{" mirostat" , slot.sparams .mirostat },
1343
1373
{" mirostat_tau" , slot.sparams .mirostat_tau },
1344
1374
{" mirostat_eta" , slot.sparams .mirostat_eta },
0 commit comments