Spaces:
Running
Running
import gradio as gr | |
from transformers import AutoTokenizer, AutoModelForCausalLM | |
from deep_translator import GoogleTranslator | |
import torch | |
# مشخصات مدل | |
model_id = "google/gemma-3-4b-it" # یا "google/gemma-2-7b-it" بسته به نیاز شما | |
# بارگذاری مدل و توکنایزر | |
tokenizer = AutoTokenizer.from_pretrained(model_id) | |
model = AutoModelForCausalLM.from_pretrained( | |
model_id, | |
torch_dtype=torch.bfloat16, | |
device_map="auto" | |
) | |
model.eval() | |
def generate_topics(field, major, keywords, audience, level): | |
# ساخت پرامپت | |
prompt = f"""[INST]Suggest 3 academic thesis topics based on the following information: | |
Field: {field} | |
Specialization: {major} | |
Keywords: {keywords} | |
Target audience: {audience} | |
Level: {level}[/INST] | |
""" | |
# تولید خروجی | |
inputs = tokenizer(prompt, return_tensors="pt").to("cuda" if torch.cuda.is_available() else "cpu") | |
with torch.no_grad(): | |
outputs = model.generate(**inputs, max_new_tokens=256) | |
english_output = tokenizer.decode(outputs[0], skip_special_tokens=True) | |
# ترجمه به فارسی | |
translated_output = GoogleTranslator(source='en', target='fa').translate(english_output) | |
translated_output_html = translated_output.strip().replace("\n", "<br>") | |
# HTML راستچین | |
html_output = ( | |
"<div dir='rtl' style='text-align: right; font-family: Tahoma, sans-serif; font-size: 16px; " | |
f"line-height: 1.8;'>{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="🎓 پیشنهادگر موضوع پایاننامه کاسپین" | |
) | |
iface.launch() | |