No description
- 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. |
||
|---|---|---|
| scripts | ||
| src | ||
| .gitignore | ||
| README.md | ||
| requirements.txt | ||
| sample.env | ||
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
src/
common/
sql_optimizer_team/
team_app.py
agents/
prompts/
tools/
Configuração rápida
- Crie o ambiente e instale dependências:
pip install -r requirements.txt
- Configure variáveis de ambiente (exemplo em
sample.env). - 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 oraclePYTHONPATH=src python -m main compare /caminho/query.sql --databases oracle,sqlitePYTHONPATH=src python -m main list-databasesPYTHONPATH=src python -m main list-providers
Fluxo do time
- Gestor recebe a requisição e valida o contexto (banco + SQL).
- SQL Analyst gera a explicação detalhada usando a prompt original.
- SQL Optimizer gera a query otimizada preservando toda a lógica.
- SQL Quality Reviewer valida fidelidade e checklist.
- Conservative Analyst (se solicitado) gera análise sem reescrever a query.
- 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).