Don't add user placeholders

c9db7a1574811ee33fd98b3735f493a0e03b9982

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

2 files changed, +10 -9Showing whitespace changes
src/endpoints/backends/chat-completions.js+3 -3
@@ -64,11 +64,11 @@ function postProcessPrompt(messages, type, names) {
64 switch (type) {64 switch (type) {
65 case 'merge':65 case 'merge':
66 case 'claude':66 case 'claude':
67 return mergeMessages(messages, names, false);67 return mergeMessages(messages, names, false, true);
68 case 'strict':68 case 'strict':
69 return mergeMessages(messages, names, true);69 return mergeMessages(messages, names, true, true);
70 case 'deepseek':70 case 'deepseek':
71 return (x => x[x.length - 1].role !== 'assistant' || (x[x.length - 1].prefix = true) ? x : x)([...mergeMessages(messages, names, true)]);71 return (x => x.length && (x[x.length - 1].role !== 'assistant' || (x[x.length - 1].prefix = true)) ? x : x)(mergeMessages(messages, names, true, false));
72 default:72 default:
73 return messages;73 return messages;
74 }74 }
src/prompt-converters.js+7 -6
@@ -639,9 +639,10 @@ export function convertMistralMessages(messages, names) {
639 * @param {any[]} messages Messages to merge639 * @param {any[]} messages Messages to merge
640 * @param {PromptNames} names Prompt names640 * @param {PromptNames} names Prompt names
641 * @param {boolean} strict Enable strict mode: only allow one system message at the start, force user first message641 * @param {boolean} strict Enable strict mode: only allow one system message at the start, force user first message
642 * @param {boolean} placeholders Add user placeholders to the messages in strict mode
642 * @returns {any[]} Merged messages643 * @returns {any[]} Merged messages
643 */644 */
644export function mergeMessages(messages, names, strict) {645export function mergeMessages(messages, names, strict, placeholders) {
645 let mergedMessages = [];646 let mergedMessages = [];
646647
647 /** @type {Map<string,object>} */648 /** @type {Map<string,object>} */
@@ -700,9 +701,9 @@ export function mergeMessages(messages, names, strict) {
700 }701 }
701 });702 });
702703
703 // Prevent erroring out if the messages array is empty.704 // Prevent erroring out if the mergedMessages array is empty.
704 if (messages.length === 0) {705 if (mergedMessages.length === 0) {
705 messages.unshift({706 mergedMessages.unshift({
706 role: 'user',707 role: 'user',
707 content: PROMPT_PLACEHOLDER,708 content: PROMPT_PLACEHOLDER,
708 });709 });
@@ -741,7 +742,7 @@ export function mergeMessages(messages, names, strict) {
741 mergedMessages[i].role = 'user';742 mergedMessages[i].role = 'user';
742 }743 }
743 }744 }
744 if (mergedMessages.length) {745 if (mergedMessages.length && placeholders) {
745 if (mergedMessages[0].role === 'system' && (mergedMessages.length === 1 || mergedMessages[1].role !== 'user')) {746 if (mergedMessages[0].role === 'system' && (mergedMessages.length === 1 || mergedMessages[1].role !== 'user')) {
746 mergedMessages.splice(1, 0, { role: 'user', content: PROMPT_PLACEHOLDER });747 mergedMessages.splice(1, 0, { role: 'user', content: PROMPT_PLACEHOLDER });
747 }748 }
@@ -749,7 +750,7 @@ export function mergeMessages(messages, names, strict) {
749 mergedMessages.unshift({ role: 'user', content: PROMPT_PLACEHOLDER });750 mergedMessages.unshift({ role: 'user', content: PROMPT_PLACEHOLDER });
750 }751 }
751 }752 }
752 return mergeMessages(mergedMessages, names, false);753 return mergeMessages(mergedMessages, names, false, placeholders);
753 }754 }
754755
755 return mergedMessages;756 return mergedMessages;