- Added PostgreSQLPromptGenerator for generating prompts optimized for PostgreSQL features. - Introduced SQLitePromptGenerator to handle SQLite-specific optimizations and features. - Created SQLServerPromptGenerator for Microsoft SQL Server, including detailed analysis and optimization requirements. - Developed a template system for rendering SQL-to-natural language and natural-to-SQL prompts. - Established core tools for SQL analysis, optimization, and comparison, including complexity assessment and comment stripping. - Integrated a team application to manage SQL optimization tasks and agent interactions. - Added utility functions for handling SQL files and ensuring valid SQL input.
64 lines
2 KiB
Markdown
64 lines
2 KiB
Markdown
# 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).
|