UNPKG

@jackhua/mini-langchain

Version:

A lightweight TypeScript implementation of LangChain with cost optimization features

109 lines 2.78 kB
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