import autogen # خريطة النماذج المباشرة الموزعة على الوكلاء MODEL_MAP = { "Analyst": "Qwen/Qwen3-Next-80B-A3B-Instruct", "StyleGuardian": "openai/gpt-oss-120b", "Architect": "deepseek-ai/DeepSeek-V3.2-Exp", "DraftWriter": "deepcogito/cogito-v2-preview-llama-405B", "Humanizer": "deepcogito/cogito-671b-v2.1", "ContinuityGuard": "meta-llama/Llama-3.3-70B-Instruct", "Psychologist": "zai-org/GLM-4.7-FP8", "Critic": "Qwen/Qwen3-235B-A22B-Thinking-2507", "Editor": "inclusionAI/Ling-1T" } def get_llm_config(model_id, user_token): """إنشاء إعدادات الاتصال بالنموذج عبر راوتر Hugging Face""" return { "config_list": [ { "model": model_id, "api_key": user_token, "base_url": "https://router.huggingface.co/v1", "api_type": "openai", } ], "temperature": 0.7, "cache_seed": None, # لضمان نتائج متجددة دائماً } def create_agents(user_token): """توليد فريق الوكلاء وتوزيع المهام عليهم""" # وظيفة داخلية لتبسيط إنشاء الوكلاء المساعدين def mk_asst(name, sys_msg, model_key): return autogen.AssistantAgent( name=name, system_message=sys_msg, llm_config=get_llm_config(MODEL_MAP[model_key], user_token) ) agents = { "analyst": mk_asst("Analyst", "أنت المحلل البنيوي للنص، فكك الأفكار وحدد الروابط العمقية.", "Analyst"), "style_guardian": mk_asst("Style_Guardian", "أنت حارس الأسلوب الأدبي، تأكد من جودة اللغة والجماليات السردية.", "StyleGuardian"), "architect": mk_asst("Architect", "أنت مهندس الحبكة، قم ببناء تسلسل أحداث متماسك ومشوق.", "Architect"), "draft_writer": mk_asst("Draft_Writer", "أنت كاتب المسودة الأولية، حول الأفكار إلى نص سردي روائي.", "DraftWriter"), "humanizer": mk_asst("Humanizer", "أنت خبير الأنسنة، بث المشاعر في الشخصيات واجعل الحوارات نابضة بالحياة.", "Humanizer"), "continuity_guard": mk_asst("Continuity_Guard", "أنت مراقب الاستمرارية، امنع التناقضات في الأحداث أو صفات الشخصيات.", "ContinuityGuard"), "psychologist": mk_asst("Psychologist", "أنت محلل الدوافع النفسية، اجعل تصرفات الشخصيات مبررة نفسياً.", "Psychologist"), "critic": mk_asst("Critic", "أنت الناقد الأدبي، راجع النص النهائي وقدم ملاحظات قاسية للتحسين.", "Critic"), } # رئيس التحرير: المسؤول عن الإدارة والصياغة النهائية # تم ضبط human_input_mode إلى NEVER لضمان العمل التلقائي في بيئة الويب agents["editor"] = autogen.UserProxyAgent( name="Editor_In_Chief", human_input_mode="NEVER", max_consecutive_auto_reply=10, code_execution_config=False, llm_config=get_llm_config(MODEL_MAP["Editor"], user_token), system_message="""أنت رئيس التحرير (Ling-1T). مهمتك هي قيادة نقاش الوكلاء ودمج مخرجاتهم لصياغة الفصل الروائي النهائي بأسلوب أدبي رفيع. يجب أن تنتهي المحادثة دائماً بالنص الكامل للمخطوطة.""" ) return agents