Spaces:
Running
Running
File size: 2,503 Bytes
2543f2c 792f710 8c853ac d751a8f 2543f2c a95f6dc 792f710 4f768b5 a95f6dc 4f768b5 792f710 4f768b5 792f710 1c68ea4 4f768b5 d751a8f 2543f2c a95f6dc 2543f2c 792f710 b98b6c1 792f710 e63032a d751a8f ae1598f d751a8f ae1598f 2543f2c 1c68ea4 ae1598f a95f6dc 792f710 1c68ea4 4f768b5 2543f2c a95f6dc 2543f2c 4f768b5 ae1598f 2543f2c d751a8f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
import gradio as gr
from transformers import AutoTokenizer, AutoModelForCausalLM
from deep_translator import GoogleTranslator
import torch
# انتخاب مدل پایدار
model_id = "google/gemma-7b-it"
# بارگذاری مدل و توکنایزر
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32,
device_map="auto"
)
model.eval()
# تابع اصلی پیشنهاد موضوع پایاننامه
def generate_topics(field, major, keywords, audience, level):
prompt = f"""<bos>[INST]Suggest 3 academic thesis topics based on the following:
Field: {field}
Specialization: {major}
Keywords: {keywords}
Target Audience: {audience}
Level: {level}[/INST]"""
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(**inputs, max_new_tokens=256)
english_output = tokenizer.decode(outputs[0], skip_special_tokens=True).strip()
if not english_output:
return "<div dir='rtl' style='color: red;'>❌ مشکلی در تولید موضوعات رخ داد. لطفاً دوباره تلاش کنید.</div>"
translated_output = GoogleTranslator(source='en', target='fa').translate(english_output).strip()
translated_output_html = translated_output.replace("\n", "<br>")
html_output = (
"<div dir='rtl' style='text-align: right; font-family: Tahoma, sans-serif; "
"font-size: 16px; line-height: 1.8; min-height: 250px; max-height: 400px; "
"overflow-y: auto; border: 1px solid #ccc; padding: 10px; background-color: #fdfdfd;'>"
f"{translated_output_html}"
"<br><br>📢 برای مشاوره و راهنمایی تخصصی با گروه مشاوره کاسپین تماس بگیرید:<br>"
"<strong>021-88252497</strong></div>"
)
return html_output
# رابط کاربری Gradio
iface = gr.Interface(
fn=generate_topics,
inputs=[
gr.Textbox(label="رشته"),
gr.Textbox(label="گرایش"),
gr.Textbox(label="کلیدواژهها"),
gr.Textbox(label="جامعه هدف"),
gr.Dropdown(choices=["کارشناسی ارشد", "دکتری"], label="مقطع")
],
outputs=gr.HTML(label="موضوعات پیشنهادی"),
title="🎓 پیشنهادگر موضوع پایاننامه کاسپین",
theme="default"
)
iface.launch()
|