Fix xAI example messages conversion

This commit is contained in:
Cohee
2025-04-12 14:14:57 +03:00
parent 91fc50b82d
commit 5eeba8894e
2 changed files with 39 additions and 0 deletions

View File

@ -679,6 +679,43 @@ export function convertMistralMessages(messages, names) {
return messages;
}
/**
* Convert a prompt from the messages objects to the format used by xAI.
* @param {object[]} messages Array of messages
* @param {PromptNames} names Prompt names
* @returns {object[]} Prompt for xAI
*/
export function convertXAIMessages(messages, names) {
if (!Array.isArray(messages)) {
return [];
}
messages.forEach(msg => {
if (!msg.name || msg.role === 'user') {
return;
}
const needsCharNamePrefix = [
{ role: 'assistant', condition: names.charName && !msg.content.startsWith(`${names.charName}: `) && !names.startsWithGroupName(msg.content) },
{ role: 'system', name: 'example_assistant', condition: names.charName && !msg.content.startsWith(`${names.charName}: `) && !names.startsWithGroupName(msg.content) },
{ role: 'system', name: 'example_user', condition: names.userName && !msg.content.startsWith(`${names.userName}: `) },
];
const matchingRule = needsCharNamePrefix.find(rule =>
msg.role === rule.role && (!rule.name || msg.name === rule.name) && rule.condition,
);
if (matchingRule) {
const prefix = msg.role === 'system' && msg.name === 'example_user' ? names.userName : names.charName;
msg.content = `${prefix}: ${msg.content}`;
}
delete msg.name;
});
return messages;
}
/**
* Merge messages with the same consecutive role, removing names if they exist.
* @param {any[]} messages Messages to merge