@cognigy/rest-api-client
Version:
Cognigy REST-Client
57 lines • 2.94 kB
JavaScript
import { __awaiter } from "tslib";
import { InternalServerError } from "../../../../../errors";
export function performKnowledgeSearch({ api, config, query, input, errorHandler, }) {
var _a;
return __awaiter(this, void 0, void 0, function* () {
let knowledgeSearchResponseData;
const { language, traceId } = input;
const { topK = 5, searchStoreLocation = "default", searchStoreLocationContextKey = "knowledgeSearch", searchStoreLocationInputKey = "knowledgeSearch", } = config;
const knowledgeStoreId = (_a = config === null || config === void 0 ? void 0 : config.knowledgeStoreId) === null || _a === void 0 ? void 0 : _a.trim();
const data = {
language: language,
query,
topK: topK,
traceId: traceId,
disableSensitiveLogging: false,
};
// Add knowledgeStoreIds to data
if (knowledgeStoreId) {
data.knowledgeStoreIds = [knowledgeStoreId];
}
// Perform knowledge search
try {
const knowledgeSearchResponse = yield api.knowledgeSearch(data);
// Handle possible response errors
if ((knowledgeSearchResponse === null || knowledgeSearchResponse === void 0 ? void 0 : knowledgeSearchResponse.status) !== "success") {
const errorMessage = (knowledgeSearchResponse === null || knowledgeSearchResponse === void 0 ? void 0 : knowledgeSearchResponse.error) || "empty";
throw new Error(`Error while performing knowledge search. Remote returned error: ${errorMessage}`);
}
if (!(knowledgeSearchResponse === null || knowledgeSearchResponse === void 0 ? void 0 : knowledgeSearchResponse.data)) {
throw new Error("Error while performing knowledge search. Remote returned empty response.");
}
knowledgeSearchResponseData = knowledgeSearchResponse.data;
}
catch (error) {
yield errorHandler(error, knowledgeSearchResponseData);
throw error;
}
// Save result
switch (searchStoreLocation) {
case "context":
// @ts-ignore
api.addToContext(searchStoreLocationContextKey, knowledgeSearchResponseData, "simple");
break;
case "default":
case "input":
api.addToInput(searchStoreLocationInputKey, knowledgeSearchResponseData);
break;
default:
throw new InternalServerError(`Error while performing knowledge search. Store location was invalid. Value was: ${searchStoreLocation}`, {
traceId,
disableSensitiveLogging: data === null || data === void 0 ? void 0 : data.disableSensitiveLogging,
});
}
return knowledgeSearchResponseData;
});
}
//# sourceMappingURL=knowledgeSearch.helper.js.map