""" Self-Awareness Module - Permite IA reconhecer erros e responder a crítica. Criado como parte da Fase 3: Self-Aware Correction Data: 2026-05-15 """ import re from typing import Dict, Tuple from loguru import logger from datetime import datetime class SelfAwarenessEngine: """Detecta crítica, erro anterior, e permite self-correction.""" def __init__(self): self.logger = logger self.error_memory = {} self.criticism_patterns = [ r"(?:isso|isso que|que)\s+(?:você\s+)?(?:disse|falou|escreveu)\s+(?:é\s+)?(?:errado|falso|mentira)", r"(?:você\s+)?(?:errou|enganou|enganaste)", r"(?:tá|está)\s+(?:errado|mal|falso)", r"(?:não|n[ã\/]o)\s+(?:é|foi)\s+(?:assim|verdade|correto)", ] self.error_acknowledgment = [ "Você tem razão, cometi erro.", "Admito que estava errado.", "Obrigado pela correção, você está certo.", "Eu me equivoquei naquilo.", ] def detect_criticism(self, mensagem: str) -> Tuple[bool, str]: """ Detecta se mensagem é crítica a resposta anterior. Returns: (tem_crítica, tipo_crítica) """ mensagem_lower = mensagem.lower() for pattern in self.criticism_patterns: if re.search(pattern, mensagem_lower): return True, "direct_criticism" if any(phrase in mensagem_lower for phrase in ["na verdade", "corrigindo", "melhor seria"]): return True, "implicit_correction" return False, None def generate_self_correction_response( self, original_response: str, correction: str, user_id: str ) -> str: """ Gera resposta que reconhece erro e corrige. """ import random ack = random.choice(self.error_acknowledgment) response = ( f"{ack}\n\n" f"Então ficaria: {correction}\n\n" f"Obrigado por me manter preciso. É assim que melhoro." ) if user_id not in self.error_memory: self.error_memory[user_id] = [] self.error_memory[user_id].append({ "original": original_response, "correction": correction, "timestamp": datetime.now().isoformat() }) self.logger.info(f"📝 [SELF-AWARE] Erro registrado para {user_id}") return response # Instância global self_awareness_engine = SelfAwarenessEngine()