# 📢 Carlos Drummond de Andrade - Comunicador do Povo **Status**: ⚠️ **95% Completo** (Beta - Pronto para uso com limitações conhecidas) **Arquivo**: `src/agents/drummond.py` **Tamanho**: 39KB **Métodos Implementados**: 24 **Testes**: ✅ Sim (`tests/unit/agents/test_drummond*.py`) **Última Atualização**: 2025-10-03 08:31:53 -03:00 --- ## 🎯 Missão Geração automática de comunicações, alertas e notificações multi-canal, traduzindo insights técnicos complexos em linguagem acessível ao cidadão brasileiro. **Inspiração Cultural**: Carlos Drummond de Andrade, poeta mineiro conhecido por sua capacidade de comunicar sentimentos e ideias complexas em linguagem direta e acessível. --- ## 🧠 Algoritmos e Técnicas Implementadas ### 1. Geração de Linguagem Natural (NLG) - ✅ **Template-based Generation** para mensagens estruturadas - ✅ **Neural Language Models** (integração com GPT/Maritaca) - ✅ **Adaptive Text Generation** baseado no perfil do usuário - ✅ **Simplificação Linguística** automática - ✅ **Style Transfer** para adequação de tom e registro ### 2. Sistema de Notificações Multi-Canal - ✅ **Priority Queue Algorithm** para ordenação de mensagens - ✅ **Circuit Breaker Pattern** para canais instáveis - ✅ **Exponential Backoff** para retry de falhas - ✅ **Rate Limiting** por canal e destinatário - ✅ **Deduplication Algorithm** para evitar spam ### 3. Personalização e Segmentação - ✅ **Collaborative Filtering** para preferências - ✅ **Clustering de audiências** por perfil comportamental - ✅ **A/B Testing** automático para otimização - ✅ **Sentiment Analysis** para ajuste de tom - ✅ **Demographic Segmentation** com ML ### 4. Análise de Engajamento - ✅ **Click-through Rate (CTR)** tracking - ✅ **Message Effectiveness Scoring** - ✅ **Response Time Analysis** - ✅ **Channel Performance Optimization** - ✅ **Conversion Funnel Analysis** ### 5. Processamento de Linguagem Natural - ✅ **Named Entity Recognition (NER)** para contextualização - ✅ **Text Summarization** para relatórios executivos - ✅ **Keyword Extraction** para tags automáticas - ✅ **Language Detection** automática - ✅ **Translation API** integration para multilíngue --- ## 📡 Canais de Comunicação Suportados ```python class CommunicationChannel(Enum): EMAIL = "email" SMS = "sms" WHATSAPP = "whatsapp" TELEGRAM = "telegram" WEBHOOK = "webhook" PUSH_NOTIFICATION = "push_notification" SLACK = "slack" DISCORD = "discord" PORTAL_WEB = "portal_web" API_CALLBACK = "api_callback" ``` **Total**: 10 canais suportados --- ## 🔧 Capacidades Principais ### ✅ Implementadas e Testadas 1. **Geração de Mensagens Personalizadas** - Adaptação automática de linguagem por perfil - Templates dinâmicos com variáveis - Formatação específica por canal 2. **Notificações Inteligentes** - Priorização automática (LOW → CRITICAL) - Deduplicação de mensagens similares - Retry automático com exponential backoff 3. **Análise de Engajamento** - Tracking de entrega, leitura, cliques - Métricas de efetividade por canal - Otimização contínua de mensagens 4. **Integração com Maritaca AI** - Geração de texto natural em português - Suporte a múltiplos modelos (sabia-2, sabia-3) - Conversação contextualizada 5. **Memória Conversacional** - Histórico de interações por usuário - Contexto mantido entre sessões - Personalização baseada em histórico ### ⚠️ Limitações Conhecidas 1. **HuggingFace Spaces Deploy** - Agente comentado no `__init__.py` por problemas de import - **Causa**: Dependência circular com `MaritacaClient` - **Workaround**: Usar via import direto `from src.agents.drummond import CommunicationAgent` 2. **Canais Externos** - WhatsApp, Telegram: Requerem configuração de API keys - SMS: Requer integração com provedor (Twilio/Vonage) 3. **Translation API** - Multilíngue funcional mas requer API key externa - Suporte nativo apenas para PT-BR --- ## 📋 Estrutura de Dados ### MessageTemplate ```python @dataclass class MessageTemplate: template_id: str message_type: MessageType # ALERT, REPORT, NOTIFICATION, etc language: str subject_template: str body_template: str variables: List[str] formatting_rules: Dict[str, Any] channel_adaptations: Dict[CommunicationChannel, Dict[str, str]] ``` ### CommunicationResult ```python @dataclass class CommunicationResult: message_id: str target_id: str channel: CommunicationChannel status: str # "sent", "failed", "pending", "delivered", "read" sent_at: datetime delivered_at: Optional[datetime] read_at: Optional[datetime] error_message: Optional[str] retry_count: int metadata: Dict[str, Any] ``` --- ## 💻 Exemplo de Uso ### Enviar Alerta de Anomalia ```python from src.agents.drummond import CommunicationAgent, CommunicationChannel, MessageType # Inicializar agente drummond = CommunicationAgent() await drummond.initialize() # Criar mensagem message = AgentMessage( content={ "type": "anomaly_alert", "organization": "Ministério da Saúde", "anomaly_type": "price_spike", "severity": "high", "value": 1_500_000.00, "expected_value": 500_000.00 }, context=AgentContext( conversation_id="conv_123", user_id="user_456" ) ) # Processar e enviar response = await drummond.process(message) # Resultado print(response.data["notification_sent"]) # { # "message_id": "msg_789", # "channels": ["email", "portal_web"], # "status": "sent", # "generated_text": "🚨 Alerta: Detectada anomalia de preço..." # } ``` ### Gerar Relatório em Linguagem Natural ```python # Gerar relatório executivo message = AgentMessage( content={ "type": "generate_summary", "investigation_results": { "anomalies_found": 12, "total_value": 5_000_000.00, "risk_level": "high" }, "audience": "executive", # executivo, técnico, cidadão "language": "pt-br" } ) response = await drummond.process(message) print(response.data["summary"]) # "Foram identificadas 12 irregularidades em contratos # governamentais, totalizando R$ 5 milhões em gastos # suspeitos. Recomenda-se investigação aprofundada..." ``` --- ## 🧪 Testes ### Cobertura de Testes - ✅ Testes unitários: `tests/unit/agents/test_drummond.py` - ✅ Testes de integração: Incluído em `test_new_agents_integration.py` - ✅ Testes de performance: `test_agent_performance.py` ### Principais Cenários Testados 1. **Geração de mensagens** - Template rendering - Personalização por perfil - Formatação por canal 2. **Notificações multi-canal** - Envio paralelo - Fallback automático - Retry em falhas 3. **Análise de engajamento** - Tracking de métricas - Cálculo de efetividade - Otimização de conteúdo --- ## 🔄 Integração com Outros Agentes ### Consumidores Principais 1. **Tiradentes (Reporter)** - Recebe relatórios técnicos - Traduz para linguagem cidadã - Distribui via canais apropriados 2. **Zumbi (Investigator)** - Envia alertas de anomalias detectadas - Notifica stakeholders relevantes 3. **Abaporu (Master)** - Comunica status de investigações - Envia relatórios consolidados ### Dependências - ✅ `MaritacaClient`: Geração de texto via LLM - ✅ `ConversationalMemory`: Contexto de conversas - ✅ `IntentDetection`: Classificação de intenções - ⚠️ `NotificationService`: Envio real por canais externos (opcional) --- ## 📊 Métricas e Monitoramento ### Métricas Prometheus Exportadas ```python # Mensagens enviadas drummond_messages_sent_total{channel="email", status="success"} # Taxa de entrega drummond_delivery_rate{channel="whatsapp"} # Tempo de processamento drummond_processing_duration_seconds # Taxa de engajamento drummond_engagement_rate{channel="portal_web", metric="ctr"} ``` --- ## 🚀 Roadmap ### Próximas Melhorias (para 100%) 1. **Resolver Import no HuggingFace** (prioridade alta) - Refatorar dependência circular com MaritacaClient - Descomentar no `__init__.py` 2. **Canais Adicionais** - Microsoft Teams - Mattermost - Matrix 3. **ML Avançado** - Fine-tuning de modelos para tom institucional brasileiro - Personalização automática por análise de histórico 4. **Analytics** - Dashboard de efetividade de comunicações - Predição de melhor horário/canal por usuário --- ## ⚠️ Notas de Deploy ### HuggingFace Spaces **Status Atual**: ❌ Não disponível (comentado no `__init__.py`) **Problema**: ```python # src/agents/__init__.py (linha 46) # from .drummond import CommunicationAgent # Comentado ``` **Causa**: Import circular com `MaritacaClient` causa erro no deploy HF **Solução Temporária**: ```python # Import direto quando necessário from src.agents.drummond import CommunicationAgent agent = CommunicationAgent() ``` ### Produção Local/Docker ✅ **Funciona perfeitamente** em ambiente local e Docker **Requisitos**: ```bash # .env MARITACA_API_KEY=your_key # Para geração de texto NOTIFICATION_CHANNELS=email,portal_web # Canais habilitados ``` --- ## 📚 Referências - **Poeta inspirador**: Carlos Drummond de Andrade (1902-1987) - **NLG Research**: Template-based vs Neural approaches - **Notification Patterns**: Circuit Breaker, Exponential Backoff - **Engagement Analytics**: CTR, Conversion funnel --- ## 🤝 Contribuindo Para melhorar este agente: 1. **Resolver o import circular** (alta prioridade) 2. **Adicionar templates** para novos tipos de comunicação 3. **Integrar novos canais** (Teams, Mattermost) 4. **Expandir testes** para cobrir edge cases --- **Autor**: Anderson Henrique da Silva **Manutenção**: Ativa **Versão**: 0.95 (Beta)