UNPKG

@cognigy/rest-api-client

Version:

Cognigy REST-Client

58 lines 2.94 kB
import { __awaiter } from "tslib"; import { getLanguageName } from "../getLanguageName.helper"; export function extractAnswer({ api, config, knowledgeSearchResponseData, userInput, input, errorHandler, }) { var _a, _b, _c, _d; return __awaiter(this, void 0, void 0, function* () { 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 = 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 = yield ((_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) { yield errorHandler(error, knowledgeSearchResponseData); (_d = api.log) === null || _d === void 0 ? void 0 : _d.call(api, "error", error); return; } return promptResponse; }); } //# sourceMappingURL=answerExtraction.helper.js.map