File size: 2,355 Bytes
2543f2c
792f710
8c853ac
d751a8f
2543f2c
792f710
 
4f768b5
792f710
4f768b5
792f710
4f768b5
792f710
1c68ea4
4f768b5
d751a8f
2543f2c
792f710
2543f2c
792f710
 
b98b6c1
 
 
792f710
e63032a
 
792f710
e63032a
d751a8f
 
 
 
792f710
8c853ac
1c68ea4
2543f2c
792f710
1c68ea4
792f710
 
1c68ea4
 
 
4f768b5
2543f2c
792f710
2543f2c
 
 
 
 
 
 
 
 
4f768b5
b98b6c1
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
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)

    # ترجمه خروجی به فارسی
    translated_output = GoogleTranslator(source='en', target='fa').translate(english_output)
    translated_output_html = translated_output.strip().replace("\n", "<br>")

    # ساخت خروجی HTML راست‌چین برای Gradio
    html_output = (
        "<div dir='rtl' style='text-align: right; font-family: Tahoma, sans-serif; font-size: 16px; line-height: 1.8;'>"
        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="🎓 پیشنهادگر موضوع پایان‌نامه کاسپین"
)

iface.launch()