in nl2sql_src/app.py [0:0]
def nl2sql_lite_generate():
"""
Invokes the NL2SQL Lite SQL Generator
"""
question = request.json["question"]
execute_sql = request.json["execute_sql"]
few_shot = request.json["few_shot"]
logger.info(f"NL2SQL Lite engine for question : [{question}]")
try:
logger.info("Reading the configuration file")
curdir = os.getcwd()
proj_conf = get_project_config()["config"]
print(proj_conf)
data_file_name = proj_conf["metadata_file"]
logger.info(f"Using the metadata file : {data_file_name}")
metadata_json_path = f"{curdir}/utils/{data_file_name}"
logger.info(f"path {metadata_json_path}")
nl2sqlbq_client_base = Nl2sqlBq(project_id=proj_conf["proj_name"],
dataset_id=proj_conf["dataset"],
metadata_json_path=metadata_json_path,
model_name="text-bison@002",
tuned_model=False)
if few_shot:
logger.info("NL2SQL Studio Lite - Few shot SQL generation")
sql = nl2sqlbq_client_base.generate_sql_few_shot(question)
else:
logger.info("NL2SQL Studio Lite - SQL generation")
sql = nl2sqlbq_client_base.generate_sql(question)
logger.info(f"NL2SQL Studio Lite generated SQL = {sql}")
sql_result = ""
res_id = str(uuid.uuid4()) # "lite"
print(res_id)
response_string = {
"result_id": res_id,
"generated_query": sql,
"sql_result": sql_result,
"error_msg": "",
}
log_sql(res_id, question, sql, "Lite", False)
if execute_sql:
try:
results = nl2sqlbq_client_base.execute_query(sql)
sql_result = nl2sqlbq_client_base.result2nl(result=results,
question=question)
response_string = {
"result_id": res_id,
"generated_query": sql,
"sql_result": sql_result,
"error_msg": "",
}
except Exception:
logger.error("Error executing the query on BigQuery")
response_string = {
"result_id": res_id,
"generated_query": sql,
"sql_result": sql_result,
"error_msg": "Error - NL2SQL Studio Lite Query Generation",
}
except Exception as e:
logger.error(
f"NL2SQL Lite SQL Generation unsuccessful: [{question}] {e}"
)
response_string = {
"result_id": 0,
"generated_query": "",
"sql_result": "",
"error_msg": "Error in NL2SQL Studio Lite Query generation",
}
return json.dumps(response_string)