UNPKG

@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
"use strict"; 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