M17idd commited on
Commit
cd0478b
·
1 Parent(s): 2ae7d32

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +11 -8
app.py CHANGED
@@ -567,7 +567,7 @@ book_embeddings = load_embeddings_from_cache()
567
 
568
  if query:
569
  found = False
570
- threshold = 0.66
571
 
572
  # بررسی اینکه آیا امبدینگ‌های سوال قبلاً محاسبه شده یا خیر
573
  query_embedding = model.encode(query, convert_to_tensor=True)
@@ -580,7 +580,7 @@ if query:
580
  # ذخیره امبدینگ‌های کتاب در کش
581
  book_embeddings = {idx: embedding.tolist() for idx, embedding in enumerate(all_sentences_embeddings)}
582
  save_embeddings_to_cache(book_embeddings)
583
-
584
  # محاسبه مشابهت‌ها با استفاده از امبدینگ‌های کتاب
585
  sentence_embeddings = [embedding for embedding in book_embeddings.values()]
586
  similarities = util.pytorch_cos_sim(query_embedding, sentence_embeddings)[0]
@@ -601,7 +601,7 @@ if query:
601
 
602
  # بررسی مرتبط بودن پاسخ با سؤال
603
  review_prompt = f"""
604
- لطفاً بررسی کن که آیا پاسخ زیر، حدودا به سوال زیر پاسخ داده است یا خیر یعنی کلمات کلیدی اصلی در سوال در پاسخ هست یا ن . اگر پاسخ به سوال مرتبط، درست و قابل قبول است، فقط بنویس: 'تأیید شد'. اگر پاسخ اشتباه است یا هیچ ربطی به سوال ندارد، فقط بنویس: 'نیاز به اصلاح دارد'.
605
  سوال:
606
  {query}
607
  پاسخ:
@@ -609,19 +609,21 @@ if query:
609
  """
610
  review_response = llm([SystemMessage(content="You are a helpful assistant."), HumanMessage(content=review_prompt)])
611
  review_result = review_response.content.strip()
 
612
  if "تأیید شد" in review_result:
613
  rewritten = clean_text(rewritten)
614
  st.markdown(f'<div class="chat-message">{rewritten}</div>', unsafe_allow_html=True)
615
 
616
  else:
617
- final_prompt = f"""
618
- لطفاً برای سوال زیر پاسخی حرفه‌ای، دقیق و روان تولید کن که مرتبط و معتبر باشد. و از متن ساختگی پرهیز کن و از دیتای متن مرتبط نیز استفاده کن از زبانی جز فارسی استفاده نکن :
 
619
  سوال:
620
  {query}
621
- متن مرتبط:
622
  {sentence}
623
  """
624
- new_response = llm([SystemMessage(content="You are a helpful assistant."), HumanMessage(content=final_prompt)])
625
  final_answer = new_response.content.strip()
626
  final_answer = clean_text(final_answer)
627
  st.markdown(f'<div class="chat-message">{final_answer}</div>', unsafe_allow_html=True)
@@ -631,7 +633,8 @@ if query:
631
  break
632
 
633
  if not found:
634
- prompt = f"لطفاً بر اساس سوال زیر یک متن مرتبط و معنادار تولید کن و جملات ساختگی استفاده نکن و از جملات موجود در اسناد و جملات معتبر استفاده کن و از زبانی جز فارسی استفاده نکن:\n\nسوال: {query}"
 
635
  response = llm([SystemMessage(content="You are a helpful assistant."), HumanMessage(content=prompt)])
636
  rewritten = response.content.strip()
637
  rewritten = clean_text(rewritten)
 
567
 
568
  if query:
569
  found = False
570
+ threshold = 0.66 # حد مشابهت برای شناسایی جملات مرتبط
571
 
572
  # بررسی اینکه آیا امبدینگ‌های سوال قبلاً محاسبه شده یا خیر
573
  query_embedding = model.encode(query, convert_to_tensor=True)
 
580
  # ذخیره امبدینگ‌های کتاب در کش
581
  book_embeddings = {idx: embedding.tolist() for idx, embedding in enumerate(all_sentences_embeddings)}
582
  save_embeddings_to_cache(book_embeddings)
583
+
584
  # محاسبه مشابهت‌ها با استفاده از امبدینگ‌های کتاب
585
  sentence_embeddings = [embedding for embedding in book_embeddings.values()]
586
  similarities = util.pytorch_cos_sim(query_embedding, sentence_embeddings)[0]
 
601
 
602
  # بررسی مرتبط بودن پاسخ با سؤال
603
  review_prompt = f"""
604
+ لطفاً بررسی کن که آیا پاسخ زیر، حدودا به سوال زیر پاسخ داده است یا خیر یعنی کلمات کلیدی اصلی در سوال در پاسخ هست یا نه. اگر پاسخ به سوال مرتبط، درست و قابل قبول است، فقط بنویس: 'تأیید شد'. اگر پاسخ اشتباه است یا هیچ ربطی به سوال ندارد، فقط بنویس: 'نیاز به اصلاح دارد'.
605
  سوال:
606
  {query}
607
  پاسخ:
 
609
  """
610
  review_response = llm([SystemMessage(content="You are a helpful assistant."), HumanMessage(content=review_prompt)])
611
  review_result = review_response.content.strip()
612
+
613
  if "تأیید شد" in review_result:
614
  rewritten = clean_text(rewritten)
615
  st.markdown(f'<div class="chat-message">{rewritten}</div>', unsafe_allow_html=True)
616
 
617
  else:
618
+ # استفاده از جملات مشابه از کتاب برای تکمیل پاسخ
619
+ prompt_to_extract = f"""
620
+ لطفاً برای سوال زیر پاسخی معتبر و مرتبط تولید کن که در متن کتاب موجود باشد و به سوال پاسخ دهد. اگر در متن کتاب چیزی برای پاسخ به سوال یافت نمی‌شود، از دانش خود برای ایجاد پاسخ استفاده کن.
621
  سوال:
622
  {query}
623
+ جملات مشابه از متن کتاب:
624
  {sentence}
625
  """
626
+ new_response = llm([SystemMessage(content="You are a helpful assistant."), HumanMessage(content=prompt_to_extract)])
627
  final_answer = new_response.content.strip()
628
  final_answer = clean_text(final_answer)
629
  st.markdown(f'<div class="chat-message">{final_answer}</div>', unsafe_allow_html=True)
 
633
  break
634
 
635
  if not found:
636
+ # در صورتی که هیچ پاسخی در کتاب پیدا نشد، مدل از دانش خود استفاده کند
637
+ prompt = f"لطفاً بر اساس سوال زیر یک متن مرتبط و معنادار تولید کن و جملات ساختگی استفاده نکن و از جملات موجود در اسناد و جملات معتبر استفاده کن و از زبانی جز فارسی استفاده نکن:\n\nسوال: {query}"
638
  response = llm([SystemMessage(content="You are a helpful assistant."), HumanMessage(content=prompt)])
639
  rewritten = response.content.strip()
640
  rewritten = clean_text(rewritten)