UNPKG

@llumiverse/core

Version:

Provide an universal API to LLMs. Support for existing LLMs can be added by writing a driver.

55 lines 1.96 kB
import { PromptRole } from "@llumiverse/common"; import { getJSONSafetyNotice } from "./commons.js"; export 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 === PromptRole.assistant); const context = []; const content = []; const safety = []; for (const segment of segments) { switch (segment.role) { case PromptRole.user: if (isChat) { content.push(`${labels.user}: ${segment.content}`); } else { content.push(segment.content); } break; case PromptRole.assistant: content.push(`${labels.assistant}: ${segment.content}`); break; case PromptRole.system: context.push(segment.content); break; case PromptRole.safety: safety.push(segment.content); break; } } if (schema) { safety.push(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(); export { formatTextPrompt }; //# sourceMappingURL=generic.js.map