diff --git a/src/lib/ChatScreens/Suggestion.svelte b/src/lib/ChatScreens/Suggestion.svelte index fab8ffdf..153a20b1 100644 --- a/src/lib/ChatScreens/Suggestion.svelte +++ b/src/lib/ChatScreens/Suggestion.svelte @@ -77,16 +77,14 @@ if($DataBase.subModel === "textgen_webui"){ promptbody = [ + ...lastMessages.map(({ role, data }) => ({ + role: role === "user" ? "user" as const : "assistant" as const, + content: data, + })), { role: 'system', content: replacePlaceholders($DataBase.autoSuggestPrompt, currentChar.name) }, - { - role: 'user', - content: lastMessages.map(({ role, data }) => `${ - role === 'char' ? currentChar.name : $DataBase.username - }: ${data}`).join("\n\n") + `\n\n${$DataBase.username}:` - }, ] } diff --git a/src/ts/process/request.ts b/src/ts/process/request.ts index f1fb3ea0..ab8a01aa 100644 --- a/src/ts/process/request.ts +++ b/src/ts/process/request.ts @@ -383,7 +383,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' let blockingUrl = db.textgenWebUIBlockingURL.replace(/\/api.*/, "/api/v1/generate") let bodyTemplate:any const suggesting = model === "submodel" - const proompt = stringlizeChatOba(formated, suggesting) + const proompt = stringlizeChatOba(formated, currentChar.name, suggesting) const stopStrings = getStopStrings(suggesting) console.log(proompt) console.log(stopStrings) diff --git a/src/ts/process/stringlize.ts b/src/ts/process/stringlize.ts index 44919e5e..d65fe79c 100644 --- a/src/ts/process/stringlize.ts +++ b/src/ts/process/stringlize.ts @@ -29,7 +29,7 @@ function appendWhitespace(prefix:string, seperator:string=" ") { } return prefix } -export function stringlizeChatOba(formated:OpenAIChat[], suggesting:boolean=false){ +export function stringlizeChatOba(formated:OpenAIChat[], characterName:string='', suggesting:boolean=false){ const db = get(DataBase) let resultString:string[] = [] let { header, systemPrefix, userPrefix, assistantPrefix, seperator } = db.ooba.formating; @@ -45,21 +45,24 @@ export function stringlizeChatOba(formated:OpenAIChat[], suggesting:boolean=fals continue } let prefix = "" + let name = "" if(form.role === 'user'){ prefix = appendWhitespace(userPrefix, seperator) + name = `${db.username}: ` } else if(form.role === 'assistant'){ prefix = appendWhitespace(assistantPrefix, seperator) + name = `${characterName}: ` } else if(form.role === 'system'){ prefix = appendWhitespace(systemPrefix, seperator) } - resultString.push(prefix + form.content) + resultString.push(prefix + name + form.content) } if (suggesting){ resultString.push(appendWhitespace(assistantPrefix, seperator) + "\n" + db.autoSuggestPrefix) } else { - resultString.push(assistantPrefix) + resultString.push(assistantPrefix + `${characterName}:`) } return resultString.join(seperator) } @@ -81,6 +84,8 @@ export function getStopStrings(suggesting:boolean=false){ "<|end", "<|im_end", userPrefix, + `*${username}'`, + `*${username} `, `\n${username} `, `${username}:`, ] diff --git a/src/ts/storage/defaultPrompts.ts b/src/ts/storage/defaultPrompts.ts index 9cd1da01..0ddf8281 100644 --- a/src/ts/storage/defaultPrompts.ts +++ b/src/ts/storage/defaultPrompts.ts @@ -28,15 +28,5 @@ Out Examples: Let's read these guidelines step by step three times to be sure we have accurately adhered to the rules. ` -export const defaultAutoSuggestPromptOoba = `Write {{user}}'s next responses that meet the following criteria: - -1. The purpose, intention, personality, and tendency must be consistent with the previous conversations. -2. It must contain {{user}}'s response only, NOT {{char}}'s. -3. The responses should be as diverse as feasible while remaining consistent. -4. It could be what {{char}} expects or does NOT expect. -5. It should be interesting and creative while NOT being obvious or boring. -6. It must make the future development and situation more detailed. - -Write 5 possible {{user}}'s next responses in distinct categories. -Write only one {{user}}'s response per line; each line must start with a hyphen '-'.` +export const defaultAutoSuggestPromptOoba = `The responses should be interesting and consistent, rather than dull and repetitive. It should be consistent with the context and as unique as possible. The responses could be what {{char}} expects or does not expect. Write 5 possibilities of {{user}}'s following response per line, each reflecting a different alignment. Each line must be only one independent {{user}}'s response, which starts with a hyphen '-'.` export const defaultAutoSuggestPrefixOoba = `- "`