# SQL Optimizer Team (Agno) POC de um time de agentes usando o framework **Agno** para reproduzir o fluxo do projeto oracle-sql-query-optimizer. ## Objetivo - Receber uma SQL e o banco alvo (oracle/sqlserver/postgresql/mysql/sqlite). - Gerar explicação detalhada (SQL → linguagem natural). - Gerar SQL otimizada (linguagem natural → SQL), preservando 100% da lógica de negócio. - (Opcional) Gerar análise conservadora (sem reescrever a query). As **prompts** são mantidas idênticas às do projeto oracle-sql-query-optimizer. ## Estrutura ```text src/ common/ sql_optimizer_team/ team_app.py agents/ prompts/ tools/ ``` ## Configuração rápida 1) Crie o ambiente e instale dependências: - `pip install -r requirements.txt` 2) Configure variáveis de ambiente (exemplo em `sample.env`). 3) Execute o servidor: - `PYTHONPATH=src python -m sql_optimizer_team.team_app` Acesse: - `http://localhost:8204/docs` (Swagger UI) - `http://localhost:8204` (informações básicas da API) ## CLI (funcionalidades originais) O CLI original foi incluído no projeto. Execute com: - `PYTHONPATH=src python -m main --help` Exemplos: - `PYTHONPATH=src python -m main optimize /caminho/query.sql --database oracle` - `PYTHONPATH=src python -m main compare /caminho/query.sql --databases oracle,sqlite` - `PYTHONPATH=src python -m main list-databases` - `PYTHONPATH=src python -m main list-providers` ## Fluxo do time 1) **Gestor** recebe a requisição e valida o contexto (banco + SQL). 2) **SQL Analyst** gera a explicação detalhada usando a prompt original. 3) **SQL Optimizer** gera a query otimizada preservando toda a lógica. 4) **SQL Quality Reviewer** valida fidelidade e checklist. 5) **Conservative Analyst** (se solicitado) gera análise sem reescrever a query. 6) **Gestor** consolida e entrega. ## Observações - Use o modelo configurado em variáveis de ambiente (ex.: OpenAI, Gemini, Groq, etc.). - O time é colaborativo e mantém histórico em SQLite (configurável via env).