This commit is contained in:
RossAscends
2023-04-17 14:44:30 +09:00
5 changed files with 45 additions and 25 deletions

View File

@ -128,6 +128,8 @@ export {
getTokenCount, getTokenCount,
isStreamingEnabled, isStreamingEnabled,
getThumbnailUrl, getThumbnailUrl,
getStoppingStrings,
getStatus,
chat, chat,
this_chid, this_chid,
settings, settings,
@ -1013,10 +1015,11 @@ function substituteParams(content, _name1, _name2) {
return content; return content;
} }
function getStoppingStrings(isImpersonate) { function getStoppingStrings(isImpersonate, wrapInQuotes) {
const charString = `"\n${name2}: "`; const charString = `\n${name2}: `;
const userString = is_pygmalion ? `"\nYou: "` : `"\n${name1}: "`; const userString = is_pygmalion ? `\nYou: ` : `\n${name1}: `;
return isImpersonate ? charString : userString; const result = isImpersonate ? charString : userString;
return wrapInQuotes ? `"${result}"` : result;
} }
function getSlashCommand(message, type) { function getSlashCommand(message, type) {
@ -1862,7 +1865,7 @@ async function Generate(type, automatic_trigger, force_name2) {
}; };
if (preset_settings != 'gui' || horde_settings.use_horde) { if (preset_settings != 'gui' || horde_settings.use_horde) {
generate_data = getKoboldGenerationData(finalPromt, this_settings, this_amount_gen, this_max_context); generate_data = getKoboldGenerationData(finalPromt, this_settings, this_amount_gen, this_max_context, isImpersonate);
} }
} }
@ -1886,7 +1889,7 @@ async function Generate(type, automatic_trigger, force_name2) {
'early_stopping': textgenerationwebui_settings.early_stopping, 'early_stopping': textgenerationwebui_settings.early_stopping,
'seed': textgenerationwebui_settings.seed, 'seed': textgenerationwebui_settings.seed,
'add_bos_token': textgenerationwebui_settings.add_bos_token, 'add_bos_token': textgenerationwebui_settings.add_bos_token,
'custom_stopping_strings': JSON.stringify(getStoppingStrings(isImpersonate)), 'custom_stopping_strings': JSON.stringify(getStoppingStrings(isImpersonate, false)),
'truncation_length': max_context, 'truncation_length': max_context,
'ban_eos_token': textgenerationwebui_settings.ban_eos_token, 'ban_eos_token': textgenerationwebui_settings.ban_eos_token,
'skip_special_tokens': textgenerationwebui_settings.skip_special_tokens, 'skip_special_tokens': textgenerationwebui_settings.skip_special_tokens,

View File

@ -38,6 +38,7 @@ const DEFAULT_EXPRESSIONS = [
let expressionsList = null; let expressionsList = null;
let lastCharacter = undefined; let lastCharacter = undefined;
let lastMessage = null; let lastMessage = null;
let existingExpressions = [];
let inApiCall = false; let inApiCall = false;
function onExpressionsShowDefaultInput() { function onExpressionsShowDefaultInput() {
@ -96,11 +97,16 @@ async function moduleWorker() {
$('.expression_settings .offline_mode').css('display', 'none'); $('.expression_settings .offline_mode').css('display', 'none');
} }
// character has no expressions or it is not loaded
if (!context.groupId && existingExpressions.length === 0) {
lastCharacter = context.groupId || context.characterId;
return;
}
// check if last message changed // check if last message changed
const currentLastMessage = getLastCharacterMessage(); const currentLastMessage = getLastCharacterMessage();
if ((lastCharacter === context.characterId || lastCharacter === context.groupId) if ((lastCharacter === context.characterId || lastCharacter === context.groupId)
&& lastMessage === currentLastMessage.mes && lastMessage === currentLastMessage.mes) {
&& $('img.expression').attr('src')) {
return; return;
} }
@ -163,6 +169,7 @@ async function validateImages() {
} }
imagesValidating = true; imagesValidating = true;
existingExpressions = [];
const context = getContext(); const context = getContext();
$('.expression_settings').show(); $('.expression_settings').show();
$('#image_list').empty(); $('#image_list').empty();
@ -172,18 +179,19 @@ async function validateImages() {
return; return;
} }
const IMAGE_LIST = (await getExpressionsList()).map(x => `${x}.png`); const IMAGE_LIST = (await getExpressionsList()).map(x => ({ name: x, file: `${x}.png` }));
IMAGE_LIST.forEach((item) => { IMAGE_LIST.forEach((item) => {
const image = document.createElement('img'); const image = document.createElement('img');
image.src = `/characters/${context.name2}/${item}`; image.src = `/characters/${context.name2}/${item.file}`;
image.classList.add('debug-image'); image.classList.add('debug-image');
image.width = '0px'; image.width = '0px';
image.height = '0px'; image.height = '0px';
image.onload = function () { image.onload = function () {
$('#image_list').append(getListItem(item, image.src, 'success')); existingExpressions.push(item.name);
$('#image_list').append(getListItem(item.file, image.src, 'success'));
} }
image.onerror = function () { image.onerror = function () {
$('#image_list').append(getListItem(item, '/img/No-Image-Placeholder.svg', 'failure')); $('#image_list').append(getListItem(item.file, '/img/No-Image-Placeholder.svg', 'failure'));
} }
$('#image_list').prepend(image); $('#image_list').prepend(image);
}); });
@ -232,29 +240,33 @@ async function getExpressionsList() {
async function setExpression(character, expression, force) { async function setExpression(character, expression, force) {
const filename = `${expression}.png`; const filename = `${expression}.png`;
const debugImageStatus = document.querySelector(`#image_list div[id="${filename}"] span`);
const img = $('img.expression'); const img = $('img.expression');
if (!debugImageStatus && !force) { if (force || (existingExpressions.includes(expression))) {
validateImages();
setTimeout(() => setExpression(character, expression, false), 2000);
return;
}
if (force || (debugImageStatus && !debugImageStatus.classList.contains('failure'))) {
//console.log('setting expression from character images folder'); //console.log('setting expression from character images folder');
const imgUrl = `/characters/${character}/${filename}`; const imgUrl = `/characters/${character}/${filename}`;
img.attr('src', imgUrl); img.attr('src', imgUrl);
img.removeClass('default'); img.removeClass('default');
img.off('error');
img.on('error', function() {
$(this).attr('src', '');
if (force && extension_settings.expressions.showDefault) {
setDefault();
}
});
} else { } else {
if (extension_settings.expressions.showDefault) { if (extension_settings.expressions.showDefault) {
//console.log('no character images, trying default expressions'); //console.log('no character images, trying default expressions');
const defImgUrl = `/img/default-expressions/${filename}`; setDefault();
//console.log(defImgUrl);
img.attr('src', defImgUrl);
img.addClass('default');
} }
} }
function setDefault() {
const defImgUrl = `/img/default-expressions/${filename}`;
//console.log(defImgUrl);
img.attr('src', defImgUrl);
img.addClass('default');
}
} }
function onClickExpressionImage() { function onClickExpressionImage() {

View File

@ -1,5 +1,6 @@
import { import {
saveSettingsDebounced, saveSettingsDebounced,
getStoppingStrings,
} from "../script.js"; } from "../script.js";
export { export {
@ -55,7 +56,7 @@ function loadKoboldSettings(preset) {
} }
} }
function getKoboldGenerationData(finalPromt, this_settings, this_amount_gen, this_max_context) { function getKoboldGenerationData(finalPromt, this_settings, this_amount_gen, this_max_context, isImpersonate) {
let generate_data = { let generate_data = {
prompt: finalPromt, prompt: finalPromt,
gui_settings: false, gui_settings: false,
@ -80,6 +81,7 @@ function getKoboldGenerationData(finalPromt, this_settings, this_amount_gen, thi
s7: this_settings.sampler_order[6], s7: this_settings.sampler_order[6],
use_world_info: false, use_world_info: false,
singleline: kai_settings.single_line, singleline: kai_settings.single_line,
stop_sequence: [getStoppingStrings(isImpersonate, false)],
}; };
return generate_data; return generate_data;
} }

View File

@ -4,6 +4,7 @@ import {
characters, characters,
callPopup, callPopup,
token, token,
getStatus,
} from "../script.js"; } from "../script.js";
import { delay } from "./utils.js"; import { delay } from "./utils.js";
@ -345,6 +346,7 @@ $(document).ready(() => {
$("#pygmalion_formatting").change(function (e) { $("#pygmalion_formatting").change(function (e) {
power_user.pygmalion_formatting = Number($(this).find(":selected").val()); power_user.pygmalion_formatting = Number($(this).find(":selected").val());
getStatus();
saveSettingsDebounced(); saveSettingsDebounced();
}); });

View File

@ -270,6 +270,7 @@ app.post("/generate", jsonParser, async function (request, response_generate = r
typical: request.body.typical, typical: request.body.typical,
sampler_order: sampler_order, sampler_order: sampler_order,
singleline: !!request.body.singleline, singleline: !!request.body.singleline,
stop_sequence: request.body.stop_sequence || [],
}; };
} }