diff --git a/examples/server/server-context.cpp b/examples/server/server-context.cpp index 2b1c151b..d16efa06 100644 --- a/examples/server/server-context.cpp +++ b/examples/server/server-context.cpp @@ -2396,7 +2396,6 @@ void server_context::send_error(const int id_task, const int id_multi, const std auto res = std::make_unique(); res->id = id_task; res->id_multi = id_multi; - res->stop = false; res->error = true; res->err_type = type; res->err_msg = error; @@ -2423,7 +2422,6 @@ void server_context::send_partial_response(server_slot& slot, completion_token_o res->id_multi = slot.id_multi; res->index = slot.task->index; res->error = false; - res->stop = false; res->stream = slot.params.stream; res->content = tkn.text_to_send; res->post_sampling_probs = slot.params.post_sampling_probs; @@ -2497,7 +2495,10 @@ void server_context::send_final_response(server_slot& slot) { res->id_multi = slot.id_multi; res->index = slot.task->index; res->error = false; - res->stop = true; // to do: set value + res->stop = slot.stopped_word ? STOP_TYPE_WORD + : slot.stopped_eos ? STOP_TYPE_EOS + : slot.stopped_limit ? STOP_TYPE_LIMIT + : STOP_TYPE_EOS; res->stream = slot.params.stream; res->include_usage = slot.params.include_usage; res->content = slot.generated_text; @@ -2911,7 +2912,6 @@ void server_context::process_single_task(server_task&& task) { server_task_result res; res.id = task.id; res.id_multi = task.id_multi; - res.stop = true; res.error = false; res.data = { { "idle", n_idle_slots }, @@ -2975,7 +2975,6 @@ void server_context::process_single_task(server_task&& task) { server_task_result result; result.id = task.id; - result.stop = true; result.error = false; result.data = json{ { "id_slot", id_slot }, @@ -3023,7 +3022,6 @@ void server_context::process_single_task(server_task&& task) { server_task_result result; result.id = task.id; - result.stop = true; result.error = false; result.data = json{ { "id_slot", id_slot }, @@ -3059,7 +3057,6 @@ void server_context::process_single_task(server_task&& task) { slot->server_cached_prompt.data.clear(); server_task_result result; result.id = task.id; - result.stop = true; result.error = false; result.data = json{ { "id_slot", id_slot }, @@ -3072,7 +3069,6 @@ void server_context::process_single_task(server_task&& task) { llama_lora_adapters_apply(ctx, lora_adapters); server_task_result result; result.id = task.id; - result.stop = true; result.error = false; result.data = json{ { "success", true } }; queue_results.send(result); @@ -3280,7 +3276,6 @@ void server_context::on_finish_multitask(const server_task_multi& multitask) { // all subtasks done == multitask is done server_task_result result; result.id = multitask.id; - result.stop = true; result.error = false; // collect json results into one json result diff --git a/examples/server/server-task.cpp b/examples/server/server-task.cpp index 6db50175..4fb1b943 100644 --- a/examples/server/server-task.cpp +++ b/examples/server/server-task.cpp @@ -370,7 +370,7 @@ json server_task_result_cmpl_final::to_json_oaicompat_chat_final() { msg.role = "assistant"; msg.content = content; } - if (stop) { + if (stop == STOP_TYPE_WORD || stop == STOP_TYPE_EOS) { finish_reason = msg.tool_calls.empty() ? "stop" : "tool_calls"; } @@ -412,8 +412,7 @@ json server_task_result_cmpl_final::to_json_oaicompat_chat_final() { json server_task_result_cmpl_final::to_json_oaicompat_chat_stream() { std::time_t t = std::time(0); std::string finish_reason = "length"; - if (stop) { - //if (stop == STOP_TYPE_WORD || stop == STOP_TYPE_EOS) { + if (stop == STOP_TYPE_WORD || stop == STOP_TYPE_EOS) { finish_reason = oaicompat_msg.tool_calls.empty() ? "stop" : "tool_calls"; } diff --git a/examples/server/server-task.h b/examples/server/server-task.h index d04336a1..8ba25fd4 100644 --- a/examples/server/server-task.h +++ b/examples/server/server-task.h @@ -144,7 +144,7 @@ struct server_task_result { json data; - bool stop; + stop_type stop = STOP_TYPE_NONE; bool error; bool final_result = false; result_timings timings;