Merge pull request #3989 from bmen25124/prefill_custom_request Added prefill for custom-request->text completion

ad15e4f172ac77ecfdac9e571df690220dd5c9db

Cohee <18619528+Cohee1207@users.noreply.github.com>

Signed
1 files changed, +43 -18Ignore whitespace
public/scripts/custom-request.js+43 -18
@@ -242,34 +242,59 @@ export class TextCompletionService {
242242
243 // Format messages using instruct formatting243 // Format messages using instruct formatting
244 const formattedMessages = [];244 const formattedMessages = [];
245 const prefillActive = prompt.length > 0 ? prompt[prompt.length - 1].role === 'assistant' : false;
245 for (const message of prompt) {246 for (const message of prompt) {
246 let messageContent = message.content;247 let messageContent = message.content;
247 if (!message.ignoreInstruct) {248 if (!message.ignoreInstruct) {
248 messageContent = formatInstructModeChat(249 const isLastMessage = message === prompt[prompt.length - 1];
249 message.role,250
250 message.content,251 // This complicated logic means:
251 message.role === 'user',252 // 1. If prefill is not active, format all messages
252 false,253 // 2. If prefill is active, format all messages except the last one
253 undefined,254 if (!isLastMessage || !prefillActive) {
254 undefined,255 messageContent = formatInstructModeChat(
255 undefined,256 message.role,
256 undefined,257 message.content,
257 instructPreset,258 message.role === 'user',
258 );
259
260 // Add prompt formatting for the last message
261 if (message === prompt[prompt.length - 1]) {
262 messageContent += formatInstructModePrompt(
263 undefined,
264 false,259 false,
265 undefined,260 undefined,
266 undefined,261 undefined,
267 undefined,262 undefined,
268 false,263 undefined,
269 false,
270 instructPreset,264 instructPreset,
271 );265 );
272 }266 }
267
268 // Add prompt formatting for the last message.
269 if (isLastMessage) {
270 if (!prefillActive) { // e.g. "<|im_start|>user:"
271 messageContent += formatInstructModePrompt(
272 undefined,
273 false,
274 undefined,
275 undefined,
276 undefined,
277 false,
278 false,
279 instructPreset,
280 );
281 } else { // e.g. "<|im_start|>assistant: Hello, my name is"
282 const overridenInstructPreset = structuredClone(instructPreset);
283 overridenInstructPreset.output_suffix = '';
284 overridenInstructPreset.wrap = false;
285 messageContent = formatInstructModeChat(
286 message.role,
287 message.content,
288 false, // since it is assistant
289 false,
290 undefined,
291 undefined,
292 undefined,
293 undefined,
294 overridenInstructPreset,
295 );
296 }
297 }
273 }298 }
274 formattedMessages.push(messageContent);299 formattedMessages.push(messageContent);
275 }300 }