in UI/utils.py [0:0]
def call_generate_sql_api(question, endpoint) -> tuple[str, str]:
"""
Common SQL generation function
"""
# api_url = os.getenv('CORE_EXECUTORS')
selected_framework = None
if LITE_API_PART in endpoint:
selected_framework = "LITE"
api_url = os.getenv('LITE_EXECUTORS')
few_shot_gen = False
if st.session_state.lite_model == FEW_SHOT_GENERATION:
few_shot_gen = True
data = {"question": question,
"execute_sql": st.session_state.execution,
"few_shot": few_shot_gen}
st.session_state.sql_generated_by = GEN_BY_LITE
else:
selected_framework = "CORE"
api_url = os.getenv('CORE_EXECUTORS')
data = {"question": question,
"execute_sql": st.session_state.execution}
st.session_state.sql_generated_by = GEN_BY_CORE
headers = {"Content-type": "application/json",
"Authorization": f"Bearer {st.session_state.access_token}"}
api_endpoint = f"{api_url}/{endpoint}"
logger.info(f"Invoking API : {api_endpoint}")
logger.info(f"Provided parameters are : Data = {data}")
api_response = requests.post(api_endpoint,
data=json.dumps(data),
headers=headers,
timeout=None)
logger.info(f"{str(api_response.text)}")
# logger.info('-'*100, api_response.text)
exec_result = ""
try:
resp = api_response.json()
sql = resp['generated_query']
st.session_state.result_id = resp['result_id']
if selected_framework == 'CORE' and data["execute_sql"]:
try:
# Parse the JSON string to a dictionary
df_dict = json.loads(resp['df'])
exec_result_df = pd.DataFrame(df_dict)
exec_result = ''
except Exception as e:
logger.info(f"SQL query execution failed due to {str(e)}")
exec_result_df = None
exec_result = ''
elif selected_framework == 'LITE' and data["execute_sql"]:
exec_result = resp['sql_result']
try:
exec_result_df = run_query(sql)
except Exception as e:
logger.info(f"SQL query execution failed due to {str(e)}")
exec_result_df = None
exec_result = None
else:
exec_result_df = None
exec_result = ''
except RuntimeError:
sql = "Execution Failed ! Error encountered"
st.session_state.result_id = None
logger.info(f"Generated SQL = {sql}")
logger.info(f"Generation ID = {st.session_state.result_id}")
return sql, exec_result, exec_result_df