Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI | |
| from pydantic import BaseModel | |
| from transformers import pipeline | |
| import uvicorn | |
| # ========================= | |
| # إنشاء التطبيق | |
| # ========================= | |
| app = FastAPI( | |
| title="Rafiq AI Recommendation System", | |
| description="AI therapy recommendation system for autism children", | |
| version="1.0" | |
| ) | |
| # ========================= | |
| # تحميل موديل الذكاء الاصطناعي | |
| # ========================= | |
| generator = pipeline( | |
| "text-generation", | |
| model="distilgpt2" | |
| ) | |
| # ========================= | |
| # Request Model | |
| # ========================= | |
| class ChildAssessment(BaseModel): | |
| cars_score: float | |
| vineland_avg: float | |
| behavior_score: float | |
| # ========================= | |
| # تحديد المرحلة | |
| # ========================= | |
| def determine_stage(composite_score): | |
| if composite_score >= 48: | |
| return { | |
| "stage": 1, | |
| "name": "التعرف الاجتماعي", | |
| "activities": [ | |
| "التعرف على الأم والأب", | |
| "التعرف على الإخوات", | |
| "التعرف على الحيوانات الأساسية", | |
| "التعرف على الخضروات والفواكه", | |
| "التعرف على المنزل والمدرسة" | |
| ], | |
| "sessions": 5, | |
| "repetitions": 10, | |
| "break_time": "يوم" | |
| } | |
| elif composite_score >= 32: | |
| return { | |
| "stage": 2, | |
| "name": "التفاعل الاجتماعي", | |
| "activities": [ | |
| "فهم نعم ولا", | |
| "مرحبا وباي", | |
| "تبادل الأدوار", | |
| "اللعب الجماعي", | |
| "انتظار الدور" | |
| ], | |
| "sessions": 4, | |
| "repetitions": 8, | |
| "break_time": "يومين" | |
| } | |
| else: | |
| return { | |
| "stage": 3, | |
| "name": "التواصل الاجتماعي", | |
| "activities": [ | |
| "بدء الحوار", | |
| "الإجابة على الأسئلة", | |
| "التعبير عن الاحتياجات", | |
| "بدء اللعب مع الآخرين", | |
| "المحادثات البسيطة" | |
| ], | |
| "sessions": 3, | |
| "repetitions": 5, | |
| "break_time": "3 أيام" | |
| } | |
| # ========================= | |
| # AI Recommendation Endpoint | |
| # ========================= | |
| def recommend(data: ChildAssessment): | |
| # ===================== | |
| # حساب الدرجة المركبة | |
| # ===================== | |
| composite_score = ( | |
| (data.cars_score * 0.5) | |
| + ((2 - data.vineland_avg) * 25 * 0.3) | |
| + (data.behavior_score * 0.2) | |
| ) | |
| # ===================== | |
| # تحديد شدة الحالة | |
| # ===================== | |
| if composite_score >= 48: | |
| severity = "شديد" | |
| elif composite_score >= 32: | |
| severity = "متوسط" | |
| else: | |
| severity = "خفيف" | |
| # ===================== | |
| # تحديد المرحلة | |
| # ===================== | |
| stage_info = determine_stage(composite_score) | |
| # ===================== | |
| # Prompt للـ AI | |
| # ===================== | |
| prompt = f""" | |
| طفل توحد لديه: | |
| CARS Score = {data.cars_score} | |
| Vineland Average = {data.vineland_avg} | |
| Behavior Score = {data.behavior_score} | |
| شدة الحالة: {severity} | |
| المرحلة الحالية: | |
| {stage_info['name']} | |
| الأنشطة: | |
| {', '.join(stage_info['activities'])} | |
| اكتب نصيحة علاجية قصيرة ومفيدة للأهل. | |
| """ | |
| # ===================== | |
| # توليد النص | |
| # ===================== | |
| result = generator( | |
| prompt, | |
| max_length=120, | |
| do_sample=True, | |
| temperature=0.7 | |
| ) | |
| ai_text = result[0]["generated_text"] | |
| # ===================== | |
| # Response | |
| # ===================== | |
| return { | |
| "severity": severity, | |
| "recommended_stage": stage_info["stage"], | |
| "stage_name": stage_info["name"], | |
| "activities": stage_info["activities"], | |
| "sessions_per_week": stage_info["sessions"], | |
| "repetitions_per_activity": stage_info["repetitions"], | |
| "break_between_sessions": stage_info["break_time"], | |
| "composite_score": round(composite_score, 2), | |
| "ai_recommendation": ai_text | |
| } | |
| # ========================= | |
| # Home Endpoint | |
| # ========================= | |
| def home(): | |
| return { | |
| "message": "Rafiq AI Recommendation System Running" | |
| } | |
| # ========================= | |
| # تشغيل السيرفر | |
| # ========================= | |
| if __name__ == "__main__": | |
| uvicorn.run(app, host="0.0.0.0", port=7860) |