fisherman611 commited on
Commit
b0faf6d
·
verified ·
1 Parent(s): 322af2a

Update main/chatbot.py

Browse files
Files changed (1) hide show
  1. main/chatbot.py +53 -7
main/chatbot.py CHANGED
@@ -366,6 +366,38 @@ Nội dung: {content}
366
  """Answer a legal question using RAG with enhanced negative response handling and question refinement"""
367
  print(f"Processing question: {query}")
368
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
369
  # Step 1: Refine the question if enabled
370
  original_query = query
371
  refinement_result = None
@@ -405,7 +437,9 @@ Nội dung: {content}
405
  'search_results_html': self.google_search.format_search_results_for_display(search_results),
406
  'original_question': original_query,
407
  'refined_question': query,
408
- 'question_refinement': refinement_result
 
 
409
  }
410
  else:
411
  return {
@@ -417,7 +451,9 @@ Nội dung: {content}
417
  'search_results_html': "",
418
  'original_question': original_query,
419
  'refined_question': query,
420
- 'question_refinement': refinement_result
 
 
421
  }
422
  elif not retrieved_docs:
423
  return {
@@ -429,7 +465,9 @@ Nội dung: {content}
429
  'search_results_html': "",
430
  'original_question': original_query,
431
  'refined_question': query,
432
- 'question_refinement': refinement_result
 
 
433
  }
434
 
435
  # Format context
@@ -466,7 +504,9 @@ Nội dung: {content}
466
  'search_triggered': True,
467
  'original_question': original_query,
468
  'refined_question': query,
469
- 'question_refinement': refinement_result
 
 
470
  }
471
  else:
472
  # Google search found nothing useful
@@ -480,7 +520,9 @@ Nội dung: {content}
480
  'search_triggered': True,
481
  'original_question': original_query,
482
  'refined_question': query,
483
- 'question_refinement': refinement_result
 
 
484
  }
485
  else:
486
  # Google search disabled
@@ -493,7 +535,9 @@ Nội dung: {content}
493
  'search_results_html': "",
494
  'original_question': original_query,
495
  'refined_question': query,
496
- 'question_refinement': refinement_result
 
 
497
  }
498
 
499
  # Return successful result
@@ -506,7 +550,9 @@ Nội dung: {content}
506
  'search_results_html': "",
507
  'original_question': original_query,
508
  'refined_question': query,
509
- 'question_refinement': refinement_result
 
 
510
  }
511
 
512
  def get_system_status(self) -> Dict[str, Any]:
 
366
  """Answer a legal question using RAG with enhanced negative response handling and question refinement"""
367
  print(f"Processing question: {query}")
368
 
369
+ # Initialize legal_check variable
370
+ legal_check = None
371
+
372
+ # Step 0: Legal domain filtering (if enabled)
373
+ if Config.ENABLE_LEGAL_DOMAIN_FILTER:
374
+ print("🔍 Checking if question is legal-related...")
375
+ legal_check = self.question_refiner.is_legal_question(
376
+ query,
377
+ use_llm=Config.USE_LLM_FOR_LEGAL_DETECTION
378
+ )
379
+
380
+ print(f"Legal detection result: {legal_check}")
381
+
382
+ # If question is not legal-related, return early
383
+ if not legal_check["is_legal"] or legal_check["confidence"] < Config.LEGAL_DOMAIN_CONFIDENCE_THRESHOLD:
384
+ print(f"Question rejected: Not legal-related (confidence: {legal_check['confidence']:.2f})")
385
+ return {
386
+ 'answer': Config.NON_LEGAL_RESPONSE_MESSAGE,
387
+ 'retrieved_documents': [],
388
+ 'fallback_used': False,
389
+ 'context': "",
390
+ 'search_results': [],
391
+ 'search_results_html': "",
392
+ 'original_question': query,
393
+ 'refined_question': query,
394
+ 'question_refinement': None,
395
+ 'legal_domain_check': legal_check,
396
+ 'rejected_non_legal': True
397
+ }
398
+ else:
399
+ print(f"Question accepted: Legal-related (confidence: {legal_check['confidence']:.2f})")
400
+
401
  # Step 1: Refine the question if enabled
402
  original_query = query
403
  refinement_result = None
 
437
  'search_results_html': self.google_search.format_search_results_for_display(search_results),
438
  'original_question': original_query,
439
  'refined_question': query,
440
+ 'question_refinement': refinement_result,
441
+ 'legal_domain_check': legal_check if Config.ENABLE_LEGAL_DOMAIN_FILTER else None,
442
+ 'rejected_non_legal': False
443
  }
444
  else:
445
  return {
 
451
  'search_results_html': "",
452
  'original_question': original_query,
453
  'refined_question': query,
454
+ 'question_refinement': refinement_result,
455
+ 'legal_domain_check': legal_check if Config.ENABLE_LEGAL_DOMAIN_FILTER else None,
456
+ 'rejected_non_legal': False
457
  }
458
  elif not retrieved_docs:
459
  return {
 
465
  'search_results_html': "",
466
  'original_question': original_query,
467
  'refined_question': query,
468
+ 'question_refinement': refinement_result,
469
+ 'legal_domain_check': legal_check if Config.ENABLE_LEGAL_DOMAIN_FILTER else None,
470
+ 'rejected_non_legal': False
471
  }
472
 
473
  # Format context
 
504
  'search_triggered': True,
505
  'original_question': original_query,
506
  'refined_question': query,
507
+ 'question_refinement': refinement_result,
508
+ 'legal_domain_check': legal_check if Config.ENABLE_LEGAL_DOMAIN_FILTER else None,
509
+ 'rejected_non_legal': False
510
  }
511
  else:
512
  # Google search found nothing useful
 
520
  'search_triggered': True,
521
  'original_question': original_query,
522
  'refined_question': query,
523
+ 'question_refinement': refinement_result,
524
+ 'legal_domain_check': legal_check if Config.ENABLE_LEGAL_DOMAIN_FILTER else None,
525
+ 'rejected_non_legal': False
526
  }
527
  else:
528
  # Google search disabled
 
535
  'search_results_html': "",
536
  'original_question': original_query,
537
  'refined_question': query,
538
+ 'question_refinement': refinement_result,
539
+ 'legal_domain_check': legal_check if Config.ENABLE_LEGAL_DOMAIN_FILTER else None,
540
+ 'rejected_non_legal': False
541
  }
542
 
543
  # Return successful result
 
550
  'search_results_html': "",
551
  'original_question': original_query,
552
  'refined_question': query,
553
+ 'question_refinement': refinement_result,
554
+ 'legal_domain_check': legal_check if Config.ENABLE_LEGAL_DOMAIN_FILTER else None,
555
+ 'rejected_non_legal': False
556
  }
557
 
558
  def get_system_status(self) -> Dict[str, Any]: