mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
b09ea054df | ||
|
024784e0b0 | ||
|
329158349f | ||
|
62d5f20590 | ||
|
e420c96e77 | ||
|
7af5a6ee5d | ||
|
e91cbe009f |
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "sillytavern",
|
"name": "sillytavern",
|
||||||
"version": "1.7.0",
|
"version": "1.7.1",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "sillytavern",
|
"name": "sillytavern",
|
||||||
"version": "1.7.0",
|
"version": "1.7.1",
|
||||||
"license": "AGPL-3.0",
|
"license": "AGPL-3.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@dqbd/tiktoken": "^1.0.2",
|
"@dqbd/tiktoken": "^1.0.2",
|
||||||
|
@@ -48,7 +48,7 @@
|
|||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/SillyTavern/SillyTavern.git"
|
"url": "https://github.com/SillyTavern/SillyTavern.git"
|
||||||
},
|
},
|
||||||
"version": "1.7.0",
|
"version": "1.7.1",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node server.js",
|
"start": "node server.js",
|
||||||
"pkg": "pkg --compress Gzip --no-bytecode --public ."
|
"pkg": "pkg --compress Gzip --no-bytecode --public ."
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"order": [1, 0, 3]
|
"order": [1, 0, 3],
|
||||||
"temperature": 1.07,
|
"temperature": 1.07,
|
||||||
"max_length": 60,
|
"max_length": 60,
|
||||||
"min_length": 60,
|
"min_length": 60,
|
||||||
@@ -14,4 +14,4 @@
|
|||||||
"repetition_penalty_frequency": 0,
|
"repetition_penalty_frequency": 0,
|
||||||
"repetition_penalty_presence": 0,
|
"repetition_penalty_presence": 0,
|
||||||
"max_context":2048
|
"max_context":2048
|
||||||
}
|
}
|
||||||
|
@@ -173,7 +173,7 @@ function resetTtsPlayback() {
|
|||||||
|
|
||||||
// Reset audio element
|
// Reset audio element
|
||||||
audioElement.currentTime = 0;
|
audioElement.currentTime = 0;
|
||||||
audioElement.src = '/sounds/silence.mp3';
|
audioElement.src = '';
|
||||||
|
|
||||||
// Clear any queue items
|
// Clear any queue items
|
||||||
ttsJobQueue.splice(0, ttsJobQueue.length);
|
ttsJobQueue.splice(0, ttsJobQueue.length);
|
||||||
@@ -412,7 +412,6 @@ async function processTtsQueue() {
|
|||||||
|
|
||||||
// Remove character name from start of the line if power user setting is disabled
|
// Remove character name from start of the line if power user setting is disabled
|
||||||
if (char && !power_user.allow_name2_display) {
|
if (char && !power_user.allow_name2_display) {
|
||||||
debugger;
|
|
||||||
const escapedChar = escapeRegex(char);
|
const escapedChar = escapeRegex(char);
|
||||||
text = text.replace(new RegExp(`^${escapedChar}:`, 'gm'), '');
|
text = text.replace(new RegExp(`^${escapedChar}:`, 'gm'), '');
|
||||||
}
|
}
|
||||||
@@ -704,26 +703,4 @@ $(document).ready(function () {
|
|||||||
const wrapper = new ModuleWorkerWrapper(moduleWorker);
|
const wrapper = new ModuleWorkerWrapper(moduleWorker);
|
||||||
setInterval(wrapper.update.bind(wrapper), UPDATE_INTERVAL) // Init depends on all the things
|
setInterval(wrapper.update.bind(wrapper), UPDATE_INTERVAL) // Init depends on all the things
|
||||||
eventSource.on(event_types.MESSAGE_SWIPED, resetTtsPlayback);
|
eventSource.on(event_types.MESSAGE_SWIPED, resetTtsPlayback);
|
||||||
|
|
||||||
// Mobiles need to "activate" the Audio element with click before it can be played
|
|
||||||
if (isMobile()) {
|
|
||||||
console.debug('Activating mobile audio element on first click');
|
|
||||||
let audioActivated = false;
|
|
||||||
|
|
||||||
// Play silence on first click
|
|
||||||
$(document).on('click touchend', function () {
|
|
||||||
// Prevent multiple activations
|
|
||||||
if (audioActivated) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
console.debug('Activating audio element...');
|
|
||||||
audioActivated = true;
|
|
||||||
audioElement.src = '/sounds/silence.mp3';
|
|
||||||
// Reset volume to 1
|
|
||||||
audioElement.onended = function () {
|
|
||||||
console.debug('Audio element activated');
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
@@ -213,7 +213,7 @@ function canUseKoboldStopSequence(version) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function canUseKoboldStreaming(koboldVersion) {
|
function canUseKoboldStreaming(koboldVersion) {
|
||||||
if (koboldVersion.result == 'KoboldCpp') {
|
if (koboldVersion && koboldVersion.result == 'KoboldCpp') {
|
||||||
return (koboldVersion.version || '0.0').localeCompare(MIN_STREAMING_KCPPVERSION, undefined, { numeric: true, sensitivity: 'base' }) > -1;
|
return (koboldVersion.version || '0.0').localeCompare(MIN_STREAMING_KCPPVERSION, undefined, { numeric: true, sensitivity: 'base' }) > -1;
|
||||||
} else return false;
|
} else return false;
|
||||||
}
|
}
|
||||||
|
@@ -1490,10 +1490,11 @@ function onModelChange() {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$('#openai_max_context').attr('max', claude_max);
|
$('#openai_max_context').attr('max', claude_max);
|
||||||
oai_settings.openai_max_context = Math.max(oai_settings.openai_max_context, claude_max);
|
|
||||||
$('#openai_max_context').val(oai_settings.openai_max_context).trigger('input');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
oai_settings.openai_max_context = Math.min(oai_settings.openai_max_context, Number($('#openai_max_context').attr('max')));
|
||||||
|
$('#openai_max_context').val(oai_settings.openai_max_context).trigger('input');
|
||||||
|
|
||||||
$('#openai_reverse_proxy').attr('placeholder', 'https://api.anthropic.com/v1');
|
$('#openai_reverse_proxy').attr('placeholder', 'https://api.anthropic.com/v1');
|
||||||
|
|
||||||
oai_settings.temp_openai = Math.min(claude_max_temp, oai_settings.temp_openai);
|
oai_settings.temp_openai = Math.min(claude_max_temp, oai_settings.temp_openai);
|
||||||
@@ -1527,7 +1528,7 @@ function onModelChange() {
|
|||||||
$('#openai_max_context').attr('max', gpt3_max);
|
$('#openai_max_context').attr('max', gpt3_max);
|
||||||
}
|
}
|
||||||
|
|
||||||
oai_settings.openai_max_context = Math.max(Number($('#openai_max_context').val()), oai_settings.openai_max_context);
|
oai_settings.openai_max_context = Math.min(Number($('#openai_max_context').attr('max')), oai_settings.openai_max_context);
|
||||||
$('#openai_max_context').val(oai_settings.openai_max_context).trigger('input');
|
$('#openai_max_context').val(oai_settings.openai_max_context).trigger('input');
|
||||||
|
|
||||||
if (value.includes('claude')) {
|
if (value.includes('claude')) {
|
||||||
@@ -1557,7 +1558,7 @@ function onModelChange() {
|
|||||||
$('#openai_max_context').attr('max', gpt3_max);
|
$('#openai_max_context').attr('max', gpt3_max);
|
||||||
}
|
}
|
||||||
|
|
||||||
oai_settings.openai_max_context = Math.max(oai_settings.openai_max_context, Number($('#openai_max_context').attr('max')));
|
oai_settings.openai_max_context = Math.min(oai_settings.openai_max_context, Number($('#openai_max_context').attr('max')));
|
||||||
$('#openai_max_context').val(oai_settings.openai_max_context).trigger('input');
|
$('#openai_max_context').val(oai_settings.openai_max_context).trigger('input');
|
||||||
|
|
||||||
$('#openai_reverse_proxy').attr('placeholder', 'https://api.openai.com/v1');
|
$('#openai_reverse_proxy').attr('placeholder', 'https://api.openai.com/v1');
|
||||||
|
@@ -263,24 +263,25 @@ async function generatePoe(type, finalPrompt, signal) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const isQuiet = type === 'quiet';
|
const isQuiet = type === 'quiet';
|
||||||
|
const isImpersonate = type === 'impersonate';
|
||||||
let reply = '';
|
let reply = '';
|
||||||
|
|
||||||
if (max_context > POE_TOKEN_LENGTH && poe_settings.bot !== 'a2_100k') {
|
if (max_context > POE_TOKEN_LENGTH && poe_settings.bot !== 'a2_100k') {
|
||||||
console.debug('Prompt is too long, sending in chunks');
|
console.debug('Prompt is too long, sending in chunks');
|
||||||
const result = await sendChunkedMessage(finalPrompt, !isQuiet, signal)
|
const result = await sendChunkedMessage(finalPrompt, !isQuiet, !isQuiet && !isImpersonate, signal)
|
||||||
reply = result.reply;
|
reply = result.reply;
|
||||||
messages_to_purge = result.chunks + 1; // +1 for the reply
|
messages_to_purge = result.chunks + 1; // +1 for the reply
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
console.debug('Sending prompt in one message');
|
console.debug('Sending prompt in one message');
|
||||||
reply = await sendMessage(finalPrompt, !isQuiet, !isQuiet, signal);
|
reply = await sendMessage(finalPrompt, !isQuiet, !isQuiet && !isImpersonate, signal);
|
||||||
messages_to_purge = 2; // prompt and the reply
|
messages_to_purge = 2; // prompt and the reply
|
||||||
}
|
}
|
||||||
|
|
||||||
return reply;
|
return reply;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function sendChunkedMessage(finalPrompt, withStreaming, signal) {
|
async function sendChunkedMessage(finalPrompt, withStreaming, withSuggestions, signal) {
|
||||||
const fastReplyPrompt = '\n[Reply to this message with a full stop only]';
|
const fastReplyPrompt = '\n[Reply to this message with a full stop only]';
|
||||||
const promptChunks = splitRecursive(finalPrompt, CHUNKED_PROMPT_LENGTH - fastReplyPrompt.length);
|
const promptChunks = splitRecursive(finalPrompt, CHUNKED_PROMPT_LENGTH - fastReplyPrompt.length);
|
||||||
console.debug(`Splitting prompt into ${promptChunks.length} chunks`, promptChunks);
|
console.debug(`Splitting prompt into ${promptChunks.length} chunks`, promptChunks);
|
||||||
@@ -291,7 +292,7 @@ async function sendChunkedMessage(finalPrompt, withStreaming, signal) {
|
|||||||
console.debug(`Sending chunk ${i + 1}/${promptChunks.length}: ${promptChunk}`);
|
console.debug(`Sending chunk ${i + 1}/${promptChunks.length}: ${promptChunk}`);
|
||||||
if (i == promptChunks.length - 1) {
|
if (i == promptChunks.length - 1) {
|
||||||
// Extract reply of the last chunk
|
// Extract reply of the last chunk
|
||||||
reply = await sendMessage(promptChunk, withStreaming, true, signal);
|
reply = await sendMessage(promptChunk, withStreaming, withSuggestions, signal);
|
||||||
} else {
|
} else {
|
||||||
// Add fast reply prompt to the chunk
|
// Add fast reply prompt to the chunk
|
||||||
promptChunk += fastReplyPrompt;
|
promptChunk += fastReplyPrompt;
|
||||||
|
Reference in New Issue
Block a user