diff --git a/src/lang/en.ts b/src/lang/en.ts
index fc3ce605..c0d2f936 100644
--- a/src/lang/en.ts
+++ b/src/lang/en.ts
@@ -485,4 +485,7 @@ export const languageEnglish = {
exportAsDataset: "Export Save as Dataset",
editTranslationDisplay: "Edit Translation Display",
selectModel: "Select Model",
+ autoRemoveThoughtTag: "Remove Thought Tag",
+ customChainOfThought: "Custom Chain of Thoughts",
+ maxThoughtTagDepth: "Max Thought Tag Depth",
}
\ No newline at end of file
diff --git a/src/lib/Setting/Pages/PromptSettings.svelte b/src/lib/Setting/Pages/PromptSettings.svelte
index b3a3c842..19fa588e 100644
--- a/src/lib/Setting/Pages/PromptSettings.svelte
+++ b/src/lib/Setting/Pages/PromptSettings.svelte
@@ -7,6 +7,7 @@
import { DataBase } from "src/ts/storage/database";
import Check from "src/lib/UI/GUI/CheckInput.svelte";
import TextInput from "src/lib/UI/GUI/TextInput.svelte";
+ import NumberInput from "src/lib/UI/GUI/NumberInput.svelte";
let sorted = 0
let opened = 0
@@ -111,4 +112,9 @@
+
+ {#if $DataBase.proomptSettings.customChainOfThought}
+ {language.maxThoughtTagDepth}
+
+ {/if}
{/if}
\ No newline at end of file
diff --git a/src/lib/UI/ProomptItem.svelte b/src/lib/UI/ProomptItem.svelte
index 9c086107..6a9a0f2d 100644
--- a/src/lib/UI/ProomptItem.svelte
+++ b/src/lib/UI/ProomptItem.svelte
@@ -25,7 +25,7 @@
{language.type}
{
- if(proompt.type === 'plain' || proompt.type === 'jailbreak'){
+ if(proompt.type === 'plain' || proompt.type === 'jailbreak' || proompt.type === 'cot'){
proompt.text = ""
proompt.role = "system"
}
@@ -42,7 +42,9 @@
{language.formating.authorNote}
{language.formating.lorebook}
{language.formating.memory}
-
+ {#if $DataBase.proomptSettings.customChainOfThought}
+ {language.cot}
+ {/if}
{#if proompt.type === 'plain' || proompt.type === 'jailbreak'}
diff --git a/src/ts/process/embedding/transformers.ts b/src/ts/process/embedding/transformers.ts
index 7fef6647..09874b33 100644
--- a/src/ts/process/embedding/transformers.ts
+++ b/src/ts/process/embedding/transformers.ts
@@ -3,7 +3,6 @@ import { unzip } from 'fflate';
import { loadAsset, saveAsset } from 'src/ts/storage/globalApi';
import { selectSingleFile } from 'src/ts/util';
import { v4 } from 'uuid';
-
let tfCache:Cache = null
let tfLoaded = false
let tfMap:{[key:string]:string} = {}
diff --git a/src/ts/process/index.ts b/src/ts/process/index.ts
index 2d85f7ab..95301577 100644
--- a/src/ts/process/index.ts
+++ b/src/ts/process/index.ts
@@ -262,7 +262,7 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
})
}
- if(db.chainOfThought){
+ if(db.chainOfThought && (!(usingPromptTemplate && db.proomptSettings.customChainOfThought))){
unformated.postEverything.push({
role: 'system',
content: ` - before respond everything, Think step by step as a ai assistant how would you respond inside xml tag. this must be less than 5 paragraphs.`
@@ -403,10 +403,14 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
break
}
case 'plain':
- case 'jailbreak':{
+ case 'jailbreak':
+ case 'cot':{
if((!db.jailbreakToggle) && (card.type === 'jailbreak')){
continue
}
+ if((!db.chainOfThought) && (card.type === 'cot')){
+ continue
+ }
const convertRole = {
"system": "system",
@@ -521,8 +525,9 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
currentTokens += triggerResult.tokens
}
+ let index = 0
for(const msg of ms){
- let formedChat = await processScript(nowChatroom,risuChatParser(msg.data, {chara: currentChar, rmVar: true}), 'editprocess')
+ let formatedChat = await processScript(nowChatroom,risuChatParser(msg.data, {chara: currentChar, rmVar: true}), 'editprocess')
let name = ''
if(msg.role === 'char'){
if(msg.saying){
@@ -541,10 +546,10 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
let inlays:string[] = []
if(db.inlayImage){
if(msg.role === 'char'){
- formedChat = formedChat.replace(/{{inlay::(.+?)}}/g, '')
+ formatedChat = formatedChat.replace(/{{inlay::(.+?)}}/g, '')
}
else{
- const inlayMatch = formedChat.match(/{{inlay::(.+?)}}/g)
+ const inlayMatch = formatedChat.match(/{{inlay::(.+?)}}/g)
if(inlayMatch){
for(const inlay of inlayMatch){
inlays.push(inlay)
@@ -568,25 +573,32 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
currentTokens += await tokenizer.tokenizeChat(imgchat)
}
}
- formedChat = formedChat.replace(inlay, '')
+ formatedChat = formatedChat.replace(inlay, '')
}
}
let attr:string[] = []
if(nowChatroom.type === 'group' || (usingPromptTemplate && db.proomptSettings.sendName)){
- formedChat = name + ': ' + formedChat
+ formatedChat = name + ': ' + formatedChat
attr.push('nameAdded')
}
+ if(usingPromptTemplate && db.proomptSettings.customChainOfThought && db.proomptSettings.maxThoughtTagDepth !== -1){
+ const depth = ms.length - index
+ if(depth >= db.proomptSettings.maxThoughtTagDepth){
+ formatedChat = formatedChat.replace(/(.+?)<\/Thoughts>/gm, '')
+ }
+ }
const chat:OpenAIChat = {
role: msg.role === 'user' ? 'user' : 'assistant',
- content: formedChat,
+ content: formatedChat,
memo: msg.chatId,
attr: attr
}
chats.push(chat)
currentTokens += await tokenizer.tokenizeChat(chat)
+ index++
}
if(nowChatroom.supaMemory && db.supaMemoryType !== 'none'){
@@ -762,10 +774,14 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
break
}
case 'plain':
- case 'jailbreak':{
+ case 'jailbreak':
+ case 'cot':{
if((!db.jailbreakToggle) && (card.type === 'jailbreak')){
continue
}
+ if((!db.chainOfThought) && (card.type === 'cot')){
+ continue
+ }
const convertRole = {
"system": "system",
diff --git a/src/ts/process/proompt.ts b/src/ts/process/proompt.ts
index 17d379ce..2c8c8f09 100644
--- a/src/ts/process/proompt.ts
+++ b/src/ts/process/proompt.ts
@@ -8,10 +8,12 @@ export type ProomptSettings = {
sendChatAsSystem: boolean
sendName: boolean
utilOverride: boolean
+ customChainOfThought?: boolean
+ maxThoughtTagDepth?: number
}
export interface ProomptPlain {
- type: 'plain'|'jailbreak';
+ type: 'plain'|'jailbreak'|'cot';
type2: 'normal'|'globalNote'|'main'
text: string;
role: 'user'|'bot'|'system';
diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts
index cfe16ab5..2d12eab3 100644
--- a/src/ts/storage/database.ts
+++ b/src/ts/storage/database.ts
@@ -367,10 +367,13 @@ export function setDatabase(data:Database){
postEndInnerFormat: '',
sendChatAsSystem: false,
sendName: false,
- utilOverride: false
+ utilOverride: false,
+ customChainOfThought: false,
+ maxThoughtTagDepth: -1
}
data.keiServerURL ??= ''
data.top_k ??= 0
+ data.proomptSettings.maxThoughtTagDepth ??= -1
changeLanguage(data.language)
DataBase.set(data)