Skip to main content
Glama

LCBro

by lcbro
PREPROCESSING_CHANGELOG.md7.65 kB
# Changelog: Geração Automática Inteligente de Prompts para Pré-processamento ## Visão Geral das Mudanças Foi implementado um sistema completamente novo de geração automática de prompts para o estágio de pré-processamento com uso máximo de modelos locais. ## Principais Mudanças ### 1. Lógica Melhorada de Seleção de Modelos Locais (`src/tools/llm.ts`) **Antes:** ```typescript private getLocalModel(currentModel: string): string { // Lista estática simples const commonOllamaModels = ['ollama:llama3.1', 'ollama:llama2']; return commonOllamaModels[0]; } ``` **Depois:** ```typescript private async getLocalModel(currentModel: string): Promise<string> { // Lista de prioridade configurável com verificação de disponibilidade const preferredModels = this.config?.preprocessing?.preferredModels || [...]; for (const model of preferredModels) { if (await this.isModelAvailable(model)) { return model; } } } ``` **Vantagens:** - Priorização dos modelos mais rápidos para pré-processamento - Verificação automática de disponibilidade - Listas de modelos preferidos configuráveis - Suporte para provedores Ollama e JAN ### 2. Geração Inteligente de Prompts **Antes:** ```typescript private generateAutoPreprocessRequest(input, instruction): string { // Modelos estáticos simples por tipo de dados if (input.kind === 'html') { return 'Remove unnecessary HTML elements...'; } } ``` **Depois:** ```typescript private async generateIntelligentPreprocessRequest(input, instruction): Promise<string> { // Análise de conteúdo por modelo local const analysis = await this.llmManager.generate({ model: localModel, prompt: this.createContentAnalysisPrompt(input, instruction) }); // Analisar análise em ações de pré-processamento return this.parseAnalysisToPreprocessRequest(analysis.content, input.kind); } ``` **Vantagens:** - Análise de conteúdo específico, não apenas tipo de dados - Adaptação a tarefas específicas - Uso de modelos locais rápidos para análise - Fallback para modelos melhorados em falhas ### 3. Lógica Estendida de Detecção de Necessidade de Pré-processamento **Antes:** ```typescript private shouldAutoPreprocess(input, instruction): boolean { if (input.kind === 'html' && input.data.length > 5000) return true; // Verificações simples de tamanho } ``` **Depois:** ```typescript private shouldAutoPreprocess(input, instruction): boolean { // Limiares configuráveis const thresholds = this.config?.preprocessing?.thresholds; // Análise de ruído HTML const htmlNoise = ['<script', '<style', 'navigation', ...]; // Detecção de problemas de formatação de texto const hasFormattingIssues = /\s{3,}|\n{3,}|\t{2,}/.test(input.data); // Análise de consistência de estrutura JSON if (this.hasInconsistentJsonStructure(parsed)) return true; } ``` **Vantagens:** - Limiares de tamanho configuráveis para diferentes tipos de dados - Detecção de ruído HTML (scripts, anúncios, navegação) - Análise de problemas de formatação de texto - Verificação de consistência de estrutura JSON - Análise de palavras-chave de instrução ### 4. Configuração Estendida (`config/default.yaml`) **Antes:** ```yaml llm: autoPreprocess: true ``` **Depois:** ```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 ``` **Vantagens:** - Controle granular sobre todos os aspectos do pré-processamento - Configuração de limiares para diferentes tipos de dados - Priorização de modelos por velocidade/eficiência - Configurações de análise de conteúdo ajustadas ### 5. Esquema de Configuração Atualizado (`src/utils/config.ts`) ```typescript // Adicionada tipagem completa para novas opções 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. Biblioteca de Modelos Melhorada **Novos Modelos Especializados:** - **HTML**: geral, tabelas, produtos, artigos - **Texto**: geral, sumarização, extração de dados - **JSON**: geral, tabelas, datas e horários **Exemplo:** ```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.' ``` ## Novas Funcionalidades ### 1. Análise de Conteúdo por Modelo Local ```typescript const analysisPrompt = ` TAREFA PRINCIPAL: ${instruction} TIPO DE CONTEÚDO: ${input.kind} AMOSTRA DE CONTEÚDO: ${contentSample} TAMANHO DO CONTEÚDO: ${input.data.length} caracteres Analise este conteúdo e tarefa principal. Quais etapas de pré-processamento seriam mais eficazes para: 1. Remover ruído e informações irrelevantes 2. Preparar dados limpos e focados para a tarefa principal 3. Otimizar para melhor processamento LLM Sugira ações específicas de pré-processamento em 1-2 frases. `; ``` ### 2. Analisar Análise em Ações ```typescript private parseAnalysisToPreprocessRequest(analysisContent: string, dataKind: string): string { // Limpeza básica por tipo de dados // + Ações específicas baseadas na análise LLM // + Adaptação a palavras-chave (table, product, article, data, etc.) } ``` ### 3. Verificação de Consistência JSON ```typescript private hasInconsistentJsonStructure(array: any[]): boolean { // Verificar consistência de estrutura entre elementos do array } private hasDeepNesting(obj: any, maxDepth: number): boolean { // Verificar aninhamento profundo de objetos } ``` ## Performance e Economia ### Exemplo de Economia Real **Processamento de página HTML de site de e-commerce (50KB):** **Sem pré-processamento:** - Processamento direto de 50KB através do GPT-4 - Custo: ~$0.50 - Qualidade: baixa (muito ruído) **Com pré-processamento inteligente:** 1. Análise de conteúdo: `ollama:qwen2.5:7b` (grátis, 1 seg) 2. Pré-processamento: `ollama:qwen2.5:7b` (grátis, 3 seg) 3. Processamento principal: 5KB dados limpos através do GPT-4 4. Custo: ~$0.05 5. **Economia: 90%** + qualidade significativamente melhor ## Compatibilidade Retroativa Todas as mudanças são totalmente retrocompatíveis: - Configuração antiga `autoPreprocess: true` continua funcionando - Todas as chamadas de API existentes funcionam sem mudanças - Novas funcionalidades são habilitadas gradualmente com padrões razoáveis ## Documentação Documentação detalhada criada: - [`docs/INTELLIGENT_PREPROCESSING.md`](./INTELLIGENT_PREPROCESSING.md) - guia completo do novo sistema - Exemplos de uso e configuração - Monitoramento e depuração - Análise de performance --- **Modelo:** Claude Sonnet 4 **Data:** 13 de setembro de 2025 **Status:** Implementado e pronto para uso

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