]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
server: only parse empty msg if continuing an assistant msg (#23506)
authorAldehir Rojas <redacted>
Fri, 22 May 2026 15:58:15 +0000 (11:58 -0400)
committerGitHub <redacted>
Fri, 22 May 2026 15:58:15 +0000 (11:58 -0400)
common/chat.h
tools/server/server-task.cpp

index 8ace3e6ba69b8e4107d8b805a8f904ebae4bbad2..b29c627e693a1f0c13f61449a89e1be90d3b1add 100644 (file)
@@ -219,6 +219,7 @@ struct common_chat_parser_params {
     bool                    reasoning_in_content = false;
     std::string             generation_prompt;
     bool                    parse_tool_calls     = true;
+    bool                    is_continuation      = false;
     bool                    echo                 = false;  // Include assistant prefilled msg in output
     bool                    debug                = false;  // Enable debug output for PEG parser
     common_peg_arena        parser               = {};
index d45513dbebae2bca1a0acf55f844bc3033e94c84..abc00c82bdb1792c05a1b7b32f5324df9409f7d2 100644 (file)
@@ -149,7 +149,7 @@ task_result_state::task_result_state(const common_chat_parser_params & chat_pars
     , oai_resp_id("resp_" + random_string())
     , oai_resp_reasoning_id("rs_" + random_string())
     , oai_resp_message_id("msg_" + random_string()) {
-    if (!chat_parser_params.echo) {
+    if (chat_parser_params.is_continuation && !chat_parser_params.echo) {
         // initialize chat_msg to avoid emitting a delta containing the assistant prefill
         chat_msg = common_chat_parse("", true, chat_parser_params);
     }
@@ -432,6 +432,10 @@ task_params server_task::params_from_json_cmpl(
         if (data.contains("chat_parser")) {
             params.chat_parser_params.parser.load(data.at("chat_parser").get<std::string>());
         }
+        if (data.contains("continue_final_message")) {
+            auto continuation = common_chat_continuation_parse(data.at("continue_final_message"));
+            params.chat_parser_params.is_continuation = continuation != COMMON_CHAT_CONTINUATION_NONE;
+        }
         params.chat_parser_params.echo = json_value(data, "echo", false);
     }