From 8ac8e2f7ff59b08b1fdf0bf60b6a55d849b2fa14 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Mon, 18 Dec 2023 07:05:04 +0900 Subject: [PATCH] [feat] cot --- src/lib/ChatScreens/Chat.svelte | 2 +- src/lib/Setting/Pages/AdvancedSettings.svelte | 5 ++++ src/ts/parser.ts | 29 +++++++++++++++++++ src/ts/process/index.ts | 7 +++++ src/ts/storage/database.ts | 1 + 5 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/lib/ChatScreens/Chat.svelte b/src/lib/ChatScreens/Chat.svelte index 5084df25..9d973bce 100644 --- a/src/lib/ChatScreens/Chat.svelte +++ b/src/lib/ChatScreens/Chat.svelte @@ -60,7 +60,7 @@ } function displaya(message:string){ - msgDisplay = risuChatParser(message, {chara: name, chatID: idx, rmVar: true}) + msgDisplay = risuChatParser(message, {chara: name, chatID: idx, rmVar: true, visualize: true}) } const setStatusMessage = (message:string, timeout:number = 0)=>{ diff --git a/src/lib/Setting/Pages/AdvancedSettings.svelte b/src/lib/Setting/Pages/AdvancedSettings.svelte index d6f6bdec..5d26f02f 100644 --- a/src/lib/Setting/Pages/AdvancedSettings.svelte +++ b/src/lib/Setting/Pages/AdvancedSettings.svelte @@ -89,6 +89,11 @@ +
+ + + +
{ // access code is "tendo" diff --git a/src/ts/parser.ts b/src/ts/parser.ts index 79f47ecd..43a2f716 100644 --- a/src/ts/parser.ts +++ b/src/ts/parser.ts @@ -766,10 +766,12 @@ export function risuChatParser(da:string, arg:{ var?:{[key:string]:string} tokenizeAccurate?:boolean consistantChar?:boolean + visualize?:boolean } = {}):string{ const chatID = arg.chatID ?? -1 const db = arg.db ?? get(DataBase) const aChara = arg.chara + const visualize = arg.visualize ?? false let chara:character|string = null if(aChara){ @@ -880,6 +882,33 @@ export function risuChatParser(da:string, arg:{ } break } + case 'Thoughts':{ + if(!visualize){ + nested[0] += `<${dat}>` + break + } + if(!commentMode){ + commentMode = true + commentLatest = nested.map((f) => f) + if(commentLatest[0].endsWith('\n')){ + commentLatest[0] = commentLatest[0].substring(0, commentLatest[0].length - 1) + } + commentV = new Uint8Array(v) + } + break + } + case '/Thoughts':{ + if(!visualize){ + nested[0] += `<${dat}>` + break + } + if(commentMode){ + nested = commentLatest + v = commentV + commentMode = false + } + break + } default:{ const mc = (pureMode) ? null : smMatcher(dat, matcherObj) nested[0] += mc ?? `<${dat}>` diff --git a/src/ts/process/index.ts b/src/ts/process/index.ts index 7d8946f5..56683414 100644 --- a/src/ts/process/index.ts +++ b/src/ts/process/index.ts @@ -259,6 +259,13 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n }) } + if(db.chainOfThought){ + unformated.postEverything.push({ + role: 'system', + content: `before responding everything, Think step by step how would you respond inside xml tag.` + }) + } + { let description = risuChatParser((db.promptPreprocess ? db.descriptionPrefix: '') + currentChar.desc, {chara: currentChar}) diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts index 17d436e4..3613d15f 100644 --- a/src/ts/storage/database.ts +++ b/src/ts/storage/database.ts @@ -560,6 +560,7 @@ export interface Database{ projectId: string } mistralKey?:string + chainOfThought?:boolean } export interface customscript{