Merge branch 'staging' of https://github.com/SillyLossy/TavernAI into staging

This commit is contained in:
Cohee
2023-08-14 22:19:17 +03:00
4 changed files with 37 additions and 27 deletions

View File

@ -263,7 +263,7 @@
padding: 1em; padding: 1em;
border: 1px solid #333333; border: 1px solid #333333;
flex-direction: column; flex-direction: column;
z-index: 3010; z-index: 3010 !important;
border-radius: 0 0 20px 20px; border-radius: 0 0 20px 20px;
background-color: var(--SmartThemeBlurTintColor); background-color: var(--SmartThemeBlurTintColor);
} }

View File

@ -1353,13 +1353,19 @@
<div class="range-block m-t-1"> <div class="range-block m-t-1">
<div class="justifyLeft" data-i18n="Main">Main</div> <div class="justifyLeft" data-i18n="Main">Main</div>
<div class="wide100p"> <div class="wide100p">
<textarea id="main_prompt_quick_edit_textarea" class="text_pole textarea_compact" name="impersonation_prompt" rows="6" placeholder=""></textarea> <textarea id="main_prompt_quick_edit_textarea" class="text_pole textarea_compact" name="main_prompt" rows="6" placeholder=""></textarea>
</div>
</div>
<div class="range-block m-t-1">
<div class="justifyLeft" data-i18n="NSFW">NSFW</div>
<div class="wide100p">
<textarea id="nsfw_prompt_quick_edit_textarea" class="text_pole textarea_compact" name="nsfw_prompt" rows="6" placeholder=""></textarea>
</div> </div>
</div> </div>
<div class="range-block m-t-1"> <div class="range-block m-t-1">
<div class="justifyLeft" data-i18n="Jailbreak">Jailbreak</div> <div class="justifyLeft" data-i18n="Jailbreak">Jailbreak</div>
<div class="wide100p"> <div class="wide100p">
<textarea id="jailbreak_prompt_quick_edit_textarea" class="text_pole textarea_compact" rows="6" placeholder=""></textarea> <textarea id="jailbreak_prompt_quick_edit_textarea" class="text_pole textarea_compact" name="jailbreak_prompt" rows="6" placeholder=""></textarea>
</div> </div>
</div> </div>
<div class="range-block" data-source="claude"> <div class="range-block" data-source="claude">

View File

