@@ -405,33 +405,26 @@ def generate_chat_response() -> Generator[str, None, None]:
405405 async_mode = "sync" ,
406406 )
407407
408- # Use first readable cube ID for scheduler (backward compatibility)
409- scheduler_cube_id = (
410- readable_cube_ids [0 ] if readable_cube_ids else chat_req .user_id
411- )
412- self ._send_message_to_scheduler (
413- user_id = chat_req .user_id ,
414- mem_cube_id = scheduler_cube_id ,
415- query = chat_req .query ,
416- label = QUERY_TASK_LABEL ,
417- )
418-
419408 # ====== first search text mem with parse goal ======
420409 search_req = APISearchPlaygroundRequest (
421410 query = chat_req .query ,
422411 user_id = chat_req .user_id ,
423412 readable_cube_ids = readable_cube_ids ,
424- mode = chat_req . mode ,
413+ mode = "fast" ,
425414 internet_search = False ,
426- top_k = chat_req . top_k ,
415+ top_k = 5 ,
427416 chat_history = chat_req .history ,
428417 session_id = chat_req .session_id ,
429- include_preference = chat_req . include_preference ,
418+ include_preference = False ,
430419 pref_top_k = chat_req .pref_top_k ,
431420 filter = chat_req .filter ,
421+ search_tool_memory = False ,
432422 playground_search_goal_parser = False ,
433423 )
424+ start_time = time .time ()
434425 search_response = self .search_handler .handle_search_memories (search_req )
426+ end_time = time .time ()
427+ self .logger .info (f"first search time: { end_time - start_time } " )
435428
436429 yield f"data: { json .dumps ({'type' : 'status' , 'data' : '1' })} \n \n "
437430
@@ -447,17 +440,19 @@ def generate_chat_response() -> Generator[str, None, None]:
447440
448441 # Prepare reference data (first search)
449442 reference = prepare_reference_data (filtered_memories )
450- # get preference string
451- pref_string = search_response .data .get ("pref_string" , "" )
452443
453444 yield f"data: { json .dumps ({'type' : 'reference' , 'data' : reference })} \n \n "
454445
455- # Prepare preference markdown string
456- if chat_req .include_preference :
457- pref_list = search_response .data .get ("pref_mem" ) or []
458- pref_memories = pref_list [0 ].get ("memories" , []) if pref_list else []
459- pref_md_string = self ._build_pref_md_string_for_playground (pref_memories )
460- yield f"data: { json .dumps ({'type' : 'pref_md_string' , 'data' : pref_md_string })} \n \n "
446+ # Use first readable cube ID for scheduler (backward compatibility)
447+ scheduler_cube_id = (
448+ readable_cube_ids [0 ] if readable_cube_ids else chat_req .user_id
449+ )
450+ self ._send_message_to_scheduler (
451+ user_id = chat_req .user_id ,
452+ mem_cube_id = scheduler_cube_id ,
453+ query = chat_req .query ,
454+ label = QUERY_TASK_LABEL ,
455+ )
461456
462457 # parse goal for internet search
463458 searcher = self .dependencies .searcher
@@ -481,23 +476,28 @@ def generate_chat_response() -> Generator[str, None, None]:
481476 # internet status
482477 yield f"data: { json .dumps ({'type' : 'status' , 'data' : 'start_internet_search' })} \n \n "
483478
484- # ====== internet search with parse goal ======
479+ # ====== second deep search ======
485480 search_req = APISearchPlaygroundRequest (
486481 query = parsed_goal .rephrased_query
487482 or chat_req .query + (f"{ parsed_goal .tags } " if parsed_goal .tags else "" ),
488483 user_id = chat_req .user_id ,
489484 readable_cube_ids = readable_cube_ids ,
490- mode = chat_req . mode ,
491- internet_search = chat_req .internet_search ,
485+ mode = "fast" ,
486+ internet_search = chat_req .internet_search or parsed_goal . internet_search ,
492487 top_k = chat_req .top_k ,
493488 chat_history = chat_req .history ,
494489 session_id = chat_req .session_id ,
495- include_preference = False ,
490+ include_preference = chat_req .include_preference ,
491+ pref_top_k = chat_req .pref_top_k ,
496492 filter = chat_req .filter ,
497493 search_memory_type = "All" ,
494+ search_tool_memory = False ,
498495 playground_search_goal_parser = False ,
499496 )
497+ start_time = time .time ()
500498 search_response = self .search_handler .handle_search_memories (search_req )
499+ end_time = time .time ()
500+ self .logger .info (f"second search time: { end_time - start_time } " )
501501
502502 # Extract memories from search results (second search)
503503 memories_list = []
@@ -516,12 +516,19 @@ def generate_chat_response() -> Generator[str, None, None]:
516516
517517 # Prepare remain reference data (second search)
518518 reference = prepare_reference_data (filtered_memories )
519+ # get preference string
520+ pref_string = search_response .data .get ("pref_string" , "" )
519521 # get internet reference
520522 internet_reference = self ._get_internet_reference (
521523 search_response .data .get ("text_mem" )[0 ]["memories" ]
522524 )
523-
524525 yield f"data: { json .dumps ({'type' : 'reference' , 'data' : reference })} \n \n "
526+ # Prepare preference markdown string
527+ if chat_req .include_preference :
528+ pref_list = search_response .data .get ("pref_mem" ) or []
529+ pref_memories = pref_list [0 ].get ("memories" , []) if pref_list else []
530+ pref_md_string = self ._build_pref_md_string_for_playground (pref_memories )
531+ yield f"data: { json .dumps ({'type' : 'pref_md_string' , 'data' : pref_md_string })} \n \n "
525532
526533 # Step 2: Build system prompt with memories
527534 system_prompt = self ._build_enhance_system_prompt (
0 commit comments