@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
TypeScript
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>;