hugbot
Version:
Chatbot maker for HuggingFace Inference API and other AI API providers and backends.
81 lines • 2.73 kB
JavaScript
;
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