UNPKG

@lewist9x/distil

Version:

An opinionated library for managing LLM pipelines. Define, track, rate, and curate prompt–completion pairs for fine-tuning.

112 lines (111 loc) • 3.49 kB
import { PipelineVersionRecord, LLMInput, GenerationResult } from "./types"; export type PreProcessingFn = (input: LLMInput) => Promise<LLMInput> | LLMInput; export type PostProcessingFn = (raw: string, extraData?: any) => Promise<string> | string; export interface DistilPipelineConfig { pipelineName: string; modelName: string; systemPrompt: string; userPrompt: string; defaultParameters?: Record<string, any>; preprocess?: PreProcessingFn; postprocess?: PostProcessingFn; } export declare class DistilPipeline { private inferenceEngine; private logger; private preprocessFn; private postprocessFn; pipelineName: string; modelName: string; systemPrompt: string; userPrompt: string; defaultParameters?: Record<string, any>; constructor(config: DistilPipelineConfig, logLevel?: "DEBUG" | "INFO" | "WARNING" | "ERROR"); /** * Runs the pipeline: * 1. Validate input and merge default parameters. * 2. Apply custom preprocessing. * 3. Compute the template hash. * 4. Run inference and apply postprocessing. * 5. Return output and metadata. */ generate(inputData: any): Promise<GenerationResult | null>; } /** * Get all pipeline versions. */ export declare function getAllPipelineVersions(): Promise<PipelineVersionRecord[]>; /** * Add a tag to a pipeline version. */ export declare function addTagToPipelineVersion(id: string, tag: string): Promise<boolean>; /** * Rate a pipeline version (1-5 stars). */ export declare function ratePipelineVersion(id: string, rating: number): Promise<boolean>; /** * Mark a pipeline version as finetuned. */ export declare function markPipelineVersionAsFinetuned(id: string): Promise<boolean>; /** * Get generations for a pipeline version */ export declare function getGenerationsForVersion(pipelineName: string, versionId: string): Promise<{ id: string; processedOutput: string; metadata: { input: { raw: { [key: string]: any; }; preprocessed: { systemPrompt: string; userPrompt: string; parameters?: Record<string, any> | undefined; }; pipelineName: string; }; timeTaken: number; generationCost: number; pipelineHash: string; rawOutput: string; pipelineName: string; }; rating: number | undefined; isFinetuned: boolean | undefined; }[]>; /** * Get a specific generation by ID */ export declare function getGenerationById(pipelineName: string, id: string): Promise<{ id: string; processedOutput: string; metadata: { input: { raw: { [key: string]: any; }; preprocessed: { systemPrompt: string; userPrompt: string; parameters?: Record<string, any> | undefined; }; pipelineName: string; }; timeTaken: number; generationCost: number; pipelineHash: string; rawOutput: string; pipelineName: string; }; rating: number | undefined; isFinetuned: boolean | undefined; }>; /** * Rate a generation */ export declare function rateGeneration(pipelineName: string, id: string, rating: number): Promise<boolean>; /** * Mark generations for finetuning */ export declare function markGenerationsForFinetuning(ids: string[]): Promise<boolean>;