poc-v1/README.md
william.dias c29590d636 feat: Implement SQL prompt generators for PostgreSQL, SQLite, and SQL Server
- 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.
2026-01-21 13:51:03 -03:00

2 KiB

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

  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).