Skip to main content
Glama

LCBro

by lcbro
PREPROCESSING_CHANGELOG.md9.75 kB
# Changelog: Интеллектуальная автогенерация промптов для Preprocessing ## Обзор изменений Реализована полностью новая система автоматической генерации промптов для preprocessing stage с максимальным использованием локальных моделей. ## Основные изменения ### 1. Улучшенная логика выбора локальных моделей (`src/tools/llm.ts`) **До:** ```typescript private getLocalModel(currentModel: string): string { // Простой статический список const commonOllamaModels = ['ollama:llama3.1', 'ollama:llama2']; return commonOllamaModels[0]; } ``` **После:** ```typescript private async getLocalModel(currentModel: string): Promise<string> { // Конфигурируемый приоритетный список с проверкой доступности const preferredModels = this.config?.preprocessing?.preferredModels || [...]; for (const model of preferredModels) { if (await this.isModelAvailable(model)) { return model; } } } ``` **Преимущества:** - Приоритизация самых быстрых моделей для preprocessing - Автоматическая проверка доступности моделей - Конфигурируемые списки предпочтительных моделей - Поддержка как Ollama, так и JAN провайдеров ### 2. Интеллектуальная генерация промптов **До:** ```typescript private generateAutoPreprocessRequest(input, instruction): string { // Простые статические шаблоны по типу данных if (input.kind === 'html') { return 'Remove unnecessary HTML elements...'; } } ``` **После:** ```typescript private async generateIntelligentPreprocessRequest(input, instruction): Promise<string> { // Анализ контента локальной моделью const analysis = await this.llmManager.generate({ model: localModel, prompt: this.createContentAnalysisPrompt(input, instruction) }); // Парсинг анализа в действия preprocessing return this.parseAnalysisToPreprocessRequest(analysis.content, input.kind); } ``` **Преимущества:** - Анализ конкретного контента, а не только типа данных - Адаптация под специфические задачи - Использование быстрых локальных моделей для анализа - Fallback на улучшенные шаблоны при сбоях ### 3. Расширенная логика определения необходимости preprocessing **До:** ```typescript private shouldAutoPreprocess(input, instruction): boolean { if (input.kind === 'html' && input.data.length > 5000) return true; // Простые проверки размера } ``` **После:** ```typescript private shouldAutoPreprocess(input, instruction): boolean { // Конфигурируемые пороги const thresholds = this.config?.preprocessing?.thresholds; // Анализ наличия шума в HTML const htmlNoise = ['<script', '<style', 'navigation', ...]; // Проверка проблем форматирования в тексте const hasFormattingIssues = /\s{3,}|\n{3,}|\t{2,}/.test(input.data); // Анализ консистентности JSON структуры if (this.hasInconsistentJsonStructure(parsed)) return true; } ``` **Преимущества:** - Конфигурируемые пороги размера для разных типов данных - Детектирование шума в HTML (скрипты, реклама, навигация) - Анализ проблем форматирования в тексте - Проверка консистентности JSON структур - Анализ ключевых слов в инструкциях ### 4. Расширенная конфигурация (`config/default.yaml`) **До:** ```yaml llm: autoPreprocess: true ``` **После:** ```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 ``` **Преимущества:** - Гранулярное управление всеми аспектами preprocessing - Настройка порогов для разных типов данных - Приоритизация моделей по скорости/эффективности - Тонкая настройка анализа контента ### 5. Обновленная схема конфигурации (`src/utils/config.ts`) ```typescript // Добавлена полная типизация новых опций 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. Улучшенная библиотека шаблонов **Новые специализированные шаблоны:** - **HTML**: общий, таблицы, продукты, статьи - **Текст**: общий, суммаризация, извлечение данных - **JSON**: общий, таблицы, даты и времени **Пример:** ```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.' ``` ## Новые возможности ### 1. Анализ контента локальной моделью ```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. Парсинг анализа в действия ```typescript private parseAnalysisToPreprocessRequest(analysisContent: string, dataKind: string): string { // Базовая очистка по типу данных // + Специфические действия на основе анализа LLM // + Адаптация под ключевые слова (table, product, article, data, etc.) } ``` ### 3. Проверка консистентности JSON ```typescript private hasInconsistentJsonStructure(array: any[]): boolean { // Проверка консистентности структуры между элементами массива } private hasDeepNesting(obj: any, maxDepth: number): boolean { // Проверка глубокой вложенности объектов } ``` ## Производительность и экономия ### Пример реальной экономии **Обработка HTML страницы интернет-магазина (50KB):** **Без preprocessing:** - Прямая обработка 50KB через GPT-4 - Стоимость: ~$0.50 - Качество: низкое (много шума) **С интеллектуальным preprocessing:** 1. Анализ контента: `ollama:qwen2.5:7b` (бесплатно, 1 сек) 2. Preprocessing: `ollama:qwen2.5:7b` (бесплатно, 3 сек) 3. Основная обработка: 5KB очищенных данных через GPT-4 4. Стоимость: ~$0.05 5. **Экономия: 90%** + значительно лучшее качество ## Обратная совместимость Все изменения полностью обратно совместимы: - Старая конфигурация `autoPreprocess: true` продолжает работать - Все существующие API вызовы работают без изменений - Новые возможности включаются постепенно с разумными значениями по умолчанию ## Документация Создана подробная документация: - [`docs/INTELLIGENT_PREPROCESSING.md`](./INTELLIGENT_PREPROCESSING.md) - полное руководство по новой системе - Примеры использования и конфигурации - Мониторинг и отладка - Анализ производительности --- **Модель:** Claude Sonnet 4 **Дата:** 13 сентября 2025 **Статус:** Реализовано и готово к использованию

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