Agente de IA com arquitetura de subagentes especializados que investiga automaticamente alertas de sistemas, correlaciona dados de múltiplas fontes (deploys, métricas, logs), e gera relatórios com hipóteses priorizadas. Utiliza banco vetorizado para aprender com incidentes passados e suporta múltiplos provedores de LLM (Claude, GPT, Llama) via LangChain. Ao executar localmente, utiliza dados mockados que simulam cenários reais de produção.
- Visão rápida
- Stack e requisitos
- Como rodar (Docker)
- Comandos rápidos
- Portas e variáveis
- Fluxo de análise
- Arquitetura
- Estrutura do projeto
- Integrações
- Troubleshooting
- Multi-LLM (Anthropic, OpenAI, Ollama).
- Pré-análise vetorial com Qdrant para reutilizar incidentes parecidos.
- Cache real em Redis para evitar chamadas repetidas.
- Subagentes: Deploy, Métricas e Logs; síntese final com LLM.
- Relatórios Markdown salvos em
./reports.
- Docker + Docker Compose (recomendado).
- Python 3.11 (se rodar local).
- Redis 7 (porta padrão externa 6381).
- Qdrant latest (porta padrão externa 6334/6335).
# Subir serviços de suporte (Redis na porta 6381, Qdrant nas 6334/6335)
docker-compose up -d redis qdrant
# (Opcional) Popular Qdrant com incidentes de exemplo
docker-compose run --rm app python main.py --seed
# Rodar demo (usa mocks; se Redis/Qdrant estiverem ligados, cache e vetorial ficam ativos)
docker-compose run --rm app python main.py --demo
# Analisar um alerta de exemplo real (usa LLM se houver API key)
docker-compose run --rm app python main.py transaction_dropRebuild após alterações de código/deps:
docker-compose build app- Ajuda:
python main.py --help - Demo:
python main.py --demo - Popular Qdrant:
python main.py --seed - Estatísticas de serviços:
python main.py --stats - Trocar provedor LLM:
python main.py --provider openai transaction_drop
- Redis: externa
6381→ interna6379(ajuste comREDIS_PORT=...; se não definir, usa porta aleatória livre). - Qdrant HTTP:
6334→6333; gRPC:6335→6334(ajuste comQDRANT_PORT,QDRANT_GRPC_PORT; se não definir, usa portas aleatórias livres). - Dentro do Compose, os serviços usam
redis:6379eqdrant:6333(não precisa mudarREDIS_URL/QDRANT_URLdo app). - Exemplo
.envlocal:LLM_PROVIDER=anthropic REDIS_URL=redis://localhost:6381 QDRANT_URL=http://localhost:6334
- Pré-análise vetorial no Qdrant: procura incidentes similares; se achar match alto, devolve resolução em <1s sem custo de LLM.
- Executa subagentes (paralelo): Deploy, Métricas, Logs (com cache em Redis).
- Síntese final: correlaciona achados e gera relatório Markdown em
./reports. - Cache/embedding reais: se Redis/Qdrant ativos; caso contrário, volta para mocks sem quebrar a demo.
┌──────────────────────────────────────────────────────────────────────────┐
│ DOCKER │
│ │
│ Ingestão de alertas │
│ ┌─────────────┐ ┌────────────┐ │
│ │ CLI (main) │◄────►│ Webhook │───┐ │
│ └─────────────┘ │ (HTTP) │ │ │
│ └────────────┘ │ alerta │
│ │ │
│ ┌─────────▼─────────┐ │
│ │ Orchestrator │ │
│ │ + Synthesizer LLM │ │
│ └─────────┬─────────┘ │
│ │ │
│ ┌─────────────┐ ┌───────▼──────────┐ │
│ │ Redis │ │ Qdrant │ │
│ │ (cache) │ │ (pre-análise) │ │
│ └─────┬───────┘ └────────┬─────────┘ │
│ │ │ │
│ ┌───────────────▼──────────────┐ ┌─────▼─────┐ ┌───────────────▼─────┐ │
│ │ Deploy Agent (tools + cache) │ │ Metrics │ │ Logs Agent (cache + │ │
│ │ │ │ Agent │ │ histórico vetorial) │ │
│ └───────────────┬──────────────┘ └─────┬─────┘ └──────────────┬──────┘ │
│ │ │ │ │
│ ┌─────────▼───────────┐ ┌────────▼──────────┐ ┌─────────▼────────┐│
│ │ Deploy/CI providers │ │ Metrics providers │ │ Logs/incidents ││
│ │ (GitHub, Argo…) │ │ (Datadog, Prom…) │ │ (Sentry, Loki…) ││
│ │ + mock fallback │ │ + mock fallback │ │ + mock fallback ││
│ └─────────────────────┘ └───────────────────┘ └──────────────────┘│
│ │
└──────────────────────────────────────────────────────────────────────────┘
iris-agent/
├─ main.py # CLI de entrada e flags
├─ orchestrator.py # Pré-análise vetorial + subagentes + síntese
├─ webhook_server.py # Webhook HTTP que dispara o fluxo
├─ agents/ # Subagentes (deploy, métricas, logs)
│ ├─ base_agent.py
│ ├─ deploy_agent.py
│ ├─ metrics_agent.py
│ └─ logs_agent.py
├─ providers/ # Integrações reais (GitHub/Argo, Datadog/Prom, Loki/Sentry)
│ └─ ... # Fallback para mock quando desabilitado
├─ services/ # Infra: cache Redis, vetor Qdrant, relatórios
├─ reports/ # Saída dos relatórios Markdown
├─ Dockerfile
├─ docker-compose.yml
└─ requirements.txt
- LLMs: Anthropic, OpenAI, Google.
- Métricas: Datadog, Prometheus (mock fallback).
- Logs/erros: Sentry, Elasticsearch, Loki (mock fallback).
- Deploy: ArgoCD, GitHub (mock fallback).
- Alertas/Notificações: Grafana, Slack.
Configure via .env (veja .env.example). Quando uma integração falha ou está desabilitada, o agente volta para mocks sem interromper a análise.
- Porta em uso (Redis/Qdrant):
Use outras portas, ex.:REDIS_PORT=6385 QDRANT_PORT=6336 QDRANT_GRPC_PORT=6337 docker-compose up -d redis qdrant. - Qdrant vazio: rode
docker-compose run --rm app python main.py --seed. - Sem API key: o app cai para
--demoautomaticamente e usa mocks. - Rebuild necessário:
docker-compose build app.
Sinta-se à vontade para abrir issues ou pull requests!
MIT License***