Spaces:
Runtime error
Runtime error
import gradio as gr | |
from transformers import AutoTokenizer, AutoModelForCausalLM | |
from sentence_transformers import SentenceTransformer, util | |
# بارگذاری مدل SBERT فارسی | |
embedder = SentenceTransformer("HooshvareLab/sbert-fa-zwnj-base") | |
# سوالات پر تکرار (FAQ) | |
faq_dict = { | |
"زمان انتخاب واحد": "معمولاً پایان شهریور و بهمن است.", | |
"زمان حذف و اضافه": "حدود یک هفته پس از شروع ترم تحصیلی است.", | |
"معدل لازم برای 24 واحد": "حداقل معدل 17 نیاز است.", | |
"حذف اضطراری": "تا هفته هشتم ترم مجاز است.", | |
"شرایط مهمان شدن": "با موافقت دانشگاه مبدا و مقصد انجام میشود.", | |
} | |
# پیشپردازش FAQ برای تبدیل به embedding | |
faq_questions = list(faq_dict.keys()) | |
faq_embeddings = embedder.encode(faq_questions, convert_to_tensor=True) | |
# بارگذاری پرسش و پاسخهای FAQ | |
faq_dict = {} | |
with open("faq.txt", encoding="utf-8") as f: | |
for line in f: | |
if ":" in line: | |
q, a = line.strip().split(":", 1) | |
faq_dict[q.strip()] = a.strip() | |
# بارگذاری مدل فارسی | |
model_name = "HooshvareLab/gpt2-fa" | |
tokenizer = AutoTokenizer.from_pretrained(model_name) | |
model = AutoModelForCausalLM.from_pretrained(model_name) | |
chat_history = [] | |
# تابع پاسخدهی | |
def student_bot(question): | |
question_embedding = embedder.encode(question, convert_to_tensor=True) | |
# محاسبه شباهت با سوالات ثبت شده | |
cos_scores = util.pytorch_cos_sim(question_embedding, faq_embeddings)[0] | |
best_score = cos_scores.max().item() | |
best_idx = cos_scores.argmax().item() | |
if best_score >= 0.7: # آستانه شباهت | |
best_question = faq_questions[best_idx] | |
return faq_dict[best_question] | |
else: | |
return "❗️متاسفم، پاسخ این سؤال فعلاً در سیستم ثبت نشده است." | |
# رابط Gradio | |
gr.Interface( | |
fn=student_bot, | |
inputs=gr.Textbox(label="❓ سوال خود را وارد کنید"), | |
outputs=gr.Textbox(label="✅ پاسخ هوشمند"), | |
title="🎓 ایجنت راهنمای دانشجویان دانشگاه", | |
description="پاسخ به سوالات پرتکرار آموزشی با کمک مدل FarsiGPT و پایگاه دانش", | |
theme="compact" | |
).launch() | |