40 lines
1.9 KiB
Python
40 lines
1.9 KiB
Python
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.",
|
|
],
|
|
)
|