From 6609c941a9e7280d8d758be8e72752d77f9108d6 Mon Sep 17 00:00:00 2001 From: bmen25124 Date: Mon, 12 May 2025 21:52:16 +0300 Subject: [PATCH 1/2] Added prefill for custom-request->text completion --- public/scripts/custom-request.js | 59 +++++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 17 deletions(-) diff --git a/public/scripts/custom-request.js b/public/scripts/custom-request.js index 888a09745..ca8451e92 100644 --- a/public/scripts/custom-request.js +++ b/public/scripts/custom-request.js @@ -242,34 +242,59 @@ export class TextCompletionService { // Format messages using instruct formatting const formattedMessages = []; + const prefillActive = prompt[prompt.length - 1].role === 'assistant'; for (const message of prompt) { let messageContent = message.content; if (!message.ignoreInstruct) { - messageContent = formatInstructModeChat( - message.role, - message.content, - message.role === 'user', - false, - undefined, - undefined, - undefined, - undefined, - instructPreset, - ); + const isLastMessage = message === prompt[prompt.length - 1]; - // Add prompt formatting for the last message - if (message === prompt[prompt.length - 1]) { - messageContent += formatInstructModePrompt( - undefined, + // This complicated logic means: + // 1. If prefill is not active, format all messages + // 2. If prefill is active, format all messages except the last one + if (!isLastMessage || !prefillActive) { + messageContent = formatInstructModeChat( + message.role, + message.content, + message.role === 'user', false, undefined, undefined, undefined, - false, - false, + undefined, instructPreset, ); } + + // Add prompt formatting for the last message. + if (isLastMessage) { + if (!prefillActive) { // e.g. "<|im_start|>user:" + messageContent += formatInstructModePrompt( + undefined, + false, + undefined, + undefined, + undefined, + false, + false, + instructPreset, + ); + } else { // e.g. "<|im_start|>assistant: Hello, my name is" + const overridenInstructPreset = structuredClone(instructPreset); + overridenInstructPreset.output_suffix = ''; + overridenInstructPreset.wrap = false; + messageContent = formatInstructModeChat( + message.role, + message.content, + false, // since it is assistant + false, + undefined, + undefined, + undefined, + undefined, + overridenInstructPreset, + ); + } + } } formattedMessages.push(messageContent); } From 294dc3b3b149f57e60a0e3164a0b058edc844dea Mon Sep 17 00:00:00 2001 From: bmen25124 Date: Mon, 12 May 2025 23:00:12 +0300 Subject: [PATCH 2/2] Fixed out of index error --- public/scripts/custom-request.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/scripts/custom-request.js b/public/scripts/custom-request.js index ca8451e92..14915632e 100644 --- a/public/scripts/custom-request.js +++ b/public/scripts/custom-request.js @@ -242,7 +242,7 @@ export class TextCompletionService { // Format messages using instruct formatting const formattedMessages = []; - const prefillActive = prompt[prompt.length - 1].role === 'assistant'; + const prefillActive = prompt.length > 0 ? prompt[prompt.length - 1].role === 'assistant' : false; for (const message of prompt) { let messageContent = message.content; if (!message.ignoreInstruct) {