Don't add user placeholders

This commit is contained in:
Cohee
2024-12-29 21:14:27 +02:00
parent 0ded442bd3
commit c9db7a1574
2 changed files with 10 additions and 9 deletions

View File

@ -64,11 +64,11 @@ function postProcessPrompt(messages, type, names) {
switch (type) { switch (type) {
case 'merge': case 'merge':
case 'claude': case 'claude':
return mergeMessages(messages, names, false); return mergeMessages(messages, names, false, true);
case 'strict': case 'strict':
return mergeMessages(messages, names, true); return mergeMessages(messages, names, true, true);
case 'deepseek': case 'deepseek':
return (x => x[x.length - 1].role !== 'assistant' || (x[x.length - 1].prefix = true) ? x : x)([...mergeMessages(messages, names, true)]); return (x => x.length && (x[x.length - 1].role !== 'assistant' || (x[x.length - 1].prefix = true)) ? x : x)(mergeMessages(messages, names, true, false));
default: default:
return messages; return messages;
} }

View File

@ -639,9 +639,10 @@ export function convertMistralMessages(messages, names) {
* @param {any[]} messages Messages to merge * @param {any[]} messages Messages to merge
* @param {PromptNames} names Prompt names * @param {PromptNames} names Prompt names
* @param {boolean} strict Enable strict mode: only allow one system message at the start, force user first message * @param {boolean} strict Enable strict mode: only allow one system message at the start, force user first message
* @param {boolean} placeholders Add user placeholders to the messages in strict mode
* @returns {any[]} Merged messages * @returns {any[]} Merged messages
*/ */
export function mergeMessages(messages, names, strict) { export function mergeMessages(messages, names, strict, placeholders) {
let mergedMessages = []; let mergedMessages = [];
/** @type {Map<string,object>} */ /** @type {Map<string,object>} */
@ -700,9 +701,9 @@ export function mergeMessages(messages, names, strict) {
} }
}); });
// Prevent erroring out if the messages array is empty. // Prevent erroring out if the mergedMessages array is empty.
if (messages.length === 0) { if (mergedMessages.length === 0) {
messages.unshift({ mergedMessages.unshift({
role: 'user', role: 'user',
content: PROMPT_PLACEHOLDER, content: PROMPT_PLACEHOLDER,
}); });
@ -741,7 +742,7 @@ export function mergeMessages(messages, names, strict) {
mergedMessages[i].role = 'user'; mergedMessages[i].role = 'user';
} }
} }
if (mergedMessages.length) { if (mergedMessages.length && placeholders) {
if (mergedMessages[0].role === 'system' && (mergedMessages.length === 1 || mergedMessages[1].role !== 'user')) { if (mergedMessages[0].role === 'system' && (mergedMessages.length === 1 || mergedMessages[1].role !== 'user')) {
mergedMessages.splice(1, 0, { role: 'user', content: PROMPT_PLACEHOLDER }); mergedMessages.splice(1, 0, { role: 'user', content: PROMPT_PLACEHOLDER });
} }
@ -749,7 +750,7 @@ export function mergeMessages(messages, names, strict) {
mergedMessages.unshift({ role: 'user', content: PROMPT_PLACEHOLDER }); mergedMessages.unshift({ role: 'user', content: PROMPT_PLACEHOLDER });
} }
} }
return mergeMessages(mergedMessages, names, false); return mergeMessages(mergedMessages, names, false, placeholders);
} }
return mergedMessages; return mergedMessages;