mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Added prefill for custom-request->text completion
This commit is contained in:
@@ -242,34 +242,59 @@ export class TextCompletionService {
|
|||||||
|
|
||||||
// Format messages using instruct formatting
|
// Format messages using instruct formatting
|
||||||
const formattedMessages = [];
|
const formattedMessages = [];
|
||||||
|
const prefillActive = prompt[prompt.length - 1].role === 'assistant';
|
||||||
for (const message of prompt) {
|
for (const message of prompt) {
|
||||||
let messageContent = message.content;
|
let messageContent = message.content;
|
||||||
if (!message.ignoreInstruct) {
|
if (!message.ignoreInstruct) {
|
||||||
messageContent = formatInstructModeChat(
|
const isLastMessage = message === prompt[prompt.length - 1];
|
||||||
message.role,
|
|
||||||
message.content,
|
|
||||||
message.role === 'user',
|
|
||||||
false,
|
|
||||||
undefined,
|
|
||||||
undefined,
|
|
||||||
undefined,
|
|
||||||
undefined,
|
|
||||||
instructPreset,
|
|
||||||
);
|
|
||||||
|
|
||||||
// Add prompt formatting for the last message
|
// This complicated logic means:
|
||||||
if (message === prompt[prompt.length - 1]) {
|
// 1. If prefill is not active, format all messages
|
||||||
messageContent += formatInstructModePrompt(
|
// 2. If prefill is active, format all messages except the last one
|
||||||
undefined,
|
if (!isLastMessage || !prefillActive) {
|
||||||
|
messageContent = formatInstructModeChat(
|
||||||
|
message.role,
|
||||||
|
message.content,
|
||||||
|
message.role === 'user',
|
||||||
false,
|
false,
|
||||||
undefined,
|
undefined,
|
||||||
undefined,
|
undefined,
|
||||||
undefined,
|
undefined,
|
||||||
false,
|
undefined,
|
||||||
false,
|
|
||||||
instructPreset,
|
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);
|
formattedMessages.push(messageContent);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user