| # 📢 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) | |