diff --git a/public/scripts/kai-settings.js b/public/scripts/kai-settings.js index d9f7c581a..9757f372c 100644 --- a/public/scripts/kai-settings.js +++ b/public/scripts/kai-settings.js @@ -95,6 +95,7 @@ function getKoboldGenerationData(finalPromt, this_settings, this_amount_gen, thi singleline: kai_settings.single_line, stop_sequence: kai_settings.use_stop_sequence ? getStoppingStrings(isImpersonate, false) : undefined, streaming: kai_settings.streaming_kobold && kai_settings.can_use_streaming, + can_abort: kai_settings.can_use_streaming, }; return generate_data; } diff --git a/server.js b/server.js index 209ac7b35..784ad1ace 100644 --- a/server.js +++ b/server.js @@ -354,7 +354,19 @@ app.post("/generate", jsonParser, async function (request, response_generate = r const request_prompt = request.body.prompt; const controller = new AbortController(); request.socket.removeAllListeners('close'); - request.socket.on('close', function () { + request.socket.on('close', async function () { + if (request.body.can_abort && !response_generate.finished) { + try { + // send abort signal to koboldcpp + await fetch(`${api_server}/extra/abort`, { + method: 'POST', + }); + } catch { + if ('status' in error) { + console.log('Status Code from Kobold:', error.status); + } + } + } controller.abort(); }); @@ -412,20 +424,7 @@ app.post("/generate", jsonParser, async function (request, response_generate = r response = await fetch(url, { method: 'POST', timeout: 0, ...args }); if (request.body.streaming) { - request.socket.on('close', async function () { - if (controller.signal.aborted) { - try { - // send abort signal to koboldcpp - await fetch(`${api_server}/extra/abort`, { - method: 'POST', - }); - } catch { - // likely endpoint not available on older versions of koboldcpp - if ('status' in error) { - console.log('Status Code from Kobold:', error.status); - } - } - } + request.socket.on('close', function () { response.body.destroy(); // Close the remote stream response_generate.end(); // End the Express response });