Skip to content

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 via LangChain.

License

Notifications You must be signed in to change notification settings

tomxdev/iris-agent

Repository files navigation

🔍 IRIS - Incident Response & Investigation System

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.


📑 Índice


⚡ Visão rápida

  • 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.

🛠️ Stack e requisitos

  • 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).

🐳 Como rodar (Docker)

# 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_drop

Rebuild após alterações de código/deps:

docker-compose build app

⏱️ Comandos rápidos

  • 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

🔌 Portas e variáveis

  • Redis: externa 6381 → interna 6379 (ajuste com REDIS_PORT=...; se não definir, usa porta aleatória livre).
  • Qdrant HTTP: 63346333; gRPC: 63356334 (ajuste com QDRANT_PORT, QDRANT_GRPC_PORT; se não definir, usa portas aleatórias livres).
  • Dentro do Compose, os serviços usam redis:6379 e qdrant:6333 (não precisa mudar REDIS_URL/QDRANT_URL do app).
  • Exemplo .env local:
    LLM_PROVIDER=anthropic
    REDIS_URL=redis://localhost:6381
    QDRANT_URL=http://localhost:6334

🔄 Fluxo de análise

  1. Pré-análise vetorial no Qdrant: procura incidentes similares; se achar match alto, devolve resolução em <1s sem custo de LLM.
  2. Executa subagentes (paralelo): Deploy, Métricas, Logs (com cache em Redis).
  3. Síntese final: correlaciona achados e gera relatório Markdown em ./reports.
  4. Cache/embedding reais: se Redis/Qdrant ativos; caso contrário, volta para mocks sem quebrar a demo.

🗺️ Arquitetura

┌──────────────────────────────────────────────────────────────────────────┐
│                              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  ││
│        └─────────────────────┘ └───────────────────┘ └──────────────────┘│
│                                                                          │
└──────────────────────────────────────────────────────────────────────────┘

🗂️ Estrutura do projeto

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

🔗 Integrações

  • 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.


🛠️ Troubleshooting

  • 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 --demo automaticamente e usa mocks.
  • Rebuild necessário: docker-compose build app.

🤝 Contribuindo

Sinta-se à vontade para abrir issues ou pull requests!

📄 Licença

MIT License***

About

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 via LangChain.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published