Add claudeRetrivalCaching
This commit is contained in:
@@ -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)
|
||||
}
|
||||
@@ -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, {
|
||||
|
||||
@@ -927,6 +927,7 @@ export interface Database{
|
||||
showFolderName: boolean
|
||||
automaticCachePoint: boolean
|
||||
chatCompression: boolean
|
||||
claudeRetrivalCaching: boolean
|
||||
}
|
||||
|
||||
interface SeparateParameters{
|
||||
|
||||
Reference in New Issue
Block a user