@ -1,4 +1,4 @@
import {callPopup, event_types, eventSource, main_api, substituteParams} from "../script.js"; import {callPopup, event_types, eventSource, main_api, saveSettingsDebounced, substituteParams} from "../script.js";
import {TokenHandler} from "./openai.js"; import {TokenHandler} from "./openai.js";
import {power_user} from "./power-user.js"; import {power_user} from "./power-user.js";
import { debounce } from "./utils.js"; import { debounce } from "./utils.js";
@ -159,6 +159,11 @@ function PromptManagerModule() {
jailbreak: '', jailbreak: '',
enhanceDefinitions: '' enhanceDefinitions: ''
}, },
quickEdit: {
main: '',
nsfw: '',
jailbreak: ''
}
}; };
// Chatcompletion configuration object // Chatcompletion configuration object
@ -303,7 +308,6 @@ PromptManagerModule.prototype.init = function (moduleConfiguration, serviceSetti
}; };
// Factory function for creating quick edit elements // Factory function for creating quick edit elements
const saveSettings = this.saveServiceSettings;
const createQuickEdit = function() { const createQuickEdit = function() {
return { return {
element: null, element: null,
@ -314,7 +318,7 @@ PromptManagerModule.prototype.init = function (moduleConfiguration, serviceSetti
element.value = prompt.content ?? ''; element.value = prompt.content ?? '';
element.addEventListener('input', () => { element.addEventListener('input', () => {
prompt.content = element.value; prompt.content = element.value;
saveSettings(); saveSettingsDebounced()
}); });
return this; return this;
@ -327,11 +331,15 @@ PromptManagerModule.prototype.init = function (moduleConfiguration, serviceSetti
} }
const mainPrompt = this.getPromptById('main'); const mainPrompt = this.getPromptById('main');
const mainPromptTextarea = document.getElementById('main_prompt_quick_edit_textarea'); const mainPromptTextarea = document.getElementById(this.configuration.quickEdit.main);
const mainQuickEdit = createQuickEdit().from(mainPromptTextarea, mainPrompt); const mainQuickEdit = createQuickEdit().from(mainPromptTextarea, mainPrompt);
const nsfwPrompt = this.getPromptById('nsfw');
const nsfwPromptTextarea = document.getElementById(this.configuration.quickEdit.nsfw);
const nsfwQuickEdit = createQuickEdit().from(nsfwPromptTextarea, nsfwPrompt);
const jailbreakPrompt = this.getPromptById('jailbreak'); const jailbreakPrompt = this.getPromptById('jailbreak');
const jailbreakPromptTextarea = document.getElementById('jailbreak_prompt_quick_edit_textarea'); const jailbreakPromptTextarea = document.getElementById(this.configuration.quickEdit.jailbreak);
const jailbreakQuickEdit = createQuickEdit().from(jailbreakPromptTextarea, jailbreakPrompt); const jailbreakQuickEdit = createQuickEdit().from(jailbreakPromptTextarea, jailbreakPrompt);
// Save prompt edit form to settings and close form. // Save prompt edit form to settings and close form.
@ -347,8 +355,9 @@ PromptManagerModule.prototype.init = function (moduleConfiguration, serviceSetti
this.updatePromptWithPromptEditForm(prompt); this.updatePromptWithPromptEditForm(prompt);
} }
if ('main' === promptId) mainQuickEdit.update(prompt.content) if ('main' === promptId) mainQuickEdit.update(prompt.content);
if ('jailbreak' === promptId) jailbreakQuickEdit.update(prompt.content) if ('nsfw' === promptId) nsfwQuickEdit.update(prompt.content);
if ('jailbreak' === promptId) jailbreakQuickEdit.update(prompt.content);
this.log('Saved prompt: ' + promptId); this.log('Saved prompt: ' + promptId);

View File

@ -348,6 +348,11 @@ function setupChatCompletionPromptManager(openAiSettings) {
jailbreak: default_jailbreak_prompt, jailbreak: default_jailbreak_prompt,
enhanceDefinitions: default_enhance_definitions_prompt enhanceDefinitions: default_enhance_definitions_prompt
}, },
quickEdit: {
main: 'main_prompt_quick_edit_textarea',
nsfw: 'nsfw_prompt_quick_edit_textarea',
jailbreak: 'jailbreak_prompt_quick_edit_textarea'
}
}; };
promptManager.saveServiceSettings = () => { promptManager.saveServiceSettings = () => {
@ -726,33 +731,23 @@ function preparePromptsForChatCompletion(Scenario, charPersonality, name2, world
// Apply character-specific main prompt // Apply character-specific main prompt
const systemPromptOverride = promptManager.activeCharacter.data?.system_prompt ?? null; const systemPromptOverride = promptManager.activeCharacter.data?.system_prompt ?? null;
const systemPrompt = prompts.get('main') ?? null; const systemPrompt = prompts.get('main') ?? null;
if (systemPromptOverride) { if (systemPromptOverride && systemPrompt) {
const mainOriginalContent = systemPrompt.content;
systemPrompt.content = systemPromptOverride; systemPrompt.content = systemPromptOverride;
prompts.set(systemPrompt, prompts.index('main')); const mainReplacement = promptManager.preparePrompt(systemPrompt, mainOriginalContent);
prompts.set(mainReplacement, prompts.index('main'));
} }
// Apply character-specific jailbreak // Apply character-specific jailbreak
const jailbreakPromptOverride = promptManager.activeCharacter.data?.post_history_instructions ?? null; const jailbreakPromptOverride = promptManager.activeCharacter.data?.post_history_instructions ?? null;
const jailbreakPrompt = prompts.get('jailbreak') ?? null; const jailbreakPrompt = prompts.get('jailbreak') ?? null;
if (jailbreakPromptOverride && jailbreakPrompt) { if (jailbreakPromptOverride && jailbreakPrompt) {
const jbOriginalContent = jailbreakPrompt.content;
jailbreakPrompt.content = jailbreakPromptOverride; jailbreakPrompt.content = jailbreakPromptOverride;
prompts.set(jailbreakPrompt, prompts.index('jailbreak')); const jbReplacement = promptManager.preparePrompt(jailbreakPrompt, jbOriginalContent);
prompts.set(jbReplacement, prompts.index('jailbreak'));
} }
// Replace {{original}} placeholder for supported prompts
const originalReplacements = {
main: default_main_prompt,
nsfw: default_nsfw_prompt,
jailbreak: default_jailbreak_prompt
}
prompts.collection.forEach(prompt => {
if (originalReplacements.hasOwnProperty(prompt.identifier)) {
const original = originalReplacements[prompt.identifier];
prompt.content = promptManager.preparePrompt(prompt, original)?.content;
}
});
// Allow subscribers to manipulate the prompts object // Allow subscribers to manipulate the prompts object
eventSource.emit(event_types.OAI_BEFORE_CHATCOMPLETION, prompts); eventSource.emit(event_types.OAI_BEFORE_CHATCOMPLETION, prompts);