@cognigy/rest-api-client
Version:
Cognigy REST-Client
59 lines • 2.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.extractAnswer = void 0;
const getLanguageName_helper_1 = require("../getLanguageName.helper");
async function extractAnswer({ api, config, knowledgeSearchResponseData, userInput, input, errorHandler, }) {
var _a, _b, _c, _d;
const { contextKey, frequencyPenalty, inputKey = "knowledgeSearch", maxTokens, outputMode, presencePenalty, searchStoreLocation, stop = "", streamStopTokens, temperature, timeout = 5000, topP, useStop = false, } = config;
const { language } = input;
let { prompt } = config;
let promptResponse;
const documents = (_a = knowledgeSearchResponseData === null || knowledgeSearchResponseData === void 0 ? void 0 : knowledgeSearchResponseData.topK) === null || _a === void 0 ? void 0 : _a.map((result) => result === null || result === void 0 ? void 0 : result.text).join(" ");
prompt = prompt === null || prompt === void 0 ? void 0 : prompt.replace(/@userInput/, userInput);
prompt = prompt === null || prompt === void 0 ? void 0 : prompt.replace(/@foundDocuments/, documents || "");
const answerLanguage = (() => {
const answerLanguage = (0, getLanguageName_helper_1.getLanguageName)(language);
// generic (ge-GE) and any other unknown languages result in "undefined"
if (!answerLanguage) {
return "the same language the question was asked";
}
return answerLanguage;
})();
prompt = prompt === null || prompt === void 0 ? void 0 : prompt.replace(/@answerLanguage/, answerLanguage);
const promptData = {
prompt,
temperature,
maxTokens,
topP,
presencePenalty,
frequencyPenalty,
timeoutInMs: timeout,
useCase: "promptNode",
stream: outputMode === "stream",
streamOnDataHandler: (text) => {
var _a;
(_a = api.output) === null || _a === void 0 ? void 0 : _a.call(api, text, null);
},
streamStopTokens,
};
if (useStop) {
promptData["stop"] = stop;
}
try {
promptResponse = await ((_b = api.runGenerativeAIPrompt) === null || _b === void 0 ? void 0 : _b.call(api, promptData, "answerExtraction"));
if (searchStoreLocation === "context") {
(_c = api.addToContext) === null || _c === void 0 ? void 0 : _c.call(api, contextKey, promptResponse, "simple");
}
else {
api.addToInput(inputKey, promptResponse);
}
}
catch (error) {
await errorHandler(error, knowledgeSearchResponseData);
(_d = api.log) === null || _d === void 0 ? void 0 : _d.call(api, "error", error);
return;
}
return promptResponse;
}
exports.extractAnswer = extractAnswer;
//# sourceMappingURL=answerExtraction.helper.js.map