Este é um projeto WIP (Work In Progress) que implementa um chatbot para análise de dados utilizando Streamlit, Pandas, DuckDB, AWS Athena, Boto3, e LLMs (Large Language Models). O objetivo é interpretar perguntas feitas em linguagem natural, convertê-las em queries SQL, executar essas queries em um banco de dados local ou na nuvem, e retornar insights significativos de maneira clara e explicativa.
- Conversão de Linguagem Natural para SQL: Perguntas feitas em linguagem natural são convertidas em queries SQL utilizando modelos de linguagem.
- Validação de Perguntas e Queries:
- Verificação de sintaxe SQL e segurança da query.
- Bloqueio de operações de modificação do banco (ex.:
INSERT
,UPDATE
,DELETE
).
- Execução Local e em Nuvem:
- Integração com DuckDB para execução local de queries.
- Integração com AWS Athena para execução de queries na nuvem.
- Interface Intuitiva:
- Desenvolvido com Streamlit, permitindo interação simples e amigável.
- Respostas Explicativas:
- Os resultados das queries são analisados e apresentados de forma clara e detalhada.
project/
├── main.py # Código principal (integração Streamlit)
├── config/
│ └── settings.py # Configurações do projeto (ex.: caminho do dataset, credenciais AWS)
├── models/
│ ├── query_generator.py # Geração de queries SQL
│ ├── input_validator.py # Validação de entrada do usuário
│ ├── analyse_query_response.py # Análise dos resultados da query
│ ├── query_sql_validator.py # Validação sintática das queries SQL
├── utils/
│ ├── executor_duck.py # Execução de queries com DuckDB
│ ├── executor_athena.py # Execução de queries com AWS Athena
│ ├── sql_extractor.py # Extração de SQL a partir da resposta do GPT
├── data/
│ └── dataset.csv # Dataset utilizado pelo chatbot
├── requirements.txt # Dependências do projeto
└── README.md # Documentação do projeto
- Frameworks e Ferramentas:
- Streamlit: Interface do chatbot.
- DuckDB: Execução local de queries SQL.
- Pandas: Processamento e manipulação de dados.
- AWS Athena: Execução de queries SQL na nuvem.
- Boto3: Integração com serviços AWS.
- OpenAI GPT: Conversão de linguagem natural para SQL.
O chatbot utiliza um dataset que contém as seguintes colunas (não são permitidas consultas fora deste esquema):
Coluna | Descrição |
---|---|
REF_DATE |
Data de referência do registro. |
TARGET |
Alvo binário de inadimplência (1: Mau Pagador, atraso > 60 dias em 2 meses). |
VAR2 |
Sexo do indivíduo (masculino/feminino). |
IDADE |
Idade do indivíduo. |
VAR4 |
Flag de óbito (indica se o indivíduo faleceu). |
VAR5 |
Unidade Federativa (UF) brasileira. |
VAR8 |
Classe social estimada. |
- Python 3.8 ou superior.
- AWS CLI configurado com acesso válido.
- Instale as dependências:
pip install -r requirements.txt
- Configure as credenciais AWS em
~/.aws/credentials
ou diretamente no código (viasettings.py
). - Certifique-se de que o dataset
dataset.csv
está emdata/
ou altere o caminho no arquivosettings.py
.
- Carregue o dataset em
data/dataset.csv
(ou configure o caminho emconfig/settings.py
). - Inicie o Streamlit:
streamlit run main.py
- Acesse a interface no navegador (geralmente em
http://localhost:8501
).
- Validação de Perguntas:
- Garante que o input do usuário é coerente e seguro.
- Validação de Queries SQL:
- Verifica sintaxe SQL e bloqueia operações potencialmente destrutivas (
INSERT
,UPDATE
, etc.).
- Verifica sintaxe SQL e bloqueia operações potencialmente destrutivas (
- Melhorias na Análise:
- Adicionar gráficos e visualizações com Plotly ou Matplotlib.
- Otimização de Performance:
- Implementar cache para evitar execução repetitiva de queries já realizadas.
Aqui está o texto atualizado para adicionar ao README do projeto, destacando as futuras melhorias:
-
Bucket Temporário para Consultas Athena:
- Criar um bucket temporário dedicado para armazenar os resultados das consultas realizadas no Athena, garantindo maior organização e segurança.
-
Automação com Terraform:
- Utilizar Terraform para provisionar e gerenciar os recursos AWS necessários, incluindo:
- Tabela no AWS Glue.
- Definição de partições para otimizar consultas no Athena.
- Configuração do bucket S3 para armazenamento de dados e resultados das consultas.
- Utilizar Terraform para provisionar e gerenciar os recursos AWS necessários, incluindo:
-
Particionamento de Dados:
- Implementar o particionamento dos dados no S3 (por exemplo, por estado ou data), a fim de melhorar o desempenho e reduzir custos nas consultas realizadas com Athena.