import autogen # القائمة المحدثة بالنماذج مع لاحقة featherless-ai MODEL_MAP = { "Analyst": "Qwen/Qwen3-Next-80B-A3B-Instruct:featherless-ai", "StyleGuardian": "openai/gpt-oss-120b:featherless-ai", "Architect": "deepseek-ai/DeepSeek-V3.2-Exp:featherless-ai", "DraftWriter": "deepcogito/cogito-v2-preview-llama-405B:featherless-ai", "Humanizer": "deepcogito/cogito-671b-v2.1:featherless-ai", "ContinuityGuard": "meta-llama/Llama-3.3-70B-Instruct:featherless-ai", "Psychologist": "zai-org/GLM-4.7-FP8:featherless-ai", "Critic": "Qwen/Qwen3-235B-A22B-Thinking-2507:featherless-ai", "Editor": "inclusionAI/Ling-1T:featherless-ai" } def get_llm_config(model_id, user_token): """ تطبيق منطق الاستدعاء الذي قدمته على جميع النماذج """ 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): # 1. وكيل التحليل analyst = autogen.AssistantAgent( name="Analyst", system_message="أنت المحلل. قم بتفكيك النص المرفوع واستخراج الشخصيات والدوافع والبيئة الزمانية والمكانية.", llm_config=get_llm_config(MODEL_MAP["Analyst"], user_token) ) # 2. وكيل الأسلوب style_guardian = autogen.AssistantAgent( name="Style_Guardian", system_message="أنت حارس الأسلوب. حلل نبرة الكاتب في الملف المرفوع وتأكد أن الإكمال يتبع نفس الإيقاع اللغوي.", llm_config=get_llm_config(MODEL_MAP["StyleGuardian"], user_token) ) # 3. المهندس السردي architect = autogen.AssistantAgent( name="Architect", system_message="أنت المهندس السردي. اقترح هيكل الأحداث للفصل القادم بناءً على التحليل.", llm_config=get_llm_config(MODEL_MAP["Architect"], user_token) ) # 4. كاتب المسودة draft_writer = autogen.AssistantAgent( name="Draft_Writer", system_message="أنت كاتب المسودة. قم بكتابة الأحداث بناءً على خطة المهندس ومعايير حارس الأسلوب.", llm_config=get_llm_config(MODEL_MAP["DraftWriter"], user_token) ) # 5. وكيل الأنسنة humanizer = autogen.AssistantAgent( name="Humanizer", system_message="أنت وكيل الأنسنة. أضف تفاصيل حسية، مشاعر عميقة، وحوارات واقعية تجعل النص ينبض بالحياة.", llm_config=get_llm_config(MODEL_MAP["Humanizer"], user_token) ) # 6. حارس الاستمرارية continuity_guard = autogen.AssistantAgent( name="Continuity_Guard", system_message="أنت حارس الاستمرارية. تأكد من عدم وجود تناقضات مع الأحداث الواردة في الملف الأصلي.", llm_config=get_llm_config(MODEL_MAP["ContinuityGuard"], user_token) ) # 7. الأخصائي النفسي psychologist = autogen.AssistantAgent( name="Psychologist", system_message="أنت الأخصائي النفسي. تأكد من أن تصرفات الشخصيات في الإكمال تتوافق مع تركيبتهم النفسية.", llm_config=get_llm_config(MODEL_MAP["Psychologist"], user_token) ) # 8. الناقد critic = autogen.AssistantAgent( name="Critic", system_message="أنت الناقد. راجع المخرج النهائي بصرامة واقترح تعديلات لتحسين الجودة الأدبية.", llm_config=get_llm_config(MODEL_MAP["Critic"], user_token) ) # 9. رئيس التحرير (InclusionAI/Ling-1T) - المسؤول عن التنظيم والمخرجات editor = autogen.UserProxyAgent( name="Editor_In_Chief", human_input_mode="ALWAYS", # جعلناه يتحكم في تدفق العمل max_consecutive_auto_reply=15, code_execution_config=False, llm_config=get_llm_config(MODEL_MAP["Editor"], user_token), system_message="""أنت رئيس التحرير (Ling-1T). وظيفتك هي: 1. استلام النص من الملف المرفوع وتوزيعه على الوكلاء. 2. جمع المخرجات وصهرها في 'مخطوطة نهائية' منظمة. 3. يجب أن يكون مخرجك النهائي منسقاً كالتالي: [العنوان] -> [رقم الفصل] -> [المحتوى الروائي]. أنت المسؤول عن الجودة النهائية للملف الذي سيتم تحميله.""" ) return { "analyst": analyst, "style_guardian": style_guardian, "architect": architect, "draft_writer": draft_writer, "humanizer": humanizer, "continuity_guard": continuity_guard, "psychologist": psychologist, "critic": critic, "editor": editor }