from agno.agent import Agent from agno.db.sqlite import SqliteDb from sql_optimizer_team.tools.engine.model_selector import get_model from sql_optimizer_team.tools.core_tools import explain_query_core from sql_optimizer_team.agents.prompts import AgentPromptTemplates from sql_optimizer_team.tools.prompt_tools import supported_databases from sql_optimizer_team.tools.sql_tools import load_sql_from_file, ensure_non_empty import os base_model = get_model() _db_path = os.getenv("SQL_OPT_TEAM_DB_FILE", "tmp/sql_optimizer_team.db") _debug_mode = os.getenv("SQL_OPT_TEAM_DEBUG_MODE", "false").strip().lower() in {"1", "true", "yes", "on"} db = SqliteDb(db_file=_db_path) sql_analyst_agent = Agent( name="SQL Analyst", role=( "Você recebe a SQL original e o banco alvo e produz a descrição natural detalhada. " "A saída deve seguir exatamente a prompt original (SQL → natural) do projeto oracle-sql-query-optimizer." ), model=base_model, tools=[explain_query_core, load_sql_from_file, ensure_non_empty, supported_databases], markdown=True, add_history_to_context=True, db=db, enable_agentic_memory=True, enable_user_memories=True, debug_mode=_debug_mode, instructions=[ "- Solicite banco e SQL se não estiverem presentes. Bancos suportados: use supported_databases().", "- Se o usuário fornecer um caminho de arquivo, use load_sql_from_file().", "- Preferência: use explain_query_core(database_type, sql) para gerar a explicação via core de negócio.", "- Use a template oficial abaixo para estruturar a explicação (SQL → natural).", AgentPromptTemplates.SQL_TO_NATURAL.template.strip(), "- Entregue apenas a explicação natural estruturada conforme a prompt; não reescreva a SQL.", "- Identifique problemas críticos de performance conforme a prompt.", ], )