You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# 🤖 Agente IA para Consulta de Banco de Dados - Case Areco
## 📋 Descrição do Projeto
Este projeto implementa um **agente de IA** capaz de interpretar perguntas em **linguagem natural (português brasileiro)** e consultar um banco de dados MySQL para fornecer respostas relevantes. O agente foi desenvolvido para facilitar o acesso a dados em sistemas ERP, permitindo que usuários façam consultas sem conhecimento técnico de SQL.
## 🎯 Objetivo
Criar um agente inteligente que:
- ✅ Recebe perguntas em português
- ✅ Traduz automaticamente para consultas SQL
- ✅ Conecta-se ao banco de dados MySQL
- ✅ Retorna respostas claras e objetivas
- ✅ Lida com ambiguidades e perguntas variadas
## 🛠️ Tecnologias Utilizadas
- **Linguagem:** Python 3.11+
- **Framework IA:** LangChain + LangGraph
- **LLM:** Groq (LLaMA 3.1 via API)
- **Banco de Dados:** MySQL
- **Bibliotecas:**
- `langchain` - Framework para agentes de IA
- `langchain-community` - Ferramentas de banco de dados
- `pymysql` - Conector MySQL
- `python-dotenv` - Gerenciamento de variáveis de ambiente
- `sqlalchemy` - ORM para SQL
## 📊 Estrutura do Banco de Dados
### Banco: `empresa`
**Tabela: clientes**
```sql
CREATE TABLE clientes (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
email VARCHAR(150) UNIQUE NOT NULL,
idade INT
);
```
**Tabela: pedidos**
```sql
CREATE TABLE pedidos (
id INT AUTO_INCREMENT PRIMARY KEY,
cliente_id INT NOT NULL,
produto VARCHAR(150) NOT NULL,
valor DECIMAL(10,2) NOT NULL,
FOREIGN KEY (cliente_id) REFERENCES clientes(id) ON DELETE CASCADE
);
```
### Dados de Exemplo
**Clientes:**
- Ana Paula (25 anos)
- Bruno Silva (30 anos)
- Carla Souza (28 anos)
- Daniel Oliveira (35 anos)
- Elisa Mendes (27 anos)
**Pedidos:**
- Notebook (R$ 2.500,00), Mouse (R$ 50,00), etc.
## 🚀 Como Executar
### 1. Pré-requisitos
- Python 3.11 ou superior
- MySQL Server instalado e rodando
- Conta Groq (API Key gratuita)
### 2. Instalação
```bash
# Clone o repositório
git clone
cd agent_bd
# Instale as dependências
pip install -r requirements.txt
```
### 3. Configuração
Crie um arquivo `.env` na raiz do projeto:
```env
GROQ_API_KEY=sua_chave_api_aqui
```
### 4. Criar o Banco de Dados
Execute o script SQL em `bd/banco.sql` no MySQL Workbench ou terminal caso o 'empresa.db' não exista na pasta bd:
```bash
mysql -u root < bd/banco.sql
```
### 5. Executar o Agente
```bash
python main.py
```
## 💬 Exemplos de Uso
O agente pode responder perguntas como:
- "Quantos produtos o Bruno Silva comprou?"
- "Quem comprou mais?"
- "Qual o valor total de vendas?"
- "Liste todos os clientes com idade acima de 25 anos"
- "Quais produtos foram comprados pela Ana Paula?"
## 📂 Estrutura do Projeto
```
agent_bd/
├── bd/
│ └── banco.sql # Script de criação do banco
├── main.py # Código principal do agente
├── requirements.txt # Dependências do projeto
├── .env # Variáveis de ambiente (não versionado)
├── README.md # Este arquivo
└── README_PROJETO.md # Documentação detalhada
```
## 🧠 Funcionamento do Agente
1. **Recebe pergunta** em linguagem natural
2. **Analisa tabelas** disponíveis no banco
3. **Examina schema** das tabelas relevantes
4. **Gera query SQL** automaticamente
5. **Valida a query** antes de executar
6. **Executa consulta** no banco
7. **Interpreta resultados** e formata resposta
8. **Retorna resposta** em português claro
## 🔒 Segurança
- ❌ O agente **NÃO executa** comandos DML (INSERT, UPDATE, DELETE, DROP)
- ✅ Apenas consultas SELECT são permitidas
- ✅ API Keys armazenadas em arquivo `.env` (não versionado)
- ✅ Validação de queries antes da execução
## 📝 Observações
- O projeto usa **Groq API** (gratuita) em vez de OpenAI
- Limite de 5 resultados por consulta (configurável)
- Respostas formatadas em português brasileiro
- Sistema preparado para lidar com ambiguidades
## 👨💻 Desenvolvedor
Lucas - Case Técnico Areco
Data: Novembro 2025
## 📄 Licença
Este projeto foi desenvolvido como parte de um processo seletivo.
# agent_sql_query