Add claudeRetrivalCaching
This commit is contained in:
@@ -2,6 +2,7 @@ import { runTrigger } from "./process/triggers";
|
|||||||
import { sleep } from "./util";
|
import { sleep } from "./util";
|
||||||
import { getCurrentCharacter, getCurrentChat, setCurrentChat } from "./storage/database.svelte";
|
import { getCurrentCharacter, getCurrentChat, setCurrentChat } from "./storage/database.svelte";
|
||||||
import { runLuaButtonTrigger } from "./process/lua";
|
import { runLuaButtonTrigger } from "./process/lua";
|
||||||
|
import { globalFetch } from "./globalApi.svelte";
|
||||||
|
|
||||||
let bgmElement:HTMLAudioElement|null = null;
|
let bgmElement:HTMLAudioElement|null = null;
|
||||||
|
|
||||||
@@ -129,4 +130,52 @@ export async function startObserveDom(){
|
|||||||
document.querySelectorAll('[risu-trigger], [risu-btn], [x-hl-lang], [risu-ctrl]').forEach(nodeObserve);
|
document.querySelectorAll('[risu-trigger], [risu-btn], [x-hl-lang], [risu-ctrl]').forEach(nodeObserve);
|
||||||
await sleep(100);
|
await sleep(100);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
let claudeObserverRunning = false;
|
||||||
|
let lastClaudeObserverLoad = 0;
|
||||||
|
let lastClaudeRequestTimes = 0;
|
||||||
|
let lastClaudeObserverPayload:any = null;
|
||||||
|
let lastClaudeObserverHeaders:any = null;
|
||||||
|
let lastClaudeObserverURL:any = null;
|
||||||
|
|
||||||
|
export async function registerClaudeObserver(arg:{
|
||||||
|
url:string,
|
||||||
|
body:any,
|
||||||
|
headers:any,
|
||||||
|
}) {
|
||||||
|
lastClaudeRequestTimes = 0;
|
||||||
|
lastClaudeObserverLoad = Date.now();
|
||||||
|
lastClaudeObserverPayload = safeStructuredClone(arg.body)
|
||||||
|
lastClaudeObserverHeaders = arg.headers;
|
||||||
|
lastClaudeObserverURL = arg.url;
|
||||||
|
lastClaudeObserverPayload.max_tokens = 10;
|
||||||
|
claudeObserver()
|
||||||
|
}
|
||||||
|
|
||||||
|
async function claudeObserver(){
|
||||||
|
if(claudeObserverRunning){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
claudeObserverRunning = true;
|
||||||
|
const func = async ()=>{
|
||||||
|
//request every 4 minutes and 30 seconds
|
||||||
|
if(lastClaudeObserverLoad > Date.now() - 1000 * 60 * 4.5){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if(lastClaudeRequestTimes > 4){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const res = globalFetch(lastClaudeObserverURL, {
|
||||||
|
body: lastClaudeObserverPayload,
|
||||||
|
headers: lastClaudeObserverHeaders,
|
||||||
|
method: "POST"
|
||||||
|
})
|
||||||
|
lastClaudeObserverLoad = Date.now();
|
||||||
|
lastClaudeRequestTimes += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
setInterval(func, 20000)
|
||||||
}
|
}
|
||||||
@@ -21,6 +21,7 @@ import { OobaParams } from "./prompt";
|
|||||||
import { extractJSON, getGeneralJSONSchema, getOpenAIJSONSchema } from "./templates/jsonSchema";
|
import { extractJSON, getGeneralJSONSchema, getOpenAIJSONSchema } from "./templates/jsonSchema";
|
||||||
import { getModelInfo, LLMFlags, LLMFormat, type LLMModel } from "../model/modellist";
|
import { getModelInfo, LLMFlags, LLMFormat, type LLMModel } from "../model/modellist";
|
||||||
import { runTrigger } from "./triggers";
|
import { runTrigger } from "./triggers";
|
||||||
|
import { registerClaudeObserver } from "../observer.svelte";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -2823,6 +2824,15 @@ async function requestClaude(arg:RequestDataArgumentExtended):Promise<requestDat
|
|||||||
headers['anthropic-dangerous-direct-browser-access'] = 'true'
|
headers['anthropic-dangerous-direct-browser-access'] = 'true'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(db.claudeRetrivalCaching){
|
||||||
|
registerClaudeObserver({
|
||||||
|
url: replacerURL,
|
||||||
|
body: body,
|
||||||
|
headers: headers
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
if(useStreaming){
|
if(useStreaming){
|
||||||
|
|
||||||
const res = await fetchNative(replacerURL, {
|
const res = await fetchNative(replacerURL, {
|
||||||
|
|||||||
@@ -927,6 +927,7 @@ export interface Database{
|
|||||||
showFolderName: boolean
|
showFolderName: boolean
|
||||||
automaticCachePoint: boolean
|
automaticCachePoint: boolean
|
||||||
chatCompression: boolean
|
chatCompression: boolean
|
||||||
|
claudeRetrivalCaching: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
interface SeparateParameters{
|
interface SeparateParameters{
|
||||||
|
|||||||
Reference in New Issue
Block a user