Skip to main content
Glama

LCBro

by lcbro
PREPROCESSING_CHANGELOG.md•6.98 kB
# Changelog: Intelligent Auto-Generation of Prompts for Preprocessing ## Changes Overview A completely new automatic prompt generation system for preprocessing stage with maximum use of local models has been implemented. ## Major Changes ### 1. Improved Local Model Selection Logic (`src/tools/llm.ts`) **Before:** ```typescript private getLocalModel(currentModel: string): string { // Simple static list const commonOllamaModels = ['ollama:llama3.1', 'ollama:llama2']; return commonOllamaModels[0]; } ``` **After:** ```typescript private async getLocalModel(currentModel: string): Promise<string> { // Configurable priority list with availability checking const preferredModels = this.config?.preprocessing?.preferredModels || [...]; for (const model of preferredModels) { if (await this.isModelAvailable(model)) { return model; } } } ``` **Advantages:** - Prioritization of fastest models for preprocessing - Automatic availability checking - Configurable preferred model lists - Support for both Ollama and JAN providers ### 2. Intelligent Prompt Generation **Before:** ```typescript private generateAutoPreprocessRequest(input, instruction): string { // Simple static templates by data type if (input.kind === 'html') { return 'Remove unnecessary HTML elements...'; } } ``` **After:** ```typescript private async generateIntelligentPreprocessRequest(input, instruction): Promise<string> { // Content analysis by local model const analysis = await this.llmManager.generate({ model: localModel, prompt: this.createContentAnalysisPrompt(input, instruction) }); // Parse analysis into preprocessing actions return this.parseAnalysisToPreprocessRequest(analysis.content, input.kind); } ``` **Advantages:** - Analysis of specific content, not just data type - Adaptation to specific tasks - Use of fast local models for analysis - Fallback to improved templates on failures ### 3. Extended Preprocessing Need Detection Logic **Before:** ```typescript private shouldAutoPreprocess(input, instruction): boolean { if (input.kind === 'html' && input.data.length > 5000) return true; // Simple size checks } ``` **After:** ```typescript private shouldAutoPreprocess(input, instruction): boolean { // Configurable thresholds const thresholds = this.config?.preprocessing?.thresholds; // HTML noise analysis const htmlNoise = ['<script', '<style', 'navigation', ...]; // Text formatting issue detection const hasFormattingIssues = /\s{3,}|\n{3,}|\t{2,}/.test(input.data); // JSON structure consistency analysis if (this.hasInconsistentJsonStructure(parsed)) return true; } ``` **Advantages:** - Configurable size thresholds for different data types - HTML noise detection (scripts, ads, navigation) - Text formatting issue analysis - JSON structure consistency checking - Instruction keyword analysis ### 4. Extended Configuration (`config/default.yaml`) **Before:** ```yaml llm: autoPreprocess: true ``` **After:** ```yaml llm: autoPreprocess: true preprocessing: enabled: true intelligentMode: true fallbackToTemplates: true thresholds: html: 3000 text: 5000 json: 1000 preferredModels: - "ollama:qwen2.5:7b" - "ollama:llama3.2:3b" - "ollama:mistral:7b" # ... analysis: maxContentSample: 1000 maxAnalysisTokens: 300 analysisTemperature: 0.1 ``` **Advantages:** - Granular control over all preprocessing aspects - Threshold configuration for different data types - Model prioritization by speed/efficiency - Fine-tuned content analysis settings ### 5. Updated Configuration Schema (`src/utils/config.ts`) ```typescript // Added full typing for new options preprocessing: z.object({ enabled: z.boolean().default(true), intelligentMode: z.boolean().default(true), fallbackToTemplates: z.boolean().default(true), thresholds: z.object({ html: z.number().default(3000), text: z.number().default(5000), json: z.number().default(1000) }), preferredModels: z.array(z.string()).default([...]), analysis: z.object({ maxContentSample: z.number().default(1000), maxAnalysisTokens: z.number().default(300), analysisTemperature: z.number().default(0.1) }) }).default({}) ``` ### 6. Improved Template Library **New Specialized Templates:** - **HTML**: general, tables, products, articles - **Text**: general, summarization, data extraction - **JSON**: general, tables, dates and times **Example:** ```typescript htmlProduct: 'Remove navigation, ads, reviews section, related products. Focus on main product information: name, price, description, specifications.', jsonDate: 'Clean JSON and standardize all date/time formats to ISO 8601 (YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss). Fix date parsing issues.' ``` ## New Features ### 1. Content Analysis by Local Model ```typescript const analysisPrompt = ` MAIN TASK: ${instruction} CONTENT TYPE: ${input.kind} CONTENT SAMPLE: ${contentSample} CONTENT LENGTH: ${input.data.length} characters Analyze this content and main task. What preprocessing steps would be most effective to: 1. Remove noise and irrelevant information 2. Prepare clean, focused data for the main task 3. Optimize for better LLM processing Suggest specific preprocessing actions in 1-2 sentences. `; ``` ### 2. Parse Analysis into Actions ```typescript private parseAnalysisToPreprocessRequest(analysisContent: string, dataKind: string): string { // Basic cleaning by data type // + Specific actions based on LLM analysis // + Adaptation to keywords (table, product, article, data, etc.) } ``` ### 3. JSON Consistency Checking ```typescript private hasInconsistentJsonStructure(array: any[]): boolean { // Check structure consistency between array elements } private hasDeepNesting(obj: any, maxDepth: number): boolean { // Check deep object nesting } ``` ## Performance and Savings ### Real Savings Example **E-commerce site HTML page processing (50KB):** **Without preprocessing:** - Direct processing of 50KB through GPT-4 - Cost: ~$0.50 - Quality: low (much noise) **With intelligent preprocessing:** 1. Content analysis: `ollama:qwen2.5:7b` (free, 1 sec) 2. Preprocessing: `ollama:qwen2.5:7b` (free, 3 sec) 3. Main processing: 5KB cleaned data through GPT-4 4. Cost: ~$0.05 5. **Savings: 90%** + significantly better quality ## Backward Compatibility All changes are fully backward compatible: - Old configuration `autoPreprocess: true` continues to work - All existing API calls work without changes - New features are gradually enabled with reasonable defaults ## Documentation Detailed documentation created: - [`docs/INTELLIGENT_PREPROCESSING.md`](./INTELLIGENT_PREPROCESSING.md) - complete guide to new system - Usage examples and configuration - Monitoring and debugging - Performance analysis --- **Model:** Claude Sonnet 4 **Date:** September 13, 2025 **Status:** Implemented and ready for use

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lcbro/lcbro-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server