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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +61 -73
app.py CHANGED
@@ -185,7 +185,6 @@ if not st.session_state.authenticated:
185
  html, body, [class*="css"] {
186
  font-family: 'Vazir', sans-serif;
187
  }
188
-
189
  /* استایل برای برچسب فیلدهای ورودی */
190
  label {
191
  font-size: 20px !important;
@@ -194,7 +193,6 @@ if not st.session_state.authenticated:
194
  margin-bottom: 10px !important;
195
  display: block;
196
  }
197
-
198
  /* استایل برای ورودی‌ها در تمام حالت‌ها */
199
  input[type="text"],
200
  input[type="password"],
@@ -207,7 +205,6 @@ if not st.session_state.authenticated:
207
  font-size: 18px !important;
208
  font-family: 'Vazir', sans-serif !important;
209
  }
210
-
211
  /* Placeholder style */
212
  ::placeholder {
213
  color: #bbbbbb !important;
@@ -277,6 +274,7 @@ with st.sidebar:
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,85 +540,75 @@ st.markdown("""
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
@@ -635,4 +623,4 @@ if query:
635
  rewritten = response.content.strip()
636
  rewritten = clean_text(rewritten)
637
  st.markdown(f'<div class="chat-message">{rewritten}</div>', unsafe_allow_html=True)
638
- think.empty()
 
185
  html, body, [class*="css"] {
186
  font-family: 'Vazir', sans-serif;
187
  }
 
188
  /* استایل برای برچسب فیلدهای ورودی */
189
  label {
190
  font-size: 20px !important;
 
193
  margin-bottom: 10px !important;
194
  display: block;
195
  }
 
196
  /* استایل برای ورودی‌ها در تمام حالت‌ها */
197
  input[type="text"],
198
  input[type="password"],
 
205
  font-size: 18px !important;
206
  font-family: 'Vazir', sans-serif !important;
207
  }
 
208
  /* Placeholder style */
209
  ::placeholder {
210
  color: #bbbbbb !important;
 
274
  ("پشتیبانی فنی", "https://cdn-icons-png.flaticon.com/512/597/597177.png", None),
275
  ]
276
 
277
+ # لود فونت Vazir از CDN
278
  st.markdown("""
279
  <link href="https://cdn.jsdelivr.net/gh/rastikerdar/[email protected]/dist/font-face.css" rel="stylesheet" type="text/css" />
280
  """, unsafe_allow_html=True)
 
540
 
541
 
542
 
 
 
 
 
543
  if query:
544
  found = False
545
+ threshold = 62
546
+
547
+ for idx, sentence in enumerate(all_sentences):
548
+ similarity = fuzz.partial_ratio(query, sentence)
549
+ if similarity >= threshold:
550
+ prompt = f"""
551
+ تعدادی پاسخ برای سوال زیر تولید شده است. لطفاً ابتدا این پاسخ‌ها را بررسی کن، سپس با در نظر گرفتن محتوای سوال و لحن آن، یک پاسخ نهایی حرفه‌ای، دقیق و روان ارائه کن که هم به سوال پاسخ دهد و هم از نظر نگارشی و ساختاری در سطح بالایی باشد. پاسخ نهایی باید حداکثر 1024 کاراکتر و حداقل 512 باشد، خلاصه و واضح نوشته شود و فقط به زبان فارسی باشد. از تکرار اضافی پرهیز کن و محتوای چند پاسخ را در صورت نیاز با هم ترکیب کن.
552
+ سوال:
553
+ {query}
554
+ پاسخ‌ها:
555
+ {sentence}
556
+ پاسخ نهایی حرفه‌ای بازنویسی‌شده:
557
+ """
558
+ response = llm([
559
+ SystemMessage(content="You are a helpful assistant."),
560
+ HumanMessage(content=prompt)
561
+ ])
562
+ rewritten = response.content.strip()
 
 
 
 
 
 
563
 
564
+ # بررسی مرتبط بودن پاسخ با سؤال
565
+ review_prompt = f"""
566
+ لطفاً بررسی کن که آیا پاسخ زیر، حدودا به سوال زیر پاسخ داده است یا خیر یعنی کلمات کلیدی اصلی در سوال در پاسخ هست یا ن . اگر پاسخ به سوال مرتبط، درست و قابل قبول است، فقط بنویس: 'تأیید شدواگر کمی مربوط بود بنویس: 'کمی خوب''.
567
+ اگر پاسخ اشتباه است یا هیچ ربطی به سوال ندارد، فقط بنویس: 'نیاز به اصلاح دارد'.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
568
  سوال:
569
  {query}
570
  پاسخ:
 
 
571
  {rewritten}
572
  """
573
+ review_response = llm([
 
 
 
 
 
 
 
 
 
 
 
 
 
574
  SystemMessage(content="You are a helpful assistant."),
575
+ HumanMessage(content=review_prompt)
576
  ])
577
+ review_result = review_response.content.strip()
578
+ if "تأیید شد" in review_result:
579
+ rewritten = clean_text(rewritten)
580
+ st.markdown(f'<div class="chat-message">{rewritten}</div>', unsafe_allow_html=True)
581
+ elif "کمی خوب" in review_result:
582
+ final_prompt = f"""
583
+ لطفاً برای سوال زیر پاسخی حرفه‌ای، دقیق و روان تولید کن که مرتبط و معتبر باشد. از زبانی جز فارسی استفاده نکن و بیا هم از سوال هم دیتای زیر و هم از پاسخ استفاده کن و پاسخ مناسبی بنویس :
584
+ سوال:
585
+ {query}
586
+ پاسخ:
587
+ {review_result}
588
+ دیتا:
589
+ {rewritten}
590
+ """
591
+ new_1response = llm([
592
+ SystemMessage(content="You are a helpful assistant."),
593
+ HumanMessage(content=final_prompt)
594
+ ])
595
+ final_answer1 = new_1response.content.strip()
596
+ final_answer1 = clean_text(final_answer1)
597
+ st.markdown(f'<div class="chat-message">{final_answer1}</div>', unsafe_allow_html=True)
598
+
599
+ else:
600
+ final_prompt = f"""
601
+ لطفاً برای سوال زیر پاسخی حرفه‌ای، دقیق و روان تولید کن که مرتبط و معتبر باشد. از زبانی جز فارسی استفاده نکن :
602
+ سوال:
603
+ {query}
604
+ """
605
+ new_response = llm([
606
+ SystemMessage(content="You are a helpful assistant."),
607
+ HumanMessage(content=final_prompt)
608
+ ])
609
+ final_answer = new_response.content.strip()
610
+ final_answer = clean_text(final_answer)
611
+ st.markdown(f'<div class="chat-message">{final_answer}</div>', unsafe_allow_html=True)
612
 
613
  think.empty()
614
  found = True
 
623
  rewritten = response.content.strip()
624
  rewritten = clean_text(rewritten)
625
  st.markdown(f'<div class="chat-message">{rewritten}</div>', unsafe_allow_html=True)
626
+ think.empty()