mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
#1524 Skip stop strings clean-up during streaming
This commit is contained in:
@ -2629,12 +2629,12 @@ class StreamingProcessor {
|
|||||||
|
|
||||||
if (!isImpersonate && !isContinue && Array.isArray(this.swipes) && this.swipes.length > 0) {
|
if (!isImpersonate && !isContinue && Array.isArray(this.swipes) && this.swipes.length > 0) {
|
||||||
for (let i = 0; i < this.swipes.length; i++) {
|
for (let i = 0; i < this.swipes.length; i++) {
|
||||||
this.swipes[i] = cleanUpMessage(this.removePrefix(this.swipes[i]), false, false, true);
|
this.swipes[i] = cleanUpMessage(this.removePrefix(this.swipes[i]), false, false, true, !isFinal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
text = this.removePrefix(text);
|
text = this.removePrefix(text);
|
||||||
let processedText = cleanUpMessage(text, isImpersonate, isContinue, !isFinal);
|
let processedText = cleanUpMessage(text, isImpersonate, isContinue, !isFinal, !isFinal);
|
||||||
|
|
||||||
// Predict unbalanced asterisks / quotes during streaming
|
// Predict unbalanced asterisks / quotes during streaming
|
||||||
const charsToBalance = ['*', '"', '```'];
|
const charsToBalance = ['*', '"', '```'];
|
||||||
@ -2907,7 +2907,7 @@ export async function generateRaw(prompt, api, instructOverride) {
|
|||||||
throw new Error(data.error);
|
throw new Error(data.error);
|
||||||
}
|
}
|
||||||
|
|
||||||
const message = cleanUpMessage(extractMessageFromData(data), false, false, true);
|
const message = cleanUpMessage(extractMessageFromData(data), false, false, true, false);
|
||||||
|
|
||||||
if (!message) {
|
if (!message) {
|
||||||
throw new Error('No message generated');
|
throw new Error('No message generated');
|
||||||
@ -3814,7 +3814,7 @@ async function Generate(type, { automatic_trigger, force_name2, quiet_prompt, qu
|
|||||||
streamingProcessor.generator = streamingGenerator;
|
streamingProcessor.generator = streamingGenerator;
|
||||||
hideSwipeButtons();
|
hideSwipeButtons();
|
||||||
let getMessage = await streamingProcessor.generate();
|
let getMessage = await streamingProcessor.generate();
|
||||||
let messageChunk = cleanUpMessage(getMessage, isImpersonate, isContinue, false);
|
let messageChunk = cleanUpMessage(getMessage, isImpersonate, isContinue, false, false);
|
||||||
|
|
||||||
if (isContinue) {
|
if (isContinue) {
|
||||||
getMessage = continue_mag + getMessage;
|
getMessage = continue_mag + getMessage;
|
||||||
@ -3849,7 +3849,7 @@ async function Generate(type, { automatic_trigger, force_name2, quiet_prompt, qu
|
|||||||
|
|
||||||
const swipes = extractMultiSwipes(data, type);
|
const swipes = extractMultiSwipes(data, type);
|
||||||
|
|
||||||
messageChunk = cleanUpMessage(getMessage, isImpersonate, isContinue, false);
|
messageChunk = cleanUpMessage(getMessage, isImpersonate, isContinue, false, false);
|
||||||
|
|
||||||
if (isContinue) {
|
if (isContinue) {
|
||||||
getMessage = continue_mag + getMessage;
|
getMessage = continue_mag + getMessage;
|
||||||
@ -3857,7 +3857,7 @@ async function Generate(type, { automatic_trigger, force_name2, quiet_prompt, qu
|
|||||||
|
|
||||||
//Formating
|
//Formating
|
||||||
const displayIncomplete = type === 'quiet' && !quietToLoud;
|
const displayIncomplete = type === 'quiet' && !quietToLoud;
|
||||||
getMessage = cleanUpMessage(getMessage, isImpersonate, isContinue, displayIncomplete);
|
getMessage = cleanUpMessage(getMessage, isImpersonate, isContinue, displayIncomplete, false);
|
||||||
|
|
||||||
if (getMessage.length > 0) {
|
if (getMessage.length > 0) {
|
||||||
if (isImpersonate) {
|
if (isImpersonate) {
|
||||||
@ -4487,7 +4487,7 @@ function extractMultiSwipes(data, type) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (let i = 1; i < data.choices.length; i++) {
|
for (let i = 1; i < data.choices.length; i++) {
|
||||||
const text = cleanUpMessage(data.choices[i].text, false, false, false);
|
const text = cleanUpMessage(data.choices[i].text, false, false, false, false);
|
||||||
swipes.push(text);
|
swipes.push(text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4495,7 +4495,7 @@ function extractMultiSwipes(data, type) {
|
|||||||
return swipes;
|
return swipes;
|
||||||
}
|
}
|
||||||
|
|
||||||
function cleanUpMessage(getMessage, isImpersonate, isContinue, displayIncompleteSentences = false) {
|
function cleanUpMessage(getMessage, isImpersonate, isContinue, displayIncompleteSentences = false, skipStopStringCleanup = false) {
|
||||||
if (!getMessage) {
|
if (!getMessage) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
@ -4510,14 +4510,16 @@ function cleanUpMessage(getMessage, isImpersonate, isContinue, displayIncomplete
|
|||||||
getMessage = substituteParams(power_user.user_prompt_bias) + getMessage;
|
getMessage = substituteParams(power_user.user_prompt_bias) + getMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
const stoppingStrings = getStoppingStrings(isImpersonate, isContinue);
|
if (!skipStopStringCleanup) {
|
||||||
|
const stoppingStrings = getStoppingStrings(isImpersonate, isContinue);
|
||||||
|
|
||||||
for (const stoppingString of stoppingStrings) {
|
for (const stoppingString of stoppingStrings) {
|
||||||
if (stoppingString.length) {
|
if (stoppingString.length) {
|
||||||
for (let j = stoppingString.length; j > 0; j--) {
|
for (let j = stoppingString.length; j > 0; j--) {
|
||||||
if (getMessage.slice(-j) === stoppingString.slice(0, j)) {
|
if (getMessage.slice(-j) === stoppingString.slice(0, j)) {
|
||||||
getMessage = getMessage.slice(0, -j);
|
getMessage = getMessage.slice(0, -j);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user