rhDddlZddlmZddlmZmZmZmZmZm Z m Z m Z m Z m Z mZmZddlmZmZmZddlmZddlZddlZddlZddlmZmZm Z m!Z!ddl"Z"ddl#Z#ddl$Z$ddl%Z%ddl&Z&ddl'm(Z(m)Z)m*Z*m+Z+m,Z,ddl-Z-ddl.Z.ddl/Z/ddl0m0Z0e-j1dGdd Z2dS) N) AutoTokenizerAutoModelForCausalLM BlipProcessorBlipForConditionalGenerationpipeline BartTokenizerBartForConditionalGeneration T5TokenizerT5ForConditionalGenerationGPT2LMHeadModel GPT2TokenizerAutoModelForSeq2SeqLM)StableDiffusionPipelineDiffusionPipelineAutoPipelineForText2Image)Image ImageDraw ImageFont ImageEnhance)DictListOptionalTupleAny)datetimeignorec eZdZdZd%dZdZdedeeeffdZ dede ee ffd Z dedefd Z dedefd Zdedeeeffd Zded eeefdefdZded eeefdefdZdedefdZdededefdZded eeefdefdZded eeefdeejfdZded eeefdeejfdZded eeefdefdZdedefdZdejdedejfdZded eeefdeejfdZd&dejded eeefdedef dZdejdefd Zded!e de!efd"Z"dedeeeffd#Z#d$S)'AdvancedClassroomAIz Advanced AI Assistant for Classrooms using high-quality pre-trained models Optimized for CPU inference with better model choices cpuTc\||_g|_||_||_d|_|jr:d|_t j|jdtd|jdtd|j td|jd kr(tj d tj d | d|_td dS#t$r$}td |d|_Yd}~dSd}~wwxYw) NFgenerated_imagesT)exist_oku📁 Images will be saved to: /u,🖥 Initializing Advanced Classroom AI on: u'🚀 Loading state-of-the-art models...ru(✅ All models initialized successfully!u!❌ Failed to initialize models: )deviceconversation_history save_imagesdisplay_images models_ready images_dirosmakedirsprintuppertorchset_num_threadsset_grad_enabledsetup_advanced_models Exception)selfr%r'r(es [C:\Users\DELL\Documents\ai-classroom\intel 1\classroom-spark-ai-mentor\backend\ai_models.py__init__zAdvancedClassroomAI.__init__#sX $&!&,!   G0DO K$ 7 7 7 7 E4?EEE F F F RT[=N=N=P=PRRSSS 7888 ;%    !! $ $ $  "5 ) ) ) &  & & ( ( ( $D  < = = = = = & & & 9a99 : : : %D        &s*C== D+D&&D+cb d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ tdtj d|_tj dtjd|_|j|j|jtdn)#t&$r}td|Yd}~nd}~wwxYw tdt)j d|_t+j dtjd|_|j|j|j|jj|jj|j_td n)#t&$r}td |Yd}~nd}~wwxYw td t1d d dtj|_tdn)#t&$r}td|Yd}~nd}~wwxYw tdt1dddtj|_tdn)#t&$r}td|Yd}~nd}~wwxYw tdt1dddtj|_tdn)#t&$r}td|Yd}~nd}~wwxYw tdt3j dtjdd|_|j|j|_td n)#t&$r}td!|Yd}~nd}~wwxYw td"t5j d#|_t7j d#tj$|_ |j |j|j td%n)#t&$r}td&|Yd}~nd}~wwxYw|jduo|jdu}|st'd'td(dS))zFSetup high-quality models optimized for CPU with better error handlingNu.📝 Loading advanced text generation model...zgoogle/flan-t5-base) torch_dtype device_mapu ✅ Text generation model loadedu%⚠️ Text generation model failed: u'🧠 Loading conversational AI model...zmicrosoft/DialoGPT-mediumu"✅ Conversational AI model loadedu'⚠️ Conversational AI model failed: u,🔍 Loading subject classification model...zzero-shot-classificationzmicrosoft/deberta-v3-base)modelr%r9u✅ Subject classifier loadedu"⚠️ Subject classifier failed: u'❓ Loading question-answering model...zquestion-answeringzdeepset/roberta-base-squad2u✅ QA pipeline loadedu⚠️ QA pipeline failed: u(📊 Loading text summarization model... summarizationzfacebook/bart-baseu✅ Summarizer loadedu⚠️ Summarizer failed: u&🎨 Loading image generation model...zrunwayml/stable-diffusion-v1-5T)r9use_safetensorsvariantu!✅ Image generation model loadedu&⚠️ Image generation model failed: u&🖼 Loading image captioning model...z%Salesforce/blip-image-captioning-base)r9u!✅ Image captioning model loadedu&⚠️ Image captioning model failed: zCritical models failed to loadu✅ Model setup completed!)text_tokenizer text_modelchat_tokenizer chat_modelsubject_classifier qa_pipeline summarizerimage_pipelineimage_processorimage_caption_modelr-r from_pretrainedr r/float32tor%evalr3rr pad_token eos_tokenrrrr)r4r5core_models_availables r6r2z)AdvancedClassroomAI.setup_advanced_models@s#""&"##'  ? B C C C"-"=>S"T"TD 8H%!MDO O  t{ + + + O " " " 4 5 5 5 5 ? ? ? =!== > > > > > > > > ? A ; < < <"/"?@["\"\D 2B+!MDO O  t{ + + + O " " "",4040C0M#- 6 7 7 7 7 A A A ?A?? @ @ @ @ @ @ @ @ A < @ A A A&.*1!M '''D # 1 2 2 2 2 < < < :q:: ; ; ; ; ; ; ; ; < 5 ; < < <'$3!M    D  * + + + + 5 5 5 333 4 4 4 4 4 4 4 4 5 4 < = = =&*!M DO ) * * * * 4 4 4 2q22 3 3 3 3 3 3 3 3 4 @ : ; ; ;";"K0!M $ ###D  #'"5"8"8"E"ED  5 6 6 6 6 @ @ @ >1>> ? ? ? ? ? ? ? ? @ @ : ; ; ;#0#@Ah#i#iD 'C'S7!M(((D $  $ ' ' 4 4 4  $ ) ) + + + 5 6 6 6 6 @ @ @ >1>> ? ? ? ? ? ? ? ? @  t + ( O4 '  % ><== = *+++++sBC D(C??DB7G G& G!!G&*AH++ I5I  IAJ J< J77J<AL L' L""L'+A)N N;N66N;?BQ Q:Q55Q:queryreturnch td| |j7gd}|||}|dd}|dd}n||\}}| t fddDrd }nzt fd d Drd }n\t fd dDrd}n>t fddDrd}n t fddDrd}nd}t fddD}||||||||d}td||S#t$r2} td| d||cYd} ~ Sd} ~ wwxYw)z5Advanced query analysis using AI models with fallbacku🔍 Analyzing query: N) mathematicsphysics chemistrybiologyhistory geography literaturecomputer science economics psychology philosophyartmusiczenvironmental sciencelabelsrscoresc3 K|]}|vV dSN.0word query_lowers r6 z@AdvancedClassroomAI.analyze_educational_query..s(qq44;&qqqqqq)explainzwhat isdefinedescribez tell me about explanationc3 K|]}|vV dSrdrerfs r6rjz@AdvancedClassroomAI.analyze_educational_query..s(__TT[(______rk)solve calculatefindcomputeproblem_solvingc3 K|]}|vV dSrdrerfs r6rjz@AdvancedClassroomAI.analyze_educational_query..s(kkTT[(kkkkkkrk)compare differenceversusvscontrast comparisonc3 K|]}|vV dSrdrerfs r6rjz@AdvancedClassroomAI.analyze_educational_query..s(iiTT[(iiiiiirk)showdrawcreategenerate visualize visualizationc3 K|]}|vV dSrdrerfs r6rjz@AdvancedClassroomAI.analyze_educational_query..s(aaTT[(aaaaaark)zhow tosteps procedureprocesstutorialgeneralc3 K|]}|vV dSrdrerfs r6rjz@AdvancedClassroomAI.analyze_educational_query..s8tt{2rk) r~rdiagramchartgraphvisualpictureimage illustratez create imagezgenerate picturesubject confidence query_type needs_visual complexityeducational_levelu✅ Analysis completed: u⚠️ Analysis error: z, using fallback analysis) r-rD _fallback_subject_classificationlowerany_assess_complexity_determine_educational_levelr3_fallback_analysis) r4rQsubjectsclassification_resultrrrranalysisr5ris @r6analyze_educational_queryz-AdvancedClassroomAI.analyze_educational_querysp .u..///3 2&2 )-(?(?x(P(P%/9!<28. s-LLgW 5K5K5K5K5K5KLLrkr)key)r?)ritemssumlenmaxget) r4rQsubject_keywordsrbrkeywordsscore best_subjectris @r6rz4AdvancedClassroomAI._fallback_subject_classificationskkmm jii^^^\\\VVVZZZ\\\WWW ` ` `   !1!7!7!9!9 8 8 GXLLLLLLLLLEqyy"'#h--"7w  "v6:666L !55 5!>rkc|gd}gd}gd}tfd|DrdStfd|DrdSdS) zAssess query complexity)theorem hypothesis methodologyr synthesis evaluation)r relationshipr|function structure)whatwhowhenwheresimplebasicc3 K|]}|vV dSrdrergtermris r6rjz9AdvancedClassroomAI._assess_complexity..s(>>tt{">>>>>>rkadvancedc3 K|]}|vV dSrdrers r6rjz9AdvancedClassroomAI._assess_complexity..s(DD$DDDDDDrk intermediaterrr)r4rQadvanced_termsintermediate_terms basic_termsris @r6rz&AdvancedClassroomAI._assess_complexityskkmm hhh___III >>>>~>>> > > : DDDD1CDDD D D !>7rkc|tfddDrdStfddDrdStfddDrd Sd S) z'Determine appropriate educational levelc3 K|]}|vV dSrdrers r6rjzCAdvancedClassroomAI._determine_educational_level..'s(aatt{"aaaaaark) universitycollegerresearchrc3 K|]}|vV dSrdrers r6rjzCAdvancedClassroomAI._determine_educational_level..)s(ee$eeeeeerk)z high school secondaryrr high_schoolc3 K|]}|vV dSrdrers r6rjzCAdvancedClassroomAI._determine_educational_level..+s(VV$VVVVVVrk)z middle schooljuniorr middle_schoolrr)r4rQris @r6rz0AdvancedClassroomAI._determine_educational_level#skkmm aaaa/`aaa a a < eeee1deee e e  = VVVV1UVVV V V "?9rkc||\}}||dd|vpd|v||||dS)z%Fallback analysis when AI models failrorr~r)rrrr)r4rQrrs r6rz&AdvancedClassroomAI._fallback_analysis0sx"CCEJJ$'$ 5P5;;==9P11%88!%!B!B5!I!I    rkrc |j|j|||Std|||S#t $r2}td||||cYd}~Sd}~wwxYw)z3Generate educational response with fallback optionsNu7⚠️ AI models not available, using fallback responseu❌ Response generation error: )r@rA_generate_ai_responser-_generate_fallback_responser3r4rQrr5s r6generate_educational_responsez1AdvancedClassroomAI.generate_educational_response=s E".4?3N11%BBBOPPP77xHHH E E E 7A77 8 8 833E8DD D D D D D D Es"#A $A B'B<BBc>|ddkrd|dd|}nD|ddkrd|dd |}n)|dd krd |}n|dd krd |}nd|}||ddddd}|d|j}|d|j}tj5|j||dddddddd|jj }dddn #1swxYwY|j|dd}| |d }| |}t|d kr| ||}|S)!z!Generate response using AI modelsrrozExplain in detail for rz students: ruz Solve this rz problem step by step: r|z1Compare and contrast the following for students: rz%Provide a step-by-step tutorial for: z2Provide a comprehensive educational answer about: ptTreturn_tensors max_length truncationpaddingreturn_attention_mask input_idsattention_maski,2gffffff??g@) rr min_length num_beams temperature do_sampletop_prepetition_penaltyearly_stopping pad_token_idNrskip_special_tokensd)r@rLr%r/no_gradrAr eos_token_iddecodereplacestrip_remove_repetitionr"_enhance_with_conversational_model) r4rQrprompt tokenizedinputsroutputsresponses r6rz)AdvancedClassroomAI._generate_ai_responseLs1 L !] 2 2_h7J.K__X]__FF l #'8 8 8V8I#6VVuVVFF l #| 3 3PPPFF l #z 1 1DUDDFFQ%QQF'' "& (  ;'**4;77"#3477 DD ]__  o..-#&#!0=/  G               &--gajd-SS##FB//5577**844 x==3  >>uhOOHs0D  DDtextc.|d}g}t}|D]Y}|}|rA||vr=t|dkr*||||Zd|S)z-Remove repetitive phrases from generated textz. )splitsetr'raddappendjoin)r4r/ sentencesunique_sentencesseensentences r6r(z&AdvancedClassroomAI._remove_repetitionsJJt$$ uu! 2 2H~~''H 2HD00S]]R5G5G""" ''111yy)***rk base_responsec  |j|j|Sd|d|d}||ddddd}|d |j}|d |j}t j5|j|||jd d zd ddd|jj|jj }dddn #1swxYwY|j |d|jd dd}|d| S#t$r} td| |cYd} ~ Sd} ~ wwxYw)z+Enhance response using conversational modelNzUser: z Assistant: z) User: Can you elaborate more? Assistant:r iTr rrrr"g?r)rrrrrrrr$rrz u⚠️ Enhancement failed: ) rBrCrLr%r/r#rshaper$r%r'r3r-) r4rQr;contextr+r,rr-enhancedr5s r6r)z6AdvancedClassroomAI._enhance_with_conversational_models% !"*do.E$$mumm=mmmG++#&* ,I{+..t{;;F&'78;;DKHHN  /22#1%|A4 #"!%!4!A!%!4!A3                 *11'!*V\!_=M=M2Ndh1iiH#;;)9)9;; ; ! ! ! 333 4 4 4  !sID4A7D4 AC D4CD4"C#AD44 E>EEEc |d}|d}|d}|d}|dkrd|d|d|d |d S|d kr d |d |dS|dkrd|dS|dkr d|d|d|dSd|d|dS)z.Generate fallback response when AI models failrrrrrozLet me explain z* concepts related to your question about 'z'. This appears to be a z-level question suitable for zm students. I'll break this down step by step to help you understand the key concepts and principles involved.ruzTo solve this zA problem, I'll walk you through the solution step by step. For a z-level problem like this, we need to identify the key information, choose the appropriate method, and work through the solution systematically.r|zAI'll help you compare and contrast the different aspects of your z question. This type of analysis requires us to examine similarities, differences, and relationships between the concepts you're asking about.rz7I'll provide you with a step-by-step tutorial for this z topic. This z-level guide will help z: students understand the process and methodology involved.z!I understand you're asking about z . This is a z-level question that I'll help you understand. Let me provide you with a comprehensive explanation that covers the key concepts and helps you grasp the fundamental principles involved.re)r4rQrrrrlevels r6rz/AdvancedClassroomAI._generate_fallback_responseso9%l+ l+ ,-  & &UWUUX]UUxBUUafUUU U , , ,JGJJnxJJJ J < ' 'oW^ooo o : % %HWHHcmHHGLHHH HQwQQJQQQ Qrkc8|dsdS |j%td|||Std|||S#t$r2}td||||cYd}~Sd}~wwxYw)z*Generate educational visuals with fallbackrNu-🎨 Generating educational visual with AI...u"🎨 Generating fallback visual...u❌ Visual generation error: )rGr-_generate_ai_visual_generate_fallback_visualr3rs r6generate_educational_visualz/AdvancedClassroomAI.generate_educational_visuals' 4 C".EFFF//x@@@:;;;55eXFFF C C C 5!55 6 6 611%BB B B B B B B Cs"+A$A B''BBBc |||}td|tj5||ddddtj|jdjd}d d d n #1swxYwY| ||}| |||}| ||td |S) zGenerate visual using AI modelsu🖼️ Visual prompt: g@r )r%*)r*num_inference_stepsguidance_scaleheightwidth generatorrNu.✅ Educational visual generated successfully!) _construct_visual_promptr-r/r#rG Generatorr% manual_seedimages_enhance_educational_image _save_image_display_image)r4rQr visual_promptrenhanced_image image_paths r6rDz'AdvancedClassroomAI._generate_ai_visualsA55eXFF  7 77888 ]__  ''$$&"/===II"MM (QE               88FF%%neXFF  NJ777 >???sABB!Bc|d}|}d}ddddddd d }||d }||}|d |d |d } | S)zgg+ggg rkchd|}fd|D}d|ddS)z&Extract key visual concepts from query>aanatbyinisofonorrLandbutforhowthedoesrwithcBg|]}|vt|dk|S)r$)r)rgrh stop_wordss r6 z=AdvancedClassroomAI._extract_key_concepts..s/XXXdt:/E/E#d))VW--T---rk N)rr2r6)r4rQwords key_wordsrqs @r6rZz)AdvancedClassroomAI._extract_key_conceptsscLLL  ##%%XXXXeXXX xx "1" &&&rkrc |jdkr|d}tj|}|d}tj|}|d}|j\}}d}tjd|d|zz|d|zzfd}| |||f|S#t$r}td||cYd}~Sd}~wwxYw) z+Enhance generated image for educational useRGBg333333?g?r1r$whiteu!⚠️ Image enhancement failed: N) modeconvertrContrastenhance Sharpnesssizernewpaster3r-) r4rrQenhancerrMrL border_widthbordered_imager5s r6rSz.AdvancedClassroomAI._enhance_educational_images zU"" e,,#,U33H$$S))E#-e44H$$S))E!JME6L"Yuuq~/EvPQR^P^G^._ahiiN  |(D E E E! !    9a99 : : :LLLLLL sB;B>> C&C!C&!C&c tjddd}tj|}|dd} t jdd}t jdd}n-#t j}t j}YnxYw|d || }|d |d z } d | z d z} | | df|d|| |d} d} | D]S} |d | | }|d |d z }d |z d z}| || f| d|| dz } T| gdd| gdd| |||d}| |||S#t$r}td|Yd}~dSd}~wwxYw)z8Generate simple fallback visual when AI generation failsrx)r r ryrz Conceptz arial.ttf)rr)fontr$rr rblack)fillrnavy)rr"fblue)r)ririT) is_fallbacku'❌ Fallback visual generation failed: N)rrrDrawtitlertruetype load_defaulttextbboxr/ _wrap_text rectanglerTrUr3r-)r4rQrimgrrr small_fontbbox text_widthtext_x query_lines y_positionline line_widthline_xrXr5s r6rEz-AdvancedClassroomAI._generate_fallback_visual3s2( )E:w77C>#&&D *0022<<.gs9!_!_199;;!_!J^J^!J^J^J^J^!_!_rkNr _fallbackz.pngPNG_)qualityu💾 Image saved: u❌ Failed to save image: )r'rnowstrftimer&r6rstriprr+pathr*saver-r3) r4rrQrr timestampr query_shortfallback_suffixfilenamerXr5s r6rTzAdvancedClassroomAI._save_image_s u 2  //@@Iy)11#s;;G''!_!_U3B3Z!_!_!___ffhhK%--c377K-8@kkbO#RRgRR R_RRRH8}}s""'HH'H?HHHdox@@J JJz5"J 5 5 5 3z33 4 4 4     2q22 3 3 322222 sDD E)EErXc|jsdS tjdtj|tjdtjddd|r:tjd d d tj |d d dtj tj tddS#t$r/}td|td|Yd}~dSd}~wwxYw)z1Display the generated image - skipped in API modeN)r1)figsizeoffzGenerated Educational Visualbold)fontsize fontweightrg{Gz?z Saved as: centerr1italic)harstyleu%🖼️ Image displayed successfully!u ⚠️ Could not display image: u📁 Image saved to: )r(pltfigureimshowaxisrfigtextr+rbasename tight_layoutr~r-r3)r4rrXr5s r6rUz"AdvancedClassroomAI._display_image{s;"  F 8 Jw ' ' ' ' Ju    HUOOO I4rf U U U U B C'RBG4D4DZ4P4P'R'R#bBBBB      HJJJ 9 : : : : : 8 8 8 8Q88 9 9 9 6*66 7 7 7 7 7 7 7 7 7 8sCC D $DD rc|}g}g}d}|D]}|t|zdz|kr+|||t|dzz }F|r(|d||g}t|}|r(|d||S)zWrap text to specified lengthrrrs)r2rr5r6)r4r/rrulines current_linecurrent_lengthrhs r6rzAdvancedClassroomAI._wrap_texts   + +DD )A-;;##D)))#d))a-/9LL,!7!7888 $v !$T  1 LL,// 0 0 0 rkc td|tdtj} ||}tdtd|dd|ddd td |d td |d td|dtd|dtd|||}d}|dr%td|||}tj|z }|j|||tj||dudtd|ddtd||||ddS#t$r\}td|tj|z }d|dddt|d|dt|d cYd}~Sd}~wwxYw)!zLMain method to process educational queries with comprehensive error handlingu$ 🎓 Processing Educational Query: zP================================================================================u📊 Analysis Results:z Subject: rz (confidence: rz.2f)z Type: rz Complexity: rz Level: rz Needs Visual: ru( 📝 Generating educational response...Nu& 🎨 Generating educational visual...)rQr.rrprocessing_time has_visualu ✅ Processing completed in z secondsT) text_response visual_imagerrsuccessu❌ Error processing query: z7I encountered an error processing your question about 'z:'. Please try rephrasing your question or try again later.unknown)rerrorF)rrrrrr) r-timerrrFr&r5r3str)r4rQ start_timerrrrr5s r6process_educational_queryz-AdvancedClassroomAI.process_educational_querys =e==>>> hY[[ 8 55e<x(;<>> ? ? ? @h~&>@@ A A A = > > > >>uhOOM L' Q?@@@#??xPP "ikkJ6O  % , ,)$!Y[[#2*$6 ..    P?PPPP Q Q Q (OOO"/ ,$#2      444 5 5 5"ikkJ6O"][`"]"]"] $(1CFFCC#2 Q        sE/F&& H 0AHH H N)rTT)F)$__name__ __module__ __qualname____doc__r7r2rrrrrfloatrrrrrrr(r)rrrrFrDrOrZrSrEboolrTrUintrrrrerkr6rrs &&&&:},},},~82s82tCH~82828282t"c"eCJ>O""""6       # #        S#X      E3 E$sCx. EUX E E E E131$sCx.1S1111f +s +s + + + +'!'!C'!TW'!'!'!'!RQQS#XQSVQQQQ.CCS#XCS[\a\gShCCCC$S#X8TYT_K`2cT#s(^PS4'3'3'''' CEK0*s*d38n*QYZ_ZeQf****XSDcNaeru88EK8S88880sS ,@s@tCH~@@@@@@rkr)3r/torch.nnnn transformersrrrrrrr r r r r r diffusersrrrmatplotlib.pyplotpyplotrseabornsnsnumpynppandaspdPILrrrriobase64jsonrerequeststypingrrrrrwarningsrr+rfilterwarningsrrerkr6rs \[[[[[[[[[999999999999 33333333333333 !!!L L L L L L L L L L rk