@jackhua/mini-langchain
Version:
A lightweight TypeScript implementation of LangChain with cost optimization features
109 lines • 2.78 kB
TypeScript
import { BaseLLM } from '../llms/base';
/**
* Configuration for prompt optimization
*/
export interface OptimizerConfig {
strategies?: OptimizationStrategy[];
targetReduction?: number;
preserveExamples?: boolean;
language?: string;
customStopWords?: string[];
llm?: BaseLLM;
}
/**
* Optimization strategies
*/
export declare enum OptimizationStrategy {
REMOVE_REDUNDANCY = "remove_redundancy",
COMPRESS_INSTRUCTIONS = "compress_instructions",
SIMPLIFY_LANGUAGE = "simplify_language",
REMOVE_FILLER = "remove_filler",
STRUCTURE_OPTIMIZATION = "structure_optimization",
SEMANTIC_COMPRESSION = "semantic_compression"
}
/**
* Optimization result
*/
export interface OptimizationResult {
optimizedPrompt: string;
originalTokenCount: number;
optimizedTokenCount: number;
reductionPercentage: number;
appliedStrategies: OptimizationStrategy[];
warnings?: string[];
}
/**
* Built-in Prompt Optimizer
* Optimizes prompts to reduce tokens while maintaining effectiveness
*/
export declare class PromptOptimizer {
private config;
private stopWords;
constructor(config?: OptimizerConfig);
/**
* Initialize stop words based on language
*/
private initializeStopWords;
/**
* Optimize a prompt
*/
optimize(prompt: string): Promise<OptimizationResult>;
/**
* Apply a specific optimization strategy
*/
private applyStrategy;
/**
* Remove redundant words and phrases
*/
private removeRedundancy;
/**
* Remove filler words
*/
private removeFillerWords;
/**
* Compress instructions to be more concise
*/
private compressInstructions;
/**
* Simplify complex language
*/
private simplifyLanguage;
/**
* Optimize prompt structure
*/
private optimizeStructure;
/**
* Use LLM for semantic compression
*/
private optimizeWithLLM;
/**
* Determine if LLM optimization should be used
*/
private shouldUseLLMOptimization;
/**
* Extract sections that should be preserved (examples, code, etc.)
*/
private extractPreservedSections;
/**
* Check if a position is within a preserved section
*/
private isInPreservedSection;
/**
* Compress lists in the prompt
*/
private compressLists;
/**
* Estimate token count (rough approximation)
*/
private estimateTokens;
/**
* Get optimization statistics
*/
getOptimizationStats(original: string, optimized: string): {
characterReduction: number;
wordReduction: number;
lineReduction: number;
estimatedCostSaving: number;
};
}
//# sourceMappingURL=prompt-optimizer.d.ts.map