MCPcopy Create free account
hub / github.com/IfcOpenShell/IfcOpenShell / chatWithMinuteDelay

Function chatWithMinuteDelay

src/ifcchat/app.js:539–558  ·  view source on GitHub ↗
({ chat, apiKey, baseURL, model, messages, tools })

Source from the content-addressed store, hash-verified

537}
538
539async function chatWithMinuteDelay({ chat, apiKey, baseURL, model, messages, tools }) {
540 const estimatedTokens = Math.max(
541 1,
542 Math.ceil(JSON.stringify({ model, messages, ...(tools ? { tools } : {}) }).length / ESTIMATED_CHARS_PER_TOKEN)
543 );
544 let currentMinuteBucket = Math.floor(Date.now() / 60000);
545 const estimateTokenUsage = (minuteTokenMap.get(currentMinuteBucket) ?? 0) + estimatedTokens;
546
547 if (estimateTokenUsage > MAX_ESTIMATED_TOKENS_PER_MINUTE) {
548 currentMinuteBucket += 1;
549 await new Promise((resolve) => setTimeout(() => resolve(), 60000));
550 }
551
552 minuteTokenMap.set(currentMinuteBucket, (minuteTokenMap.get(currentMinuteBucket) ?? 0) + estimatedTokens);
553
554 return {
555 minuteBucket: currentMinuteBucket,
556 response: await chat({ apiKey, baseURL, model, messages, tools }),
557 };
558}
559
560async function compactHistoryWithLLM(chat, apiKey, baseURL, model) {
561 const estimatedTokens = Math.max(

Callers 2

compactHistoryWithLLMFunction · 0.85
runAgentTurnFunction · 0.85

Calls 3

chatFunction · 0.70
getMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected