UNPKG

hugbot

Version:

Chatbot maker for HuggingFace Inference API and other AI API providers and backends.

81 lines 2.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateTextResponse = void 0; const maybePushToShortTermMemory = (HugBot, entry) => { if (HugBot.shortTermMemory) { HugBot.shortTermMemory.push(entry); } }; const maybeUseMemoryDump = (HugBot) => { if (!HugBot.shortTermMemory) { return; } else { return HugBot.shortTermMemory.dump; } }; const fallBackPromptTemplate = (entries) => entries.reduce((acc, x) => acc + `<${x.role}>\n${x.input}\n`, "") + "<ai>\n"; const buildPromptTemplate = (HugBot, userInput, memoryEntries) => { if (memoryEntries && HugBot.promptConstructor) { return HugBot.promptConstructor.getPromptTemplate(memoryEntries); } else if (!memoryEntries && !HugBot.promptConstructor) { return `<user>\n${userInput}\n<ai>\n`; } else if (!memoryEntries && HugBot.promptConstructor) { return HugBot.promptConstructor.getPromptTemplate({ conversation: [{ role: "user", input: userInput }], systemPrompt: "", responseAffirmation: "", userInstruction: "" }); } else { return fallBackPromptTemplate(memoryEntries.conversation); } }; const sendRequest = (HugBot, promptTemplate, apiToken) => { if (!HugBot.AIClient) { return "No response..."; } else { return HugBot.AIClient.sendRequest(promptTemplate, apiToken); } }; const maybeRetrieveApiToken = async (HugBot, apiToken) => { if (apiToken) { return apiToken; } else if (HugBot.secretsHider) { try { const token = await HugBot.secretsHider.get(); if (token) { return token; } } catch (what) { console.error(what); return undefined; } } return undefined; }; const maybeUseRateLimiter = (HugBot) => { if (HugBot.rateLimiter) { HugBot.rateLimiter.check(); } }; /** * Main HugBot interaction method. Uses components present on the bot instance * to produce text response. */ const generateTextResponse = async (HugBot, userInput, apiToken) => { maybeUseRateLimiter(HugBot); maybePushToShortTermMemory(HugBot, { role: "user", input: userInput }); const memoryState = maybeUseMemoryDump(HugBot); const promptTemplate = buildPromptTemplate(HugBot, userInput, memoryState); const token = await maybeRetrieveApiToken(HugBot, apiToken); const response = await sendRequest(HugBot, promptTemplate, token); maybePushToShortTermMemory(HugBot, { role: "ai", input: response }); return response; }; exports.generateTextResponse = generateTextResponse; //# sourceMappingURL=TextGen.js.map