
    ؟h                     &   d Z ddlZddlZddlmZmZmZmZ ddlm	Z	 ddl
Z
ddlZg dg dg dg d	d
Z G d d          Z	 dde	deeeef                  dee         deeef         fdZddedededee         fdZddededeeef         fdZdS )z{
Mock Ollama service for testing and development
Simulates real Ollama API responses for debugging streaming functionality
    N)DictAnyListOptional   )Agent)uw   • Implementarea unei platforme educaționale bazate pe realitate augmentată pentru vizualizarea conceptelor complexeuk   • Dezvoltarea unui sistem de gamificare integrată care transformă lecțiile în experiențe interactiveu|   • Crearea unor asistenti AI personalizați pentru fiecare student, care să se adapteze stilului de învățare individualu\   • Utilizarea blockchain-ului pentru certificarea și verificarea competențelor dobânditeub   • Implementarea laboratorelor virtuale pentru experimentare în domenii precum chimia și fizica)uW   • RISC: Costurile mari de implementare AR pot fi prohibitive pentru multe instituțiiuS   • LIMITARE: Dependența de tehnologie poate reduce interacțiunea umană directău]   • ÎMBUNĂTĂȚIRE: Propun un model hibrid care combină tehnologia cu metode tradiționaleuH   • RISC: Protecția datelor personale ale studenților în sistemele AIuO   • ALTERNATIVĂ: Începe cu programe pilot în școli selectate pentru testare)uQ   • PROGRES: Am identificat 3 soluții inovatoare și 2 îmbunătățiri practiceuU   • ÎNTREBARE FOCALIZATĂ: Care sunt prioritățile de implementare pe termen scurt?uG   • NOUTATE NECESARĂ: Lipsește abordarea pentru formarea profesoriloruR   • URMĂTORUL PAS: Să explorăm modelele de finanțare pentru aceste inițiativeuJ   • CLARIFICARE: Cum măsurăm impactul asupra rezultatelor educaționale?)u]   • SINTEZĂ: Combinând AR cu gamificarea, obținem o experiență educațională immersivăuX   • FOAIE DE PARCURS: 1) Pilot în 5 școli, 2) Formare profesori, 3) Evaluare rezultateub   • OPTIMIZARE: Eliminăm redundanța între sistemele AI și concentrăm pe o singură platformăuJ   • IMPLEMENTARE: Start cu discipline STEM, apoi extindere la alte materiiu8   • BUGET ESTIMAT: 500K euro pentru faza pilot de 6 luni)	generatorcritic	moderatorsintetizatorc                       e Zd ZdZededefd            Ze	 ddede	e
eef                  dee         de
eef         fd	            Zede	e         fd
            Zede
eef         fd            ZdS )MockOllamaServicez0Mock service that simulates Ollama API responses	agent_urlreturnc                 V    |                      d          p|                      d          S )zADetermine if we should use mock based on agent URL or environmentz	127.0.0.1	localhost)
startswith)r   s    OC:\Users\bruma\Desktop\Web_Page_Asist_App (1)\page_asist\backend\mock_ollama.pyshould_use_mockz!MockOllamaService.should_use_mock3   s+     ##K00UI4H4H4U4UU    Nagentmessagescallbackc                   K   	 | j                                         }t                              |t          d                   }t	          j        |          }t          |          dk    rd}||                                z   }|                                }d}t          |          D ]x\  }	}
|	dk    rd|
z   }
t          j
        t	          j        dd                     d{V  |r ||
           d{V  |d	z  }|d
z  dk    rt          j
        d           d{V  yd}|r ||           d{V  ||z   t          |          d	z   ddS # t          $ r!}ddddt          |           dcY d}~S d}~ww xY w)zM
        Mock streaming response that simulates real Ollama behavior
        r	      u(   
Bazându-mă pe discuția anterioară, r    g?g333333?Nr   
   g?.T)texttokenssuccessFzMock error: )r   r    r!   error)rollowerMOCK_RESPONSESgetrandomchoicelensplit	enumerateasynciosleepuniform	Exceptionstr)r   r   r   role	responsesfull_responsecontext_intror    token_countitokenfinal_tokenes                r   mock_stream_responsez&MockOllamaService.mock_stream_response9   s     3	9??$$D&**41LMMI #M)44M 8}}q   L -0C0C0E0E E #((**FK%f-- - -5q55%KE mFN4$>$>?????????  *"(5//)))))))q  #q((!-,,,,,,,,, K ,h{+++++++++ &3f++/    	 	 	 0A00	       	s   E
E 
E:E5/E:5E:c                     K   g dS )zReturn mock model list)zllama2:latestz
llama2:13bzcodellama:latestzmistral:latestzneural-chat:latest r<   r   r   get_mock_modelsz!MockOllamaService.get_mock_modelsw   s      
 
 
 	
r   c                  L   K   ddt                                            d{V dS )z"Return mock connection test resultTz1Mock connection successful. 5 models disponibile.N)r!   messagemodels)r   r=   r<   r   r   test_mock_connectionz&MockOllamaService.test_mock_connection   s>       J-==????????
 
 	
r   N)__name__
__module____qualname____doc__staticmethodr0   boolr   r   r   r   r   callabler   r:   r=   rA   r<   r   r   r   r   0   s       ::V3 V4 V V V \V
  (,; ;;tCH~&; 8$; 
c3h	; ; ; \;z 
49 
 
 
 \
 
S#X 
 
 
 \
 
 
r   r   r   r   r   r   c                 $  K   ddl m} 	  || ||           d{V }|d         r|S n)# t          $ r}t          d|            Y d}~nd}~ww xY wt          d| j         d| j                    t                              | ||           d{V S )zQ
    Enhanced streaming function that uses mock when Ollama is not available
    r   )stream_chat_responseNr!   zOllama connection failed: zUsing mock response for agent z with role )ollama_servicerK   r/   printurlr#   r   r:   )r   r   r   rK   resultr9   s         r   enhanced_stream_chat_responserP      s       5444440++E8XFFFFFFFF) 	M	 0 0 0.1..////////0 

L59
L
L
L
LMMM"77xRRRRRRRRRs   ( 
AA		A11434r   ipporttimeoutc                    K   ddl m} 	  || ||           d{V S # t          $ r;}t          d|            t                                           d{V cY d}~S d}~ww xY w)z3
    Enhanced model listing with mock fallback
    r   )get_available_modelsNzOllama models request failed: )rL   rV   r/   rM   r   r=   )rR   rS   rT   rV   r9   s        r   enhanced_get_available_modelsrW      s       5444449))"dG<<<<<<<<< 9 9 92q22333&66888888888888889s    
A"0AA"A"c                    K   ddl m} 	  || |           d{V }|d         r|S n)# t          $ r}t          d|            Y d}~nd}~ww xY wt                                           d{V S )z5
    Enhanced connection test with mock fallback
    r   )test_ollama_connectionNr!   zOllama connection test failed: )rL   rY   r/   rM   r   rA   )rR   rS   rY   rO   r9   s        r   enhanced_test_ollama_connectionrZ      s       7666665--b$77777777) 	M	 5 5 5333444444445 #77999999999s   ' 
AAArB   )rQ   r   )rQ   )rF   r,   jsontypingr   r   r   r   r@   r   r'   timer%   r   r0   rI   rP   intrW   rZ   r<   r   r   <module>r_      s      , , , , , , , , , , , ,                3   DY
 Y
 Y
 Y
 Y
 Y
 Y
 Y
~ $(S SS4S>"S x S 
#s(^	S S S S.9 9C 9s 9s 9\`ad\e 9 9 9 9: :c : :4PSUXPX> : : : : : :r   