Spaces:
Running
Running
File size: 3,678 Bytes
2543f2c f35dc2e 8c853ac 097fb1d 2543f2c 88a1e0a 2365ad3 88a1e0a 2543f2c 88a1e0a cad9104 f35dc2e cad9104 1c68ea4 9c119e5 cad9104 f35dc2e 2365ad3 f35dc2e 2365ad3 88a1e0a 9c119e5 f35dc2e 9c119e5 f35dc2e ca87238 2aca398 9c119e5 29c5484 2aca398 f35dc2e 88a1e0a f35dc2e 196aa2c b27b053 196aa2c 2543f2c 88a1e0a 196aa2c |
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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
import gradio as gr
import os
from deep_translator import GoogleTranslator
from huggingface_hub import InferenceClient
HF_TOKEN = os.environ.get("HUGGINGFACE_API_TOKEN")
if not HF_TOKEN:
raise RuntimeError("Missing HUGGINGFACE_API_TOKEN secret")
hf_client = InferenceClient(token=HF_TOKEN)
def generate_topics(field, major, keywords, audience, level):
if not all([field.strip(), major.strip(), keywords.strip(), audience.strip()]):
return "<div style='color: red;'>❌ لطفاً همه فیلدها را پر کنید.</div>"
base_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}\n"
)
extra = (
"Since this is a doctoral-level project, focus on proposing theoretical frameworks, "
"advanced modeling approaches, and in-depth methodological contributions."
if level == "دکتری"
else
"Focus on practical and applied thesis topics suitable for a master's level student."
)
prompt = base_prompt + extra
try:
response = hf_client.chat.completions.create(
model="deepseek-ai/DeepSeek-Prover-V2-671B",
messages=[
{"role": "system", "content": "You are an academic advisor assistant."},
{"role": "user", "content": prompt}
],
temperature=0.7,
max_tokens=512
)
english_output = response.choices[0].message.content.strip()
try:
translated = GoogleTranslator(source='en', target='fa').translate(english_output)
except:
translated = english_output
items = [f"<li>{line}</li>" for line in translated.split("\n") if line.strip()]
translated_html = "<ol>" + "".join(items) + "</ol>"
return (
"<div>"
f"{translated_html}"
"<br><br>📢 برای مشاوره و راهنمایی تخصصی با گروه مشاوره کاسپین تماس بگیرید:<br>"
"<strong>021-88252497</strong>"
"</div>"
)
except Exception as e:
return f"<div style='color: red;'>❌ خطا در تماس با مدل DeepSeek: {e}</div>"
iface = gr.Interface(
fn=generate_topics,
inputs=[
gr.Textbox(label="رشته", placeholder="مثال: کامپیوتر"),
gr.Textbox(label="گرایش", placeholder="مثال: هوش مصنوعی"),
gr.Textbox(label="کلیدواژهها", placeholder="مثال: یادگیری عمیق، بینایی ماشین"),
gr.Textbox(label="جامعه هدف", placeholder="مثال: دانشجویان دکتری"),
gr.Dropdown(["کارشناسی ارشد", "دکتری"], label="مقطع")
],
outputs=gr.HTML(label="موضوعات پیشنهادی", elem_id="output_box"),
title="🎓 پیشنهادگر موضوع پایاننامه کاسپین",
logo="logo.png", # ← لوگوی شما
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;
}
"""
)
if __name__ == "__main__":
iface.launch()
|