Spaces:
Sleeping
Sleeping
| # app/services/agent_sql.py | |
| from typing import Dict, Any, Tuple | |
| from app.tools.sql_tool import SQLTool | |
| from app.tools.llm_sqlgen import SQLGenTool | |
| from app.tools.llm_answer import AnswerLLM | |
| class SQLAgent: | |
| def __init__(self, sql: SQLTool, sqlgen: SQLGenTool, answer_llm: AnswerLLM): | |
| self.sql = sql | |
| self.sqlgen = sqlgen | |
| self.answer_llm = answer_llm | |
| def ask(self, user_id: str | None, question: str) -> Tuple[str, Dict[str, Any]]: | |
| sql = self.sqlgen.generate_sql(question) | |
| result = self.sql.execute_sql_readonly(sql) | |
| answer = self.answer_llm.generate(question, sql, result["columns"], result["rows"]) | |
| meta = { | |
| "sql": sql, | |
| "rowcount": result["rowcount"], | |
| "columns": result["columns"], | |
| } | |
| return answer, meta | |