import gradio as gr import os from deep_translator import GoogleTranslator from huggingface_hub import InferenceClient # دریافت توکن از محیط (در Hugging Face Secrets تنظیم شود) 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 "
❌ لطفاً همه فیلدها را پر کنید.
" # بخش مشترک پرامپت 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" ) # اگر دکتری است، تاکید روی ارائه الگو و مدل‌سازی پیچیده‌تر if level == "دکتری": extra = ( "Since this is a doctoral-level project, focus on proposing theoretical frameworks, " "advanced modeling approaches, and in-depth methodological contributions." ) else: extra = ( "Focus on practical and applied thesis topics suitable for a master's level student." ) prompt = base_prompt + extra try: # فراخوانی مدل DeepSeek با endpoint چت 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_output = GoogleTranslator(source='en', target='fa').translate(english_output) except Exception: translated_output = english_output # قالب‌بندی HTML به‌صورت لیست مرتب translated_output_html = "
    " + \ "".join(f"
  1. {line}
  2. " for line in translated_output.split("\n") if line) + \ "
" return ( "
" f"{translated_output_html}" "

📢 برای مشاوره و راهنمایی تخصصی با گروه مشاوره کاسپین تماس بگیرید:
" "021-88252497" "
" ) except Exception as e: return f"
❌ خطا در تماس با مدل DeepSeek: {e}
" # رابط کاربری Gradio 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="🎓 پیشنهادگر موضوع پایان‌نامه کاسپین", 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(share=True) iface.launch()