Add world info support for OAI. Fix regens

This commit is contained in:
SillyLossy
2023-03-22 01:16:16 +02:00
parent edab2e84b9
commit 7cce26bd22
3 changed files with 29 additions and 18 deletions

View File

@ -16,7 +16,7 @@ import {
world_info_data, world_info_data,
world_info_depth, world_info_depth,
world_info, world_info,
checkWorldInfo, getWorldInfoPrompt,
selectImportedWorldInfo, selectImportedWorldInfo,
setWorldInfoSettings, setWorldInfoSettings,
deleteWorldInfo, deleteWorldInfo,
@ -55,7 +55,8 @@ import {
setOpenAIOnlineStatus, setOpenAIOnlineStatus,
generateOpenAIPromptCache, generateOpenAIPromptCache,
oai_settings, oai_settings,
is_get_status_openai is_get_status_openai,
openai_msgs,
} from "./scripts/openai.js"; } from "./scripts/openai.js";
import { import {
@ -900,18 +901,6 @@ function getExtensionPrompt() {
return extension_prompt; return extension_prompt;
} }
function getWorldInfoPrompt(chat2) {
let worldInfoString = "", worldInfoBefore = "", worldInfoAfter = "";
if (world_info && world_info_data) {
const activatedWorldInfo = checkWorldInfo(chat2);
worldInfoBefore = activatedWorldInfo.worldInfoBefore;
worldInfoAfter = activatedWorldInfo.worldInfoAfter;
worldInfoString = worldInfoBefore + worldInfoAfter;
}
return { worldInfoString, worldInfoBefore, worldInfoAfter };
}
function baseChatReplace(value, name1, name2) { function baseChatReplace(value, name1, name2) {
if (value !== undefined && value.length > 0) { if (value !== undefined && value.length > 0) {
if (is_pygmalion) { if (is_pygmalion) {
@ -1461,7 +1450,7 @@ async function Generate(type, automatic_trigger, force_name2) {//encode("dsfs").
if (main_api == 'openai') { if (main_api == 'openai') {
let prompt = prepareOpenAIMessages(name2, storyString); let prompt = prepareOpenAIMessages(name2, storyString, worldInfoBefore, worldInfoAfter, extension_prompt);
sendOpenAIRequest(prompt).then(onSuccess).catch(onError); sendOpenAIRequest(prompt).then(onSuccess).catch(onError);
} }
else { else {

View File

@ -163,7 +163,16 @@ function parseExampleIntoIndividual(messageExampleString) {
return result; return result;
} }
function prepareOpenAIMessages(name2, storyString) { function formatWorldInfo(value) {
if (!value) {
return '';
}
// placeholder if we would want to apply some formatting
return `[Details of the fictional world the RP set in:\n${value}\n]`;
}
function prepareOpenAIMessages(name2, storyString, worldInfoBefore, worldInfoAfter, extensionPrompt) {
let this_max_context = oai_settings.openai_max_context; let this_max_context = oai_settings.openai_max_context;
let nsfw_toggle_prompt = ""; let nsfw_toggle_prompt = "";
let enhance_definitions_prompt = ""; let enhance_definitions_prompt = "";
@ -181,10 +190,10 @@ function prepareOpenAIMessages(name2, storyString) {
let whole_prompt = []; let whole_prompt = [];
// If it's toggled, NSFW prompt goes first. // If it's toggled, NSFW prompt goes first.
if (oai_settings.nsfw_first) { if (oai_settings.nsfw_first) {
whole_prompt = [nsfw_toggle_prompt, oai_settings.main_prompt, enhance_definitions_prompt, "\n\n", storyString] whole_prompt = [nsfw_toggle_prompt, oai_settings.main_prompt, enhance_definitions_prompt, "\n\n", formatWorldInfo(worldInfoBefore), storyString, formatWorldInfo(worldInfoAfter), extensionPrompt]
} }
else { else {
whole_prompt = [oai_settings.main_prompt, nsfw_toggle_prompt, enhance_definitions_prompt, "\n\n", storyString] whole_prompt = [oai_settings.main_prompt, nsfw_toggle_prompt, enhance_definitions_prompt, "\n\n", formatWorldInfo(worldInfoBefore), storyString, formatWorldInfo(worldInfoAfter), extensionPrompt]
} }
// Join by a space and replace placeholders with real user/char names // Join by a space and replace placeholders with real user/char names

View File

@ -13,6 +13,7 @@ export {
deleteWorldInfo, deleteWorldInfo,
selectImportedWorldInfo, selectImportedWorldInfo,
setWorldInfoSettings, setWorldInfoSettings,
getWorldInfoPrompt,
} }
let world_info = null; let world_info = null;
@ -30,6 +31,18 @@ const world_info_position = {
after: 1, after: 1,
}; };
function getWorldInfoPrompt(chat2) {
let worldInfoString = "", worldInfoBefore = "", worldInfoAfter = "";
if (world_info && world_info_data) {
const activatedWorldInfo = checkWorldInfo(chat2);
worldInfoBefore = activatedWorldInfo.worldInfoBefore;
worldInfoAfter = activatedWorldInfo.worldInfoAfter;
worldInfoString = worldInfoBefore + worldInfoAfter;
}
return { worldInfoString, worldInfoBefore, worldInfoAfter };
}
function setWorldInfoSettings(settings, data) { function setWorldInfoSettings(settings, data) {
if (settings.world_info_depth !== undefined) if (settings.world_info_depth !== undefined)
world_info_depth = Number(settings.world_info_depth); world_info_depth = Number(settings.world_info_depth);