#1827 Consolidate {{group}} macro behavior
This commit is contained in:
parent
5f6bc49aa6
commit
9d713825c2
|
@ -2169,6 +2169,22 @@ function substituteParams(content, _name1, _name2, _original, _group, _replaceCh
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getGroupValue = () => {
|
||||||
|
if (typeof _group === 'string') {
|
||||||
|
return _group;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selected_group) {
|
||||||
|
const members = groups.find(x => x.id === selected_group)?.members;
|
||||||
|
const names = Array.isArray(members)
|
||||||
|
? members.map(m => characters.find(c => c.avatar === m)?.name).filter(Boolean).join(', ')
|
||||||
|
: '';
|
||||||
|
return names;
|
||||||
|
} else {
|
||||||
|
return _name2 ?? name2;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
if (_replaceCharacterCard) {
|
if (_replaceCharacterCard) {
|
||||||
const fields = getCharacterCardFields();
|
const fields = getCharacterCardFields();
|
||||||
environment.charPrompt = fields.system || '';
|
environment.charPrompt = fields.system || '';
|
||||||
|
@ -2181,10 +2197,9 @@ function substituteParams(content, _name1, _name2, _original, _group, _replaceCh
|
||||||
}
|
}
|
||||||
|
|
||||||
// Must be substituted last so that they're replaced inside {{description}}
|
// Must be substituted last so that they're replaced inside {{description}}
|
||||||
// TODO: evaluate macros recursively so we don't need to rely on substitution order
|
|
||||||
environment.user = _name1 ?? name1;
|
environment.user = _name1 ?? name1;
|
||||||
environment.char = _name2 ?? name2;
|
environment.char = _name2 ?? name2;
|
||||||
environment.group = environment.charIfNotGroup = _group ?? name2;
|
environment.group = environment.charIfNotGroup = getGroupValue();
|
||||||
environment.model = getGeneratingModel();
|
environment.model = getGeneratingModel();
|
||||||
|
|
||||||
return evaluateMacros(content, environment);
|
return evaluateMacros(content, environment);
|
||||||
|
|
|
@ -670,10 +670,9 @@ export function isOpenRouterWithInstruct() {
|
||||||
async function populateChatHistory(messages, prompts, chatCompletion, type = null, cyclePrompt = null) {
|
async function populateChatHistory(messages, prompts, chatCompletion, type = null, cyclePrompt = null) {
|
||||||
chatCompletion.add(new MessageCollection('chatHistory'), prompts.index('chatHistory'));
|
chatCompletion.add(new MessageCollection('chatHistory'), prompts.index('chatHistory'));
|
||||||
|
|
||||||
let names = (selected_group && groups.find(x => x.id === selected_group)?.members.map(member => characters.find(c => c.avatar === member)?.name).filter(Boolean).join(', ')) || '';
|
|
||||||
// Reserve budget for new chat message
|
// Reserve budget for new chat message
|
||||||
const newChat = selected_group ? oai_settings.new_group_chat_prompt : oai_settings.new_chat_prompt;
|
const newChat = selected_group ? oai_settings.new_group_chat_prompt : oai_settings.new_chat_prompt;
|
||||||
const newChatMessage = new Message('system', substituteParams(newChat, null, null, null, names), 'newMainChat');
|
const newChatMessage = new Message('system', substituteParams(newChat), 'newMainChat');
|
||||||
chatCompletion.reserveBudget(newChatMessage);
|
chatCompletion.reserveBudget(newChatMessage);
|
||||||
|
|
||||||
// Reserve budget for group nudge
|
// Reserve budget for group nudge
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
<li><tt>{{mesExamplesRaw}}</tt> – unformatted Dialogue Examples <b>(only for Story String)</b></li>
|
<li><tt>{{mesExamplesRaw}}</tt> – unformatted Dialogue Examples <b>(only for Story String)</b></li>
|
||||||
<li><tt>{{user}}</tt> – your current Persona username</li>
|
<li><tt>{{user}}</tt> – your current Persona username</li>
|
||||||
<li><tt>{{char}}</tt> – the Character's name</li>
|
<li><tt>{{char}}</tt> – the Character's name</li>
|
||||||
|
<li><tt>{{group}}</tt> – a comma-separated list of group member names or the character name in solo chats. Alias: {{charIfNotGroup}}</li>
|
||||||
|
<li><tt>{{model}}</tt> – a text generation model name for the currently selected API. <b>Can be inaccurate!</b></li>
|
||||||
<li><tt>{{lastMessage}}</tt> - the text of the latest chat message.</li>
|
<li><tt>{{lastMessage}}</tt> - the text of the latest chat message.</li>
|
||||||
<li><tt>{{lastMessageId}}</tt> – index # of the latest chat message. Useful for slash command batching.</li>
|
<li><tt>{{lastMessageId}}</tt> – index # of the latest chat message. Useful for slash command batching.</li>
|
||||||
<li><tt>{{firstIncludedMessageId}}</tt> - the ID of the first message included in the context. Requires generation to be ran at least once in the current session.</li>
|
<li><tt>{{firstIncludedMessageId}}</tt> - the ID of the first message included in the context. Requires generation to be ran at least once in the current session.</li>
|
||||||
|
|
Loading…
Reference in New Issue