🔍 Zumbi dos Palmares - Agente Investigador
Implementado em src/agents/zumbi.py (842 linhas) com 96% de cobertura de testes.
Herda de ReflectiveAgent com quality threshold 0.8 e max 3 reflection iterations.
Produção desde outubro/2025 via Railway.
📋 Visão Geral
O agente Zumbi dos Palmares é o investigador principal do sistema, especializado em detectar anomalias, irregularidades e padrões suspeitos em contratos e despesas públicas. Inspirado no líder quilombola símbolo de resistência, este agente combate irregularidades com técnicas estatísticas avançadas.
🎯 Capacidades Principais
1. Detecção de Anomalias de Preço 📊
# Configuração padrão
PRICE_ANOMALY_THRESHOLD = 2.5 # desvios padrão
- Análise estatística com Z-score
- Comparação com médias históricas
- Identificação de sobrepreço e subpreço
- Taxa de detecção: 87%
2. Análise de Concentração de Fornecedores 🏢
# Trigger de alerta
CONCENTRATION_THRESHOLD = 0.7 # 70% dos contratos
- Detecção de monopólios
- Análise de competitividade
- Identificação de cartéis
- Métricas de diversidade
3. Análise Espectral (FFT) 🌊
# Detecção de padrões periódicos
MIN_FREQUENCY_PEAK = 0.3 # amplitude mínima
- Transformada de Fourier para séries temporais
- Detecção de sazonalidades artificiais
- Identificação de padrões cíclicos suspeitos
- Análise de frequências dominantes
4. Detecção de Contratos Duplicados 👥
# Similaridade para duplicatas
SIMILARITY_THRESHOLD = 0.85 # 85% de similaridade
- Análise de similaridade textual
- Detecção de fracionamento
- Identificação de contratos repetidos
- Validação cruzada de fornecedores
5. Padrões Temporais ⏰
- Concentração em fim de exercício
- Velocidade anormal de execução
- Gaps temporais suspeitos
- Análise de urgência injustificada
💻 Implementação Técnica
Estrutura da Classe
class InvestigatorAgent(ReflectiveAgent):
def __init__(self):
super().__init__(
agent_id="zumbi",
name="Zumbi dos Palmares",
description="Investigador especializado em anomalias",
capabilities=[
"anomaly_detection",
"pattern_analysis",
"fraud_detection",
"spectral_analysis",
"temporal_patterns"
]
)
Exemplo de Uso Completo
from src.agents.zumbi import InvestigatorAgent
from src.agents.deodoro import AgentMessage, AgentContext
# Inicializar agente
zumbi = InvestigatorAgent()
# Preparar investigação
message = AgentMessage(
content={
"type": "investigate_contracts",
"data": {
"contracts": [...], # Lista de contratos
"filters": {
"year": 2024,
"min_value": 100000,
"organ": "Ministry of Health"
}
}
},
sender="abaporu",
context=AgentContext(
investigation_id="INV-2024-001"
)
)
# Executar investigação
response = await zumbi.process(message)
# Estrutura da resposta
{
"status": "completed",
"anomalies_found": 15,
"risk_score": 0.78,
"findings": {
"price_anomalies": [
{
"contract_id": "CTR-123",
"z_score": 3.2,
"expected_value": 50000,
"actual_value": 150000,
"overpricing_percentage": 200
}
],
"vendor_concentration": {
"vendor_id": "VNDR-456",
"concentration": 0.82,
"contracts_count": 45,
"total_value": 5000000
},
"temporal_patterns": [
{
"pattern": "end_of_year_spike",
"confidence": 0.91,
"affected_contracts": 23
}
],
"spectral_analysis": {
"dominant_frequency": 0.25, # Quarterly pattern
"amplitude": 0.75,
"interpretation": "Artificial quarterly spending"
}
},
"recommendations": [
"Investigate vendor VNDR-456 for possible cartel",
"Review Q4 contracts for urgency justification",
"Audit pricing methodology for overpriced items"
],
"confidence": 0.89
}
📊 Métricas de Performance
Indicadores de Qualidade
| Métrica | Valor Atual | Meta | Status |
|---|---|---|---|
| Cobertura de Testes | 96% | >90% | ✅ Tier 1 |
| Taxa de Detecção | 87% | >85% | ✅ |
| Falsos Positivos | 4.2% | <5% | ✅ |
| Tempo de Resposta (p95) | 1.8s | <2s | ✅ |
| Precisão | 91% | >90% | ✅ |
| Reflection Threshold | 0.8 | - | ⚙️ Auto-melhoria |
| Max Iterations | 3 | - | ⚙️ Quality control |
Benchmarks de Performance
| Volume | Contratos | Tempo Médio | Tempo p95 |
|---|---|---|---|
| Pequeno | 100 | ~0.3s | ~0.5s |
| Médio | 1,000 | ~1.2s | ~1.8s |
| Grande | 10,000 | ~8.5s | ~12s |
| Extra Grande | 100,000 | ~85s | ~120s |
Otimizações Aplicadas:
- ⚡ Processamento paralelo (4 workers)
- 💾 Cache multi-layer (Redis + Memory)
- 🔄 Batch processing (1000 registros/lote)
- 📊 Lazy loading de dependências
🔧 Configuração Avançada
Variáveis de Ambiente
# Performance
ZUMBI_BATCH_SIZE=1000 # Tamanho do lote
ZUMBI_MAX_WORKERS=4 # Workers paralelos
ZUMBI_CACHE_TTL=3600 # Cache em segundos
# Sensibilidade
ZUMBI_ZSCORE_THRESHOLD=2.5 # Threshold Z-score
ZUMBI_CONCENTRATION_THRESHOLD=0.7 # Concentração máxima
ZUMBI_SIMILARITY_THRESHOLD=0.85 # Similaridade duplicatas
Ajuste Fino de Parâmetros
# Customização por contexto
custom_config = {
"emergency_contracts": {
"zscore_threshold": 3.0, # Menos sensível
"temporal_analysis": False
},
"high_risk_organs": {
"zscore_threshold": 2.0, # Mais sensível
"enable_all_checks": True
}
}
🧪 Testes e Validação
Suite de Testes
# Executar todos os testes
pytest tests/unit/test_agents/test_zumbi.py -v
# Testes específicos
pytest -k "test_detect_price_anomalies"
pytest -k "test_spectral_analysis"
pytest -k "test_vendor_concentration"
# Com cobertura detalhada
pytest tests/unit/test_agents/test_zumbi.py \
--cov=src.agents.zumbi \
--cov-report=html
Casos de Teste Principais
- ✅ Detecção de sobrepreço extremo
- ✅ Identificação de cartéis
- ✅ Análise de padrões temporais
- ✅ FFT em séries temporais
- ✅ Contratos duplicados
- ✅ Auto-reflexão em baixa qualidade
🔄 Integração no Sistema
Fluxo de Dados
Comunicação Inter-Agente
# Mensagem de entrada (de Abaporu)
{
"action": "investigate",
"priority": "high",
"scope": "full_analysis",
"context": {
"investigation_id": "INV-001",
"requester": "user_123"
}
}
# Mensagem de saída (para Anita)
{
"action": "analyze_patterns",
"anomalies": [...],
"priority": "high",
"next_agent": "anita"
}
🚀 Melhorias Futuras
Em Desenvolvimento
- 🔄 Machine Learning para detecção adaptativa
- 🔄 Análise de grafos para relações complexas
- 🔄 NLP avançado para descrições de contratos
Backlog
- 📋 Integração com blockchain para auditoria
- 📋 Análise preditiva de riscos
- 📋 Dashboard em tempo real
- 📋 API para ferramentas externas
🐛 Limitações Conhecidas
-
Volume de Dados
- Performance degrada acima de 100k registros
- Solução: Implementar processamento em streaming
-
Contratos Emergenciais
- Maior taxa de falsos positivos
- Solução: Contexto específico para emergências
-
Dados Históricos
- Requer mínimo de 12 meses para análise temporal
- Solução: Fallback para análise cross-sectional
🏗️ Herança e Arquitetura
Relação com Deodoro
Zumbi herda de ReflectiveAgent (definido em src/agents/deodoro.py):
class InvestigatorAgent(ReflectiveAgent):
"""
Herda capacidades de auto-reflexão do Deodoro.
Funcionalidades herdadas:
- Quality threshold: 0.8 (80% de confiança mínima)
- Max reflection loops: 3 (até 3 iterações de melhoria)
- Retry logic com exponential backoff
- State management (IDLE → THINKING → ACTING → COMPLETED)
- Prometheus metrics integration
- Structured logging
"""
Benefícios da Herança:
- ✅ Auto-reflexão quando confiança < 0.8
- ✅ Retry automático em falhas (max 3 tentativas)
- ✅ Métricas Prometheus automáticas
- ✅ Logging estruturado de eventos
- ✅ Lifecycle management (initialize/shutdown)
Padrão ReAct (Reasoning + Acting):
- 🧠 Reason: Analisa dados e detecta anomalias
- 🎯 Act: Executa investigação e gera relatório
- 🔄 Reflect: Avalia qualidade do resultado
- ♻️ Retry: Se qualidade < 0.8, melhora e tenta novamente
Integração no Sistema Multi-Agente
Zumbi trabalha em colaboração com outros agentes:
📚 Referências e Recursos
Documentação Relacionada
- Deodoro - Base Framework - Classe base que Zumbi herda
- Arquitetura Multi-Agente
- Pipeline de Dados
- Visão Geral dos Agentes
Cultural
- Zumbi dos Palmares (1655-1695) - Líder do Quilombo dos Palmares
- Resistência: Símbolo da luta contra opressão e injustiça
- Legado: Inspiração para combate à corrupção e defesa do bem público
Técnicas
- FFT (Fast Fourier Transform): Análise espectral de séries temporais
- Z-Score Analysis: Detecção estatística de outliers
- Similarity Matching: Algoritmos de similaridade textual
- Temporal Pattern Recognition: Análise de padrões ao longo do tempo
Anterior: 🏛️ Deodoro - Base Framework ← Próximo: 📊 Anita Garibaldi - Analyst Agent →
Última Atualização: 2025-01-22 Status: ✅ Tier 1 - 96% Coverage Autor: Anderson Henrique da Silva
💡 Destaque: Zumbi é o agente Tier 1 com maior cobertura de testes (96%) e um dos mais completos do sistema! ⚔️