mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Move Poe nudges to Generate anchors appendage
This commit is contained in:
@ -945,7 +945,7 @@
|
|||||||
Influences bot behavior in its responses.
|
Influences bot behavior in its responses.
|
||||||
</div>
|
</div>
|
||||||
<div class="wide100p">
|
<div class="wide100p">
|
||||||
<textarea id="poe_nudge_text" class="text_pole textarea_compact" rows="6" maxlength="250"></textarea>
|
<textarea id="poe_nudge_text" class="text_pole textarea_compact" rows="6" maxlength="2500"></textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="range-block">
|
<div class="range-block">
|
||||||
@ -959,7 +959,7 @@
|
|||||||
Prompt that is used for Impersonation function
|
Prompt that is used for Impersonation function
|
||||||
</div>
|
</div>
|
||||||
<div class="wide100p">
|
<div class="wide100p">
|
||||||
<textarea id="poe_impersonation_prompt" class="text_pole textarea_compact" rows="6" maxlength="250"></textarea>
|
<textarea id="poe_impersonation_prompt" class="text_pole textarea_compact" rows="6" maxlength="2500"></textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -105,6 +105,7 @@ import {
|
|||||||
generatePoe,
|
generatePoe,
|
||||||
is_get_status_poe,
|
is_get_status_poe,
|
||||||
setPoeOnlineStatus,
|
setPoeOnlineStatus,
|
||||||
|
appendPoeAnchors,
|
||||||
} from "./scripts/poe.js";
|
} from "./scripts/poe.js";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@ -1901,11 +1902,17 @@ async function Generate(type, { automatic_trigger, force_name2, resolve, reject,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Extension added strings
|
// Extension added strings
|
||||||
const allAnchors = getAllExtensionPrompts();
|
let allAnchors = getAllExtensionPrompts();
|
||||||
const afterScenarioAnchor = getExtensionPrompt(extension_prompt_types.AFTER_SCENARIO);
|
const afterScenarioAnchor = getExtensionPrompt(extension_prompt_types.AFTER_SCENARIO);
|
||||||
let zeroDepthAnchor = getExtensionPrompt(extension_prompt_types.IN_CHAT, 0, ' ');
|
let zeroDepthAnchor = getExtensionPrompt(extension_prompt_types.IN_CHAT, 0, ' ');
|
||||||
let { worldInfoString, worldInfoBefore, worldInfoAfter } = getWorldInfoPrompt(chat2);
|
let { worldInfoString, worldInfoBefore, worldInfoAfter } = getWorldInfoPrompt(chat2);
|
||||||
|
|
||||||
|
// Moved here to not overflow the Poe context with added prompt bits
|
||||||
|
if (main_api == 'poe') {
|
||||||
|
allAnchors = appendPoeAnchors(type, allAnchors);
|
||||||
|
zeroDepthAnchor = appendPoeAnchors(type, zeroDepthAnchor);
|
||||||
|
}
|
||||||
|
|
||||||
// hack for regeneration of the first message
|
// hack for regeneration of the first message
|
||||||
if (chat2.length == 0) {
|
if (chat2.length == 0) {
|
||||||
chat2.push('');
|
chat2.push('');
|
||||||
|
@ -86,6 +86,23 @@ function onBotChange() {
|
|||||||
saveSettingsDebounced();
|
saveSettingsDebounced();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function appendPoeAnchors(type, prompt) {
|
||||||
|
const isImpersonate = type === 'impersonate';
|
||||||
|
const isQuiet = type === 'quiet';
|
||||||
|
|
||||||
|
if (poe_settings.character_nudge && !isQuiet && !isImpersonate) {
|
||||||
|
let characterNudge = '\n' + substituteParams(poe_settings.character_nudge_message);
|
||||||
|
prompt += characterNudge;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (poe_settings.impersonation_prompt && isImpersonate) {
|
||||||
|
let impersonationNudge = '\n' + substituteParams(poe_settings.impersonation_prompt);
|
||||||
|
prompt += impersonationNudge;
|
||||||
|
}
|
||||||
|
|
||||||
|
return prompt;
|
||||||
|
}
|
||||||
|
|
||||||
async function generatePoe(type, finalPrompt, signal) {
|
async function generatePoe(type, finalPrompt, signal) {
|
||||||
if (poe_settings.auto_purge) {
|
if (poe_settings.auto_purge) {
|
||||||
let count_to_delete = -1;
|
let count_to_delete = -1;
|
||||||
@ -115,28 +132,7 @@ async function generatePoe(type, finalPrompt, signal) {
|
|||||||
console.log('Could not jailbreak the bot');
|
console.log('Could not jailbreak the bot');
|
||||||
}
|
}
|
||||||
|
|
||||||
const isImpersonate = type === 'impersonate';
|
|
||||||
const isQuiet = type === 'quiet';
|
const isQuiet = type === 'quiet';
|
||||||
|
|
||||||
if (poe_settings.character_nudge && !isQuiet && !isImpersonate) {
|
|
||||||
let characterNudge = '\n' + substituteParams(poe_settings.character_nudge_message);
|
|
||||||
finalPrompt += characterNudge;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (poe_settings.impersonation_prompt && isImpersonate) {
|
|
||||||
let impersonationNudge = '\n' + substituteParams(poe_settings.impersonation_prompt);
|
|
||||||
finalPrompt += impersonationNudge;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If prompt overflows the max context, reduce it (or the generation would fail)
|
|
||||||
// Split by sentence boundary and remove sentence-by-sentence from the beginning
|
|
||||||
while (getTokenCount(finalPrompt) > max_context) {
|
|
||||||
const sentences = finalPrompt.split(/([.?!])\s+/);
|
|
||||||
const removed = sentences.shift();
|
|
||||||
console.log(`Reducing Poe context due to overflow. Sentence dropped from prompt: "${removed}"`);
|
|
||||||
finalPrompt = sentences.join('');
|
|
||||||
}
|
|
||||||
|
|
||||||
const reply = await sendMessage(finalPrompt, !isQuiet, signal);
|
const reply = await sendMessage(finalPrompt, !isQuiet, signal);
|
||||||
got_reply = true;
|
got_reply = true;
|
||||||
return reply;
|
return reply;
|
||||||
|
Reference in New Issue
Block a user