88from nlq .business .nlq_chain import NLQChain
99from nlq .business .profile import ProfileManagement
1010from nlq .business .vector_store import VectorStore
11+ from nlq .business .log_store import LogManagement
1112from utils .apis import get_sql_result_tool
1213from utils .database import get_db_url_dialect
1314from nlq .business .suggested_question import SuggestedQuestionManagement as sqm
1617 generate_suggested_question , data_visualization
1718from utils .opensearch import get_retrieve_opensearch
1819from utils .text_search import normal_text_search , agent_text_search
20+ from utils .tool import generate_log_id , get_current_time
1921from .schemas import Question , Answer , Example , Option , SQLSearchResult , AgentSearchResult , KnowledgeSearchResult , \
2022 TaskSQLSearchResult
2123from .exception_handler import BizException
@@ -179,6 +181,10 @@ def ask(question: Question) -> Answer:
179181
180182 filter_deep_dive_sql_result = []
181183
184+ log_id = generate_log_id ()
185+ current_time = get_current_time ()
186+ log_info = ""
187+
182188 all_profiles = ProfileManagement .get_all_profiles_with_info ()
183189 database_profile = all_profiles [selected_profile ]
184190
@@ -188,7 +194,7 @@ def ask(question: Question) -> Answer:
188194 sql_gen_process = "" ,
189195 data_analyse = "" )
190196
191- agent_search_response = AgentSearchResult (agent_summary = "" , agent_sql_search_result = [], sub_search_task = [] )
197+ agent_search_response = AgentSearchResult (agent_summary = "" , agent_sql_search_result = [])
192198
193199 knowledge_search_result = KnowledgeSearchResult (knowledge_response = "" )
194200
@@ -232,6 +238,8 @@ def ask(question: Question) -> Answer:
232238 answer = Answer (query = search_box , query_intent = "reject_search" , knowledge_search_result = knowledge_search_result ,
233239 sql_search_result = sql_search_result , agent_search_result = agent_search_response ,
234240 suggested_question = [])
241+ LogManagement .add_log_to_database (log_id = log_id , profile_name = selected_profile , sql = "" , query = search_box ,
242+ intent = "reject_search" , log_info = "" , time_str = current_time )
235243 return answer
236244 elif search_intent_flag :
237245 normal_search_result = normal_text_search (search_box , model_type ,
@@ -246,6 +254,10 @@ def ask(question: Question) -> Answer:
246254 knowledge_search_result = knowledge_search_result ,
247255 sql_search_result = sql_search_result , agent_search_result = agent_search_response ,
248256 suggested_question = [])
257+
258+ LogManagement .add_log_to_database (log_id = log_id , profile_name = selected_profile , sql = "" , query = search_box ,
259+ intent = "knowledge_search" , log_info = knowledge_search_result .knowledge_response ,
260+ time_str = current_time )
249261 return answer
250262
251263 else :
@@ -298,6 +310,12 @@ def ask(question: Question) -> Answer:
298310 # sql_search_result.sql_data = [list(search_intent_result["data"].columns)] + search_intent_result[
299311 # "data"].values.tolist()
300312
313+ log_info = search_intent_result ["error_info" ] + ";" + sql_search_result .data_analyse
314+ LogManagement .add_log_to_database (log_id = log_id , profile_name = selected_profile , sql = sql_search_result .sql , query = search_box ,
315+ intent = "normal_search" ,
316+ log_info = log_info ,
317+ time_str = current_time )
318+
301319 answer = Answer (query = search_box , query_intent = "normal_search" , knowledge_search_result = knowledge_search_result ,
302320 sql_search_result = sql_search_result , agent_search_result = agent_search_response ,
303321 suggested_question = generate_suggested_question_list )
@@ -311,13 +329,30 @@ def ask(question: Question) -> Answer:
311329 orient = 'records' )
312330 filter_deep_dive_sql_result .append (agent_search_result [i ])
313331 each_task_sql_res = [list (each_task_res ["data" ].columns )] + each_task_res ["data" ].values .tolist ()
332+
333+ model_select_type , show_select_data = data_visualization (model_type , agent_search_result [i ]["query" ],
334+ each_task_res ["data" ],
335+ database_profile ['prompt_map' ])
336+
337+ each_task_sql_response = agent_search_result [i ]["response" ]
338+ sub_task_sql_result = SQLSearchResult (sql_data = show_select_data , sql = each_task_res ["sql" ], data_show_type = model_select_type ,
339+ sql_gen_process = each_task_sql_response ,
340+ data_analyse = "" )
341+
314342 each_task_sql_search_result = TaskSQLSearchResult (sub_task_query = agent_search_result [i ]["query" ],
315- sql_data = each_task_sql_res ,
316- sql = each_task_res ["sql" ], data_show_type = "table" ,
317- sql_gen_process = "" ,
318- data_analyse = "" )
343+ sql_search_result = sub_task_sql_result )
319344 agent_sql_search_result .append (each_task_sql_search_result )
345+
320346 sub_search_task .append (agent_search_result [i ]["query" ])
347+ log_info = ""
348+ else :
349+ log_info = agent_search_result [i ]["query" ] + "The SQL error Info: " + each_task_res ["error_info" ] + "。"
350+ log_id = generate_log_id ()
351+ LogManagement .add_log_to_database (log_id = log_id , profile_name = selected_profile , sql = each_task_res ["sql" ],
352+ query = search_box + "; The sub task is " + agent_search_result [i ]["query" ],
353+ intent = "agent_search" ,
354+ log_info = log_info ,
355+ time_str = current_time )
321356 agent_data_analyse_result = data_analyse_tool (model_type , prompt_map , search_box ,
322357 json .dumps (filter_deep_dive_sql_result , ensure_ascii = False ),
323358 "agent" )
0 commit comments