File size: 2,918 Bytes
2543f2c
f35dc2e
 
8c853ac
2543f2c
2aca398
44fe883
4f768b5
2aca398
2543f2c
f35dc2e
 
 
 
 
 
 
1c68ea4
2543f2c
f35dc2e
 
fbbc373
f35dc2e
 
 
 
 
 
 
 
 
 
 
2aca398
f35dc2e
 
2aca398
 
f35dc2e
 
 
 
 
2aca398
f35dc2e
fbbc373
2543f2c
 
 
 
 
 
 
f35dc2e
2543f2c
2aca398
fbbc373
2aca398
 
 
 
 
 
 
 
 
fbbc373
 
2aca398
 
 
 
 
 
 
 
 
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import gradio as gr
import os
from openai import OpenAI
from deep_translator import GoogleTranslator

# دریافت کلید از محیط (در Hugging Face از Secrets استفاده کن)
client = OpenAI(api_key=os.environ["OPENAI"])  # ✅ درست شد

# تابع اصلی پیشنهاد موضوع پایان‌نامه
def generate_topics(field, major, keywords, audience, level):
    prompt = (
        f"Suggest 3 academic thesis topics based on the following:\n"
        f"Field: {field}\n"
        f"Specialization: {major}\n"
        f"Keywords: {keywords}\n"
        f"Target Audience: {audience}\n"
        f"Level: {level}"
    )

    try:
        completion = client.chat.completions.create(
            model="gpt-3.5-turbo",  # ✅ مدل معتبر و قابل استفاده عمومی
            messages=[
                {"role": "system", "content": "You are an academic advisor assistant."},
                {"role": "user", "content": prompt}
            ]
        )

        english_output = completion.choices[0].message.content.strip()
        translated_output = GoogleTranslator(source='en', target='fa').translate(english_output)
        translated_output_html = translated_output.replace("\n", "<br>")

        html_output = (
            "<div>"
            f"{translated_output_html}"
            "<br><br>📢 برای مشاوره و راهنمایی تخصصی با گروه مشاوره کاسپین تماس بگیرید:<br>"
            "<strong>021-88252497</strong>"
            "</div>"
        )

        return html_output

    except Exception as e:
        return f"<div style='color: red;'>❌ خطا در تماس با OpenAI API: {e}</div>"

# رابط کاربری Gradio با ظاهر اصلاح‌شده برای نمایش درست خروجی
iface = gr.Interface(
    fn=generate_topics,
    inputs=[
        gr.Textbox(label="رشته"),
        gr.Textbox(label="گرایش"),
        gr.Textbox(label="کلیدواژه‌ها"),
        gr.Textbox(label="جامعه هدف"),
        gr.Dropdown(["کارشناسی ارشد", "دکتری"], label="مقطع")
    ],
    outputs=gr.HTML(
        label="موضوعات پیشنهادی",
        elem_id="output_box"
    ),
    title="🎓 پیشنهادگر موضوع پایان‌نامه کاسپین",
    theme="default",
    css="""
        #output_box {
            min-height: 350px !important;
            max-height: 600px !important;
            overflow-y: auto !important;
            background-color: #1e1e1e !important; /* پس‌زمینه تیره */
            color: white !important;              /* متن سفید */
            padding: 20px;
            border: 2px solid #ccc;
            font-family: 'Tahoma', sans-serif;
            font-size: 16px;
            text-align: right;
            direction: rtl;
            line-height: 1.8;
        }
    """
)

iface.launch()