@llumiverse/core
Version:
Provide an universal API to LLMs. Support for existing LLMs can be added by writing a driver.
59 lines • 2.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatTextPrompt = void 0;
exports.createTextPromptFormatter = createTextPromptFormatter;
const common_1 = require("@llumiverse/common");
const commons_js_1 = require("./commons.js");
function createTextPromptFormatter(labels = {
user: "USER",
system: "CONTEXT",
assistant: "ASSISTANT",
safety: "IMPORTANT",
instruction: "INSTRUCTION"
}) {
return function genericTextPrompt(segments, schema) {
const isChat = segments.find(m => m.role === common_1.PromptRole.assistant);
const context = [];
const content = [];
const safety = [];
for (const segment of segments) {
switch (segment.role) {
case common_1.PromptRole.user:
if (isChat) {
content.push(`${labels.user}: ${segment.content}`);
}
else {
content.push(segment.content);
}
break;
case common_1.PromptRole.assistant:
content.push(`${labels.assistant}: ${segment.content}`);
break;
case common_1.PromptRole.system:
context.push(segment.content);
break;
case common_1.PromptRole.safety:
safety.push(segment.content);
break;
}
}
if (schema) {
safety.push((0, commons_js_1.getJSONSafetyNotice)(schema));
}
const out = [];
if (context.length > 0) {
out.push(`${labels.system}: ${context.join('\n')}`);
}
if (content.length > 0) {
const prefix = context.length > 0 && !isChat ? `${labels.instruction}: ` : '';
out.push(prefix + content.join('\n'));
}
if (safety.length > 0) {
out.push(`${labels.safety}: ${safety.join('\n')}`);
}
return out.join('\n');
};
}
const formatTextPrompt = createTextPromptFormatter();
exports.formatTextPrompt = formatTextPrompt;
//# sourceMappingURL=generic.js.map