Skip to content

Commit f106c6d

Browse files
ghindleiThalay
authored andcommitted
server : add more parameters to server api (ggml-org#1754)
* feat(server): add more parameters to server api * fix(server): reset params to original parsed values for each request
1 parent 6852f57 commit f106c6d

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

examples/server/server.cpp

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,13 @@ std::string output_str(struct whisper_context * ctx, const whisper_params & para
397397
return result.str();
398398
}
399399

400+
bool parse_str_to_bool(const std::string & s) {
401+
if (s == "true" || s == "1" || s == "yes" || s == "y") {
402+
return true;
403+
}
404+
return false;
405+
}
406+
400407
void get_req_parameters(const Request & req, whisper_params & params)
401408
{
402409
if (req.has_file("offset_t"))
@@ -415,6 +422,62 @@ void get_req_parameters(const Request & req, whisper_params & params)
415422
{
416423
params.max_context = std::stoi(req.get_file_value("max_context").content);
417424
}
425+
if (req.has_file("max_len"))
426+
{
427+
params.max_len = std::stoi(req.get_file_value("max_len").content);
428+
}
429+
if (req.has_file("best_of"))
430+
{
431+
params.best_of = std::stoi(req.get_file_value("best_of").content);
432+
}
433+
if (req.has_file("beam_size"))
434+
{
435+
params.beam_size = std::stoi(req.get_file_value("beam_size").content);
436+
}
437+
if (req.has_file("word_thold"))
438+
{
439+
params.word_thold = std::stof(req.get_file_value("word_thold").content);
440+
}
441+
if (req.has_file("entropy_thold"))
442+
{
443+
params.entropy_thold = std::stof(req.get_file_value("entropy_thold").content);
444+
}
445+
if (req.has_file("logprob_thold"))
446+
{
447+
params.logprob_thold = std::stof(req.get_file_value("logprob_thold").content);
448+
}
449+
if (req.has_file("debug_mode"))
450+
{
451+
params.debug_mode = parse_str_to_bool(req.get_file_value("debug_mode").content);
452+
}
453+
if (req.has_file("translate"))
454+
{
455+
params.translate = parse_str_to_bool(req.get_file_value("translate").content);
456+
}
457+
if (req.has_file("diarize"))
458+
{
459+
params.diarize = parse_str_to_bool(req.get_file_value("diarize").content);
460+
}
461+
if (req.has_file("tinydiarize"))
462+
{
463+
params.tinydiarize = parse_str_to_bool(req.get_file_value("tinydiarize").content);
464+
}
465+
if (req.has_file("split_on_word"))
466+
{
467+
params.split_on_word = parse_str_to_bool(req.get_file_value("split_on_word").content);
468+
}
469+
if (req.has_file("no_timestamps"))
470+
{
471+
params.no_timestamps = parse_str_to_bool(req.get_file_value("no_timestamps").content);
472+
}
473+
if (req.has_file("language"))
474+
{
475+
params.language = req.get_file_value("language").content;
476+
}
477+
if (req.has_file("detect_language"))
478+
{
479+
params.detect_language = parse_str_to_bool(req.get_file_value("detect_language").content);
480+
}
418481
if (req.has_file("prompt"))
419482
{
420483
params.prompt = req.get_file_value("prompt").content;
@@ -482,6 +545,9 @@ int main(int argc, char ** argv) {
482545

483546
std::string const default_content = "<html>hello</html>";
484547

548+
// store default params so we can reset after each inference request
549+
whisper_params default_params = params;
550+
485551
// this is only called if no index.html is found in the public --path
486552
svr.Get(sparams.request_path + "/", [&default_content](const Request &, Response &res){
487553
res.set_content(default_content, "text/html");
@@ -724,6 +790,9 @@ int main(int argc, char ** argv) {
724790
"application/json");
725791
}
726792

793+
// reset params to thier defaults
794+
params = default_params;
795+
727796
// return whisper model mutex lock
728797
whisper_mutex.unlock();
729798
});

0 commit comments

Comments
 (0)