M17idd commited on
Commit
79a86ed
·
1 Parent(s): 748a8e2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +69 -60
app.py CHANGED
@@ -277,7 +277,6 @@ with st.sidebar:
277
  ("پشتیبانی فنی", "https://cdn-icons-png.flaticon.com/512/597/597177.png", None),
278
  ]
279
 
280
- # لود فونت Vazir از CDN
281
  st.markdown("""
282
  <link href="https://cdn.jsdelivr.net/gh/rastikerdar/[email protected]/dist/font-face.css" rel="stylesheet" type="text/css" />
283
  """, unsafe_allow_html=True)
@@ -543,75 +542,85 @@ st.markdown("""
543
 
544
 
545
 
 
 
 
 
546
  if query:
547
  found = False
548
- threshold = 62
549
-
550
- for idx, sentence in enumerate(all_sentences):
551
- similarity = fuzz.partial_ratio(query, sentence)
552
- if similarity >= threshold:
553
- prompt = f"""
554
- تعدادی پاسخ برای سوال زیر تولید شده است. لطفاً ابتدا این پاسخ‌ها را بررسی کن، سپس با در نظر گرفتن محتوای سوال و لحن آن، یک پاسخ نهایی حرفه‌ای، دقیق و روان ارائه کن که هم به سوال پاسخ دهد و هم از نظر نگارشی و ساختاری در سطح بالایی باشد. پاسخ نهایی باید حداکثر 1024 کاراکتر و حداقل 512 باشد، خلاصه و واضح نوشته شود و فقط به زبان فارسی باشد. از تکرار اضافی پرهیز کن و محتوای چند پاسخ را در صورت نیاز با هم ترکیب کن.
555
- سوال:
556
- {query}
557
- پاسخ‌ها:
558
- {sentence}
559
- پاسخ نهایی حرفه‌ای بازنویسی‌شده:
560
- """
561
- response = llm([
562
- SystemMessage(content="You are a helpful assistant."),
563
- HumanMessage(content=prompt)
564
- ])
565
- rewritten = response.content.strip()
 
 
 
 
 
 
566
 
567
- # بررسی مرتبط بودن پاسخ با سؤال
568
- review_prompt = f"""
569
- لطفاً بررسی کن که آیا پاسخ زیر، حدودا به سوال زیر پاسخ داده است یا خیر یعنی کلمات کلیدی اصلی در سوال در پاسخ هست یا ن . اگر پاسخ به سوال مرتبط، درست و قابل قبول است، فقط بنویس: 'تأیید شدواگر کمی مربوط بود بنویس: 'کمی خوب''.
570
- اگر پاسخ اشتباه است یا هیچ ربطی به سوال ندارد، فقط بنویس: 'نیاز به اصلاح دارد'.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
571
  سوال:
572
  {query}
573
  پاسخ:
 
 
574
  {rewritten}
575
  """
576
- review_response = llm([
 
 
 
 
 
 
 
 
 
 
 
 
 
577
  SystemMessage(content="You are a helpful assistant."),
578
- HumanMessage(content=review_prompt)
579
  ])
580
- review_result = review_response.content.strip()
581
- if "تأیید شد" in review_result:
582
- rewritten = clean_text(rewritten)
583
- st.markdown(f'<div class="chat-message">{rewritten}</div>', unsafe_allow_html=True)
584
- elif "کمی خوب" in review_result:
585
- final_prompt = f"""
586
- لطفاً برای سوال زیر پاسخی حرفه‌ای، دقیق و روان تولید کن که مرتبط و معتبر باشد. از زبانی جز فارسی استفاده نکن و بیا هم از سوال هم دیتای زیر و هم از پاسخ استفاده کن و پاسخ مناسبی بنویس :
587
- سوال:
588
- {query}
589
- پاسخ:
590
- {review_result}
591
- دیتا:
592
- {rewritten}
593
- """
594
- new_1response = llm([
595
- SystemMessage(content="You are a helpful assistant."),
596
- HumanMessage(content=final_prompt)
597
- ])
598
- final_answer1 = new_1response.content.strip()
599
- final_answer1 = clean_text(final_answer1)
600
- st.markdown(f'<div class="chat-message">{final_answer1}</div>', unsafe_allow_html=True)
601
-
602
- else:
603
- final_prompt = f"""
604
- لطفاً برای سوال زیر پاسخی حرفه‌ای، دقیق و روان تولید کن که مرتبط و معتبر باشد. از زبانی جز فارسی استفاده نکن :
605
- سوال:
606
- {query}
607
- """
608
- new_response = llm([
609
- SystemMessage(content="You are a helpful assistant."),
610
- HumanMessage(content=final_prompt)
611
- ])
612
- final_answer = new_response.content.strip()
613
- final_answer = clean_text(final_answer)
614
- st.markdown(f'<div class="chat-message">{final_answer}</div>', unsafe_allow_html=True)
615
 
616
  think.empty()
617
  found = True
 
277
  ("پشتیبانی فنی", "https://cdn-icons-png.flaticon.com/512/597/597177.png", None),
278
  ]
279
 
 
280
  st.markdown("""
281
  <link href="https://cdn.jsdelivr.net/gh/rastikerdar/[email protected]/dist/font-face.css" rel="stylesheet" type="text/css" />
282
  """, unsafe_allow_html=True)
 
542
 
543
 
544
 
545
+ from sentence_transformers import SentenceTransformer, util
546
+
547
+ model = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')
548
+
549
  if query:
550
  found = False
551
+ threshold = 0.70
552
+
553
+ sentence_embeddings = model.encode(all_sentences, convert_to_tensor=True)
554
+ query_embedding = model.encode(query, convert_to_tensor=True)
555
+
556
+ similarities = util.cos_sim(query_embedding, sentence_embeddings)[0]
557
+
558
+ top_indices = [i for i, sim in enumerate(similarities) if sim >= threshold]
559
+
560
+ for idx in top_indices:
561
+ sentence = all_sentences[idx]
562
+ prompt = f"""
563
+ تعدادی پاسخ برای سوال زیر تولید شده است. لطفاً ابتدا این پاسخ‌ها را بررسی کن، سپس با در نظر گرفتن محتوای سوال و لحن آن، یک پاسخ نهایی حرفه‌ای، دقیق و روان ارائه کن که هم به سوال پاسخ دهد و هم از نظر نگارشی و ساختاری در سطح بالایی باشد. پاسخ نهایی باید حداکثر 2048 کاراکتر و حداقل 512 باشد، خلاصه و واضح نوشته شود و فقط به زبان فارسی باشد. از تکرار اضافی پرهیز کن و محتوای چند پاسخ را در صورت نیاز با هم ترکیب کن.
564
+ سوال:
565
+ {query}
566
+ پاسخ‌ها:
567
+ {sentence}
568
+ پاسخ نهایی حرفه‌ای بازنویسی‌شده:
569
+ """
570
+ response = llm([
571
+ SystemMessage(content="You are a helpful assistant."),
572
+ HumanMessage(content=prompt)
573
+ ])
574
+ rewritten = response.content.strip()
575
 
576
+ # بررسی مرتبط بودن پاسخ با سؤال
577
+ review_prompt = f"""
578
+ لطفاً بررسی کن که آیا پاسخ زیر، حدودا به سوال زیر پاسخ داده است یا خیر یعنی کلمات کلیدی اصلی در سوال در پاسخ هست یا ن . اگر پاسخ به سوال مرتبط، درست و قابل قبول است، فقط بنویس: 'تأیید شد'. اگر کمی مربوط بود بنویس: 'کمی خوب'.
579
+ اگر پاسخ اشتباه است یا هیچ ربطی به سوال ندارد، فقط بنویس: 'نیاز به اصلاح دارد'.
580
+ سوال:
581
+ {query}
582
+ پاسخ:
583
+ {rewritten}
584
+ """
585
+ review_response = llm([
586
+ SystemMessage(content="You are a helpful assistant."),
587
+ HumanMessage(content=review_prompt)
588
+ ])
589
+ review_result = review_response.content.strip()
590
+
591
+ if "تأیید شد" in review_result:
592
+ rewritten = clean_text(rewritten)
593
+ st.markdown(f'<div class="chat-message">{rewritten}</div>', unsafe_allow_html=True)
594
+ elif "کمی خوب" in review_result:
595
+ final_prompt = f"""
596
+ لطفاً برای سوال زیر پاسخی حرفه‌ای، دقیق و روان تولید کن که مرتبط و معتبر باشد. از زبانی جز فارسی استفاده نکن و بیا هم از سوال هم دیتای زیر و هم از پاسخ استفاده کن و پاسخ مناسبی بنویس :
597
  سوال:
598
  {query}
599
  پاسخ:
600
+ {review_result}
601
+ دیتا:
602
  {rewritten}
603
  """
604
+ new_1response = llm([
605
+ SystemMessage(content="You are a helpful assistant."),
606
+ HumanMessage(content=final_prompt)
607
+ ])
608
+ final_answer1 = new_1response.content.strip()
609
+ final_answer1 = clean_text(final_answer1)
610
+ st.markdown(f'<div class="chat-message">{final_answer1}</div>', unsafe_allow_html=True)
611
+ else:
612
+ final_prompt = f"""
613
+ لطفاً برای سوال زیر پاسخی حرفه‌ای، دقیق و روان تولید کن که مرتبط و معتبر باشد. از زبانی جز فارسی استفاده نکن :
614
+ سوال:
615
+ {query}
616
+ """
617
+ new_response = llm([
618
  SystemMessage(content="You are a helpful assistant."),
619
+ HumanMessage(content=final_prompt)
620
  ])
621
+ final_answer = new_response.content.strip()
622
+ final_answer = clean_text(final_answer)
623
+ st.markdown(f'<div class="chat-message">{final_answer}</div>', unsafe_allow_html=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
624
 
625
  think.empty()
626
  found = True