Update app.py
Browse files
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 =
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
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 |
-
|
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 |
-
|
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=
|
620 |
])
|
621 |
-
|
622 |
-
|
623 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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()
|