Append quietPrompt last
This commit is contained in:
parent
463f01d2a6
commit
d2ee6e9a12
|
@ -505,7 +505,7 @@ function populateDialogueExamples(prompts, chatCompletion) {
|
||||||
* @param {ChatCompletion} chatCompletion - An instance of ChatCompletion class that will be populated with the prompts.
|
* @param {ChatCompletion} chatCompletion - An instance of ChatCompletion class that will be populated with the prompts.
|
||||||
* @param {Object} options - An object with optional settings.
|
* @param {Object} options - An object with optional settings.
|
||||||
* @param {string} options.bias - A bias to be added in the conversation.
|
* @param {string} options.bias - A bias to be added in the conversation.
|
||||||
* @param {string} options.quietPrompt - A quiet prompt to be used in the conversation.
|
* @param {string} options.quietPrompt - Instruction prompt for extras
|
||||||
* @param {string} options.type - The type of the chat, can be 'impersonate'.
|
* @param {string} options.type - The type of the chat, can be 'impersonate'.
|
||||||
*/
|
*/
|
||||||
function populateChatCompletion (prompts, chatCompletion, {bias, quietPrompt, type, cyclePrompt} = {}) {
|
function populateChatCompletion (prompts, chatCompletion, {bias, quietPrompt, type, cyclePrompt} = {}) {
|
||||||
|
@ -528,6 +528,16 @@ function populateChatCompletion (prompts, chatCompletion, {bias, quietPrompt, ty
|
||||||
addToChatCompletion('charPersonality');
|
addToChatCompletion('charPersonality');
|
||||||
addToChatCompletion('scenario');
|
addToChatCompletion('scenario');
|
||||||
|
|
||||||
|
// Collection of control prompts that will always be positioned last
|
||||||
|
const controlPrompts = new MessageCollection('controlPrompts');
|
||||||
|
|
||||||
|
// Add quiet prompt to control prompts
|
||||||
|
// This should always be last, even in control prompts. Add all further control prompts BEFORE this prompt
|
||||||
|
const quietPromptMessage = Message.fromPrompt(prompts.get('quietPrompt')) ?? null;
|
||||||
|
if (quietPromptMessage) controlPrompts.addItem(quietPromptMessage);
|
||||||
|
|
||||||
|
chatCompletion.reserveBudget(controlPrompts);
|
||||||
|
|
||||||
// Add main prompt
|
// Add main prompt
|
||||||
if (type === "impersonate") addToChatCompletion('impersonate', 'main');
|
if (type === "impersonate") addToChatCompletion('impersonate', 'main');
|
||||||
else addToChatCompletion('main');
|
else addToChatCompletion('main');
|
||||||
|
@ -550,12 +560,6 @@ function populateChatCompletion (prompts, chatCompletion, {bias, quietPrompt, ty
|
||||||
if (false === chatCompletion.has('nsfw') && oai_settings.nsfw_avoidance_prompt)
|
if (false === chatCompletion.has('nsfw') && oai_settings.nsfw_avoidance_prompt)
|
||||||
if (prompts.has('nsfwAvoidance')) chatCompletion.insert(Message.fromPrompt(prompts.get('nsfwAvoidance')), 'main');
|
if (prompts.has('nsfwAvoidance')) chatCompletion.insert(Message.fromPrompt(prompts.get('nsfwAvoidance')), 'main');
|
||||||
|
|
||||||
// Insert quiet prompt into main
|
|
||||||
if (quietPrompt) {
|
|
||||||
const quietPromptMessage = Message.fromPrompt(prompts.get('quietPrompt'));
|
|
||||||
chatCompletion.insert(quietPromptMessage, 'main');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bias
|
// Bias
|
||||||
if (bias && bias.trim().length) addToChatCompletion('bias');
|
if (bias && bias.trim().length) addToChatCompletion('bias');
|
||||||
|
|
||||||
|
@ -610,6 +614,9 @@ function populateChatCompletion (prompts, chatCompletion, {bias, quietPrompt, ty
|
||||||
populateChatHistory(prompts, chatCompletion, type, cyclePrompt);
|
populateChatHistory(prompts, chatCompletion, type, cyclePrompt);
|
||||||
populateDialogueExamples(prompts, chatCompletion);
|
populateDialogueExamples(prompts, chatCompletion);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
chatCompletion.freeBudget(controlPrompts);
|
||||||
|
if (controlPrompts.collection.length) chatCompletion.add(controlPrompts);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1676,14 +1683,14 @@ class ChatCompletion {
|
||||||
/**
|
/**
|
||||||
* Reserves the tokens required by the given message from the token budget.
|
* Reserves the tokens required by the given message from the token budget.
|
||||||
*
|
*
|
||||||
* @param {Message} message - The message whose tokens to reserve.
|
* @param {Message|MessageCollection} message - The message whose tokens to reserve.
|
||||||
*/
|
*/
|
||||||
reserveBudget(message) { this.decreaseTokenBudgetBy(message.getTokens()) };
|
reserveBudget(message) { this.decreaseTokenBudgetBy(message.getTokens()) };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Frees up the tokens used by the given message from the token budget.
|
* Frees up the tokens used by the given message from the token budget.
|
||||||
*
|
*
|
||||||
* @param {Message} message - The message whose tokens to free.
|
* @param {Message|MessageCollection} message - The message whose tokens to free.
|
||||||
*/
|
*/
|
||||||
freeBudget(message) { this.increaseTokenBudgetBy(message.getTokens()) };
|
freeBudget(message) { this.increaseTokenBudgetBy(message.getTokens()) };
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue