Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import autogen | |
| import os | |
| from utils import process_uploaded_file, export_to_docx | |
| from agents_config import create_agents | |
| def start_novel_engine(file_obj, extra_text, user_token): | |
| if not user_token: | |
| return "⚠️ يرجى إدخال التوكن الخاص بك.", None | |
| # 1. استخراج النص من الملف | |
| context = "" | |
| if file_obj is not None: | |
| try: | |
| context = process_uploaded_file(file_obj) | |
| except Exception as e: | |
| return f"❌ خطأ في الملف: {str(e)}", None | |
| full_prompt = f"{context}\n\n{extra_text}".strip() | |
| if len(full_prompt) < 10: | |
| return "⚠️ النص قصير جدًا للبدء.", None | |
| try: | |
| # 2. تشغيل الوكلاء | |
| agents = create_agents(user_token) | |
| groupchat = autogen.GroupChat( | |
| agents=[v for k, v in agents.items() if k != "editor"], | |
| messages=[], | |
| max_round=10 | |
| ) | |
| manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=agents["editor"].llm_config) | |
| # 3. التواصل مع Ling-1T | |
| chat_result = agents["editor"].initiate_chat( | |
| manager, | |
| message=f"قم بصياغة الفصل التالي وتنسيقه أدبيًا:\n\n{full_prompt}" | |
| ) | |
| final_text = chat_result.chat_history[-1]['content'] | |
| docx_path = export_to_docx(final_text) | |
| return final_text, docx_path | |
| except Exception as e: | |
| return f"❌ خطأ أثناء الإنتاج: {str(e)}", None | |
| # واجهة مستقرة (بدون SSR وبدون مسببات الخطأ) | |
| with gr.Blocks(analytics_enabled=False) as demo: | |
| gr.Markdown("# 🖋️ Ling-1T Novel Studio") | |
| with gr.Row(): | |
| with gr.Column(): | |
| hf_token = gr.Textbox(label="Hugging Face Token", type="password") | |
| # إزالة أي خصائص إضافية من الملف لضمان الاستقرار | |
| file_input = gr.File(label="Upload DOCX/TXT") | |
| instruction = gr.Textbox(label="Special Instructions", lines=3) | |
| run_btn = gr.Button("🚀 Start Writing", variant="primary") | |
| with gr.Column(): | |
| output_display = gr.Textbox(label="Manuscript Preview", lines=12) | |
| download_link = gr.File(label="Download Final DOCX") | |
| # القضاء على الخطأ عبر منع الـ API تمامًا لهذا الحدث | |
| run_btn.click( | |
| fn=start_novel_engine, | |
| inputs=[file_input, instruction, hf_token], | |
| outputs=[output_display, download_link], | |
| api_name=False # هذا السطر يمنع Gradio من فحص المكونات برمجياً | |
| ) | |
| if __name__ == "__main__": | |
| # تشغيل مباشر وبسيط | |
| demo.launch(show_api=False) | |