Spaces:
Sleeping
Sleeping
| """ | |
| Simulador de Agente LLM com Context Pruning | |
| """ | |
| import time | |
| class AgentSimulator: | |
| """Simula o comportamento de um agente com e sem pruning""" | |
| def __init__(self): | |
| self.thoughts = [] | |
| def run_pipeline(self, query, document, threshold): | |
| """Executa pipeline completo do agente""" | |
| from components.provence_wrapper import ProvencePruner | |
| pruner = ProvencePruner() | |
| # Fase 1: Retrieval (simulado) | |
| self.thoughts = [] | |
| self.thoughts.append(f"🔍 <b>Retrieval:</b> Documento recuperado com {len(document.split())} palavras") | |
| # Fase 2: Pruning | |
| result = pruner.prune(query, document, threshold) | |
| self.thoughts.append( | |
| f"✂️ <b>Provence Pruning:</b> Analisando {len(result['sentences'])} sentenças..." | |
| ) | |
| kept_count = sum(result['kept']) | |
| self.thoughts.append( | |
| f"📊 <b>Resultado:</b> {kept_count}/{len(result['sentences'])} sentenças mantidas " | |
| f"({result['compression_rate']}% compressão)" | |
| ) | |
| # Fase 3: Análise de qualidade | |
| avg_score = sum(result['scores']) / len(result['scores']) if result['scores'] else 0 | |
| self.thoughts.append( | |
| f"🎯 <b>Qualidade:</b> Score médio de relevância: {avg_score:.2f}" | |
| ) | |
| # Tokens economizados (estimativa: ~1.3 tokens/palavra) | |
| words_removed = len(document.split()) - len(' '.join(result['pruned_sentences']).split()) | |
| tokens_saved = int(words_removed * 1.3) | |
| self.thoughts.append( | |
| f"💰 <b>Eficiência:</b> ~{tokens_saved} tokens economizados na chamada LLM" | |
| ) | |
| # Fase 4: Geração (simulada) | |
| self.thoughts.append( | |
| f"🤖 <b>Geração:</b> LLM processando contexto enxuto..." | |
| ) | |
| return { | |
| 'sentences': result['sentences'], | |
| 'scores': result['scores'], | |
| 'kept': result['kept'], | |
| 'compression_rate': result['compression_rate'], | |
| 'tokens_saved': tokens_saved, | |
| 'relevance_score': avg_score, | |
| 'agent_thoughts': self.thoughts, | |
| 'pruned_document': ' '.join(result['pruned_sentences']) | |
| } |