@cognigy/rest-api-client
Version:
Cognigy REST-Client
75 lines • 3.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPrompt = exports.isOpenAIChatPrompt = exports.isChatPrompt = exports.isCompletionPrompt = void 0;
/** Custom Modules */
const generativeAIPrompts_1 = require("./utils/generativeAIPrompts");
const internalServerError_1 = require("../errors/internalServerError");
const isCompletionPrompt = (data) => {
return typeof data === "object" && data !== null && "prompt" in data;
};
exports.isCompletionPrompt = isCompletionPrompt;
const isChatPrompt = (data) => {
return typeof data === "object" && data !== null && "messages" in data;
};
exports.isChatPrompt = isChatPrompt;
const isOpenAIChatPrompt = (data) => {
return Array.isArray(data) &&
data.every((item) => typeof item === "object" &&
item !== null &&
("role" in item) &&
("content" in item) &&
(item.role === "system" || item.role === "user" || item.role === "assistant") &&
(typeof item.content === "string"));
};
exports.isOpenAIChatPrompt = isOpenAIChatPrompt;
/**
* Gets the current prompts for the passed model/useCase
* @param model - The model to get the prompt for
* @param useCase - The use case to get the prompt for
* @param subUseCase - Optional sub-use case to get a specific prompt
* @param promptParser - Optional function to modify the prompt before returning it
* @returns {TALLPrompts}
*/
const getPrompt = (model, useCase, subUseCase, promptParser) => {
var _a;
const loggerMeta = {
module: "getPrompt.ts",
label: "generativeAI",
function: "getPrompt",
model,
useCase,
subUseCase
};
let modelPrompts = (_a = generativeAIPrompts_1.generativeAIPrompts[`${model}`]) !== null && _a !== void 0 ? _a : generativeAIPrompts_1.generativeAIPrompts["default"];
if (!modelPrompts) {
throw new internalServerError_1.InternalServerError(`Neither the model "${model}" nor the default fallback have predefined prompts`, undefined, loggerMeta);
}
let prompt = modelPrompts[`${useCase}`];
// generativeAIPrompts[model] has no prompt for use case, so try to fallback to default prompt
if (!prompt) {
modelPrompts = generativeAIPrompts_1.generativeAIPrompts["default"];
if (!modelPrompts) {
throw new internalServerError_1.InternalServerError(`The default fallback has no predefined prompts`, undefined, loggerMeta);
}
prompt = modelPrompts[`${useCase}`];
}
if (!prompt) {
throw new internalServerError_1.InternalServerError(`Neither the model "${model}" nor the default fallback define a prompt for useCase "${useCase}"`, undefined, loggerMeta);
}
if (subUseCase && prompt && typeof prompt === "object" && `${subUseCase}` in prompt) {
prompt = prompt[`${subUseCase}`];
}
if (!prompt) {
throw new internalServerError_1.InternalServerError(`The prompt defined for the model "${model}" or the default fallback, useCase "${useCase}", and subUseCase "${subUseCase}" is invalid`, undefined, loggerMeta);
}
try {
return promptParser
? promptParser(JSON.parse(JSON.stringify(prompt)))
: JSON.parse(JSON.stringify(prompt));
}
catch (error) {
throw new internalServerError_1.InternalServerError(`Error while parsing prompt for model: ${model} and useCase: ${useCase} and subUseCase: ${subUseCase}`, undefined, Object.assign({ originalError: error }, loggerMeta));
}
};
exports.getPrompt = getPrompt;
//# sourceMappingURL=getPrompt.js.map