Uma solução de ponta a ponta que automatiza a coleta, análise e geração de relatórios sobre a Síndrome Respiratória Aguda Grave (SRAG) no Brasil, utilizando um agente de IA autônomo.
Este projeto implementa um sistema robusto que transforma dados públicos brutos do OpenDataSUS em um relatório de inteligência acionável. A solução combina um pipeline de engenharia de dados, um agente de IA orquestrado com LangGraph e uma interface web interativa construída com Streamlit.
O monitoramento de síndromes respiratórias é uma tarefa complexa que envolve a análise de grandes volumes de dados epidemiológicos e a contextualização com notícias e eventos atuais. Este projeto resolve esse desafio ao automatizar todo o fluxo de trabalho:
- Extração e Processamento (ETL): Os dados mais recentes de SRAG são baixados do portal OpenDataSUS, limpos, transformados e carregados em um banco de dados local (SQLite).
- Análise e Geração de Insights: Um agente de IA autônomo, dotado de ferramentas especializadas, consulta o banco de dados para extrair métricas-chave e busca na web por notícias relevantes para contextualizar os achados.
- Geração de Relatório: O agente sintetiza todas as informações coletadas (métricas quantitativas e contexto qualitativo) em um relatório técnico estruturado, seguindo as melhores práticas de vigilância em saúde.
- Apresentação Interativa: Uma aplicação web permite que qualquer usuário acione todo o pipeline com um único clique e visualize o relatório e os gráficos gerados.
- Pipeline de Dados Automatizado: Extração assíncrona e eficiente de dados
.parquetdiretamente do OpenDataSUS. - Agente Autônomo com LangGraph: O núcleo da solução é um agente inteligente que planeja e executa uma sequência de tarefas para atingir seu objetivo.
- Arquitetura Multi-Ferramentas (Multi-Tool):
- Ferramenta SQL: Permite que o agente converse com o banco de dados em linguagem natural para obter métricas precisas.
- Ferramenta de RAG (Retrieval-Augmented Generation): Busca notícias recentes na web, as processa e utiliza um sistema de busca híbrida (semântica + palavra-chave) para encontrar o contexto mais relevante, mitigando alucinações.
- Geração de Gráficos Automatizada: Criação automática de visualizações sobre a evolução de casos diários e mensais.
- Interface Web Intuitiva: Um dashboard simples e poderoso construído com Streamlit para facilitar a interação e a visualização dos resultados.
A arquitetura foi projetada de forma modular, separando as responsabilidades em três grandes fases que são orquestradas pela aplicação principal:
-
Fase 1: Preparação de Dados (ETL & Gráficos)
- O
app.pyaciona obuild_database.py, que por sua vez utiliza os módulosdata_extractor,data_loaderedata_transformerpara construir o banco de dadossrag_data.db. Em seguida, ochart_generator.pyé chamado para criar os gráficos e salvá-los na pastaimg/.
- O
-
Fase 2: Orquestração com Agente de IA (LangGraph)
- O
app.pyinicializa o agente definido emagent_orchestrator.py. Este orquestrador gerencia um grafo de estados onde o LLM (GPT-4o) atua como um cérebro, decidindo qual ferramenta (agent_tools.py) usar em seguida (SQL ou RAG) ou se já possui informações suficientes para finalizar.
- O
-
Fase 3: Geração e Apresentação do Relatório
- Após o agente coletar os dados, ele entra no nó final de geração de relatório. O LLM utiliza um prompt estruturado para sintetizar as informações em um formato Markdown. A aplicação Streamlit (
app.py) exibe o relatório e os gráficos para o usuário.
- Após o agente coletar os dados, ele entra no nó final de geração de relatório. O LLM utiliza um prompt estruturado para sintetizar as informações em um formato Markdown. A aplicação Streamlit (
| Componente | Tecnologia / Biblioteca | Propósito |
|---|---|---|
| Orquestração de IA | LangChain, LangGraph | Construção do agente autônomo, gerenciamento de estado e fluxo cíclico. |
| Modelo de Linguagem | OpenAI (GPT-4o) | Raciocínio, planejamento de tarefas e síntese de relatórios. |
| Engenharia de Dados | Pandas, aiohttp, BeautifulSoup4 | Extração, transformação e carregamento dos dados de SRAG. |
| Banco de Dados | SQLite | Armazenamento local dos dados processados para consulta analítica. |
| Busca e RAG | Tavily Search API, FAISS, rank-bm25 | Busca de notícias na web e implementação de recuperação híbrida. |
| Interface Web | Streamlit | Criação do dashboard interativo para o usuário final. |
| Linguagem | Python 3.9+ | Linguagem principal de desenvolvimento. |
.
├── .env.example \# Exemplo de arquivo para variáveis de ambiente
├── .gitignore
├── README.md \# Este arquivo
├── app.py \# Script principal da aplicação Streamlit
├── build_database.py \# Script para orquestrar o pipeline de ETL
├── requirements.txt \# Lista de dependências Python
├── run_project.py \# Script auxiliar para iniciar a aplicação
│
├── data/
│ ├── .gitkeep
│ └── dicionario_dados.json \# Dicionário para renomear colunas
│
├── docs/
│ └── diagrama_conceitual.pdf \# Diagrama visual da arquitetura
│
├── img/
│ └── .gitkeep \# Pasta para salvar os gráficos gerados
│
└── src/
├── **init**.py
├── agent_orchestrator.py \# Define a arquitetura do agente com LangGraph
├── agent_tools.py \# Implementa as ferramentas SQL e RAG
├── chart_generator.py \# Script para gerar e salvar os gráficos
├── data_extractor.py \# Módulo para baixar dados do OpenDataSUS
├── data_loader.py \# Módulo para carregar e renomear dados
└── data_transformer.py \# Módulo para limpar e transformar os dados
Siga os passos abaixo para configurar e executar o projeto em seu ambiente local.
- Python
- Git
git clone https://github.com/oericdacosta/ai_health_monitor.git
cd ai_health_monitorÉ uma boa prática usar um ambiente virtual para isolar as dependências do projeto.
# Para Linux/macOS
python3 -m venv venv
source venv/bin/activate
# Para Windows
python -m venv venv
.\venv\Scripts\activateInstale todas as bibliotecas necessárias a partir do arquivo requirements.txt.
pip install -r requirements.txtVocê precisará de chaves de API para a OpenAI e a Tavily.
- Crie um arquivo
.envna raiz do projeto, copiando o exemplo:cp .env.example .env
- Abra o arquivo
.enve adicione suas chaves de API:OPENAI_API_KEY="sk-..." TAVILY_API_KEY="tvly-..."
Use o script run_project.py para iniciar o servidor Streamlit.
python run_project.pyAcesse a URL local fornecida no terminal (geralmente http://localhost:8501) em seu navegador para interagir com a aplicação.
Ao abrir a aplicação, você verá um único botão: "Gerar Relatório Completo". Ao clicar nele, o sistema executa a seguinte sequência de tarefas, mostrando o progresso em tempo real:
- Verificação do Ambiente de Dados: O sistema verifica se os dados brutos e o banco de dados já existem. Se não, ele executa o pipeline de ETL automaticamente.
- Geração de Gráficos: As visualizações de casos diários e mensais são geradas e salvas.
- Análise do Agente de IA: O agente é acionado. Ele primeiro usa a Ferramenta SQL para obter as métricas, depois a Ferramenta RAG para buscar contexto nas notícias.
- Apresentação dos Resultados: O relatório final em Markdown é renderizado na tela, seguido pelos gráficos.