
    Xj                     l    d dl mZ d dlmZ d dlmZ d dlmZ  ee          Z	dZ
 G d de          ZdS )	    )BaseHTTPMiddleware)Request)JSONResponse)
get_logger)z/api/v1/chatz/api/v1/completionsc                       e Zd ZdefdZdS )ServiceGuardMiddlewarerequestc                 `  
K   |j         j        
t          
fdt          D                       r	 ddlm}m}  |            }|                                }||j        k    rI|	                                }dd|d}t                              d
 d           t          d	|
          S ||j        k    r4ddd}t                              d
 d           t          d	|
          S n4# t          $ r'}	t                              d|	            Y d }	~	nd }	~	ww xY w ||           d {V S )Nc              3   B   K   | ]}                     |          V  d S )N)
startswith).0prefixpaths     D/lsinfo/ai/hellotax_ai/base_platform/app/middleware/service_guard.py	<genexpr>z2ServiceGuardMiddleware.dispatch.<locals>.<genexpr>   s/      FF6tv&&FFFFFF    r   )ServiceModeget_status_managerzDLLM service is currently in training mode. Inference is unavailable.training)detailmodetraining_infozServiceGuard blocked z: training mode activei  )status_codecontentz5LLM service is switching modes. Please retry shortly.	switching)r   r   z: switching mode activez-ServiceGuardMiddleware error (failing open): )urlr   anyGUARDED_PREFIXES'app.services.llm.service_status_managerr   r   get_current_modeTRAININGget_training_infologgerinfor   	SWITCHING	Exceptionerror)selfr	   	call_nextr   r   managerr   r   bodyer   s             @r   dispatchzServiceGuardMiddleware.dispatch   s     {FFFF5EFFFFF 	RRcccccccc,,..//11;///$+$=$=$?$?M"h *)6 D
 KK T T T TUUU'CFFFF;000"Y + D KK U U U UVVV'CFFFF 1  R R RPQPPQQQQQQQQRYw'''''''''s   A9C+ +>C+ +
D5DDN)__name__
__module____qualname__r   r-    r   r   r   r      s/        (g ( ( ( ( ( (r   r   N)starlette.middleware.baser   starlette.requestsr   starlette.responsesr   common_loggingr   r.   r#   r   r   r1   r   r   <module>r6      s    8 8 8 8 8 8 & & & & & & , , , , , , % % % % % %	H		: ( ( ( ( (/ ( ( ( ( (r   