Add claudeRetrivalCaching

This commit is contained in:
kwaroran
2025-03-12 10:04:26 +09:00
parent 488ca25d0f
commit de8f8a8e1c
3 changed files with 60 additions and 0 deletions

View File

@@ -2,6 +2,7 @@ import { runTrigger } from "./process/triggers";
import { sleep } from "./util";
import { getCurrentCharacter, getCurrentChat, setCurrentChat } from "./storage/database.svelte";
import { runLuaButtonTrigger } from "./process/lua";
import { globalFetch } from "./globalApi.svelte";
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);
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)
}

View File

@@ -21,6 +21,7 @@ import { OobaParams } from "./prompt";
import { extractJSON, getGeneralJSONSchema, getOpenAIJSONSchema } from "./templates/jsonSchema";
import { getModelInfo, LLMFlags, LLMFormat, type LLMModel } from "../model/modellist";
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'
}
if(db.claudeRetrivalCaching){
registerClaudeObserver({
url: replacerURL,
body: body,
headers: headers
})
}
if(useStreaming){
const res = await fetchNative(replacerURL, {

View File

@@ -927,6 +927,7 @@ export interface Database{
showFolderName: boolean
automaticCachePoint: boolean
chatCompression: boolean
claudeRetrivalCaching: boolean
}
interface SeparateParameters{