
    ^h                     r    S SK r S SKJr  S SKJr  S SKrS SKJr  S SKJ	r	  S SK
Jr  S SKJr   " S S	\5      rg)
    N)Optional)HTTPException)verbose_proxy_logger)	DualCache)CustomLogger)UserAPIKeyAuthc                   v    \ rS rSrSS jrSS jrS rSS\S\\   4S jjr	S	\
S
\S\S\4S jrS\S	\
4S jrSrg)_PROXY_AzureContentSafety   Nc                 p    SSK Jn  SSKJnJnJn  SSKJn  SSKJ	n	  Xl        X l        Xpl        XPl        X`l        Xl        U R'                  U5      U l        U" U R                  U" U R                  5      5      U l        g ! [         a*  n
[        SU
 S[        R                  " 5        S35      eS n
A
ff = f)	Nr   )ContentSafetyClient)AnalyzeTextOptionsAnalyzeTextOutputTypeTextCategory)AzureKeyCredential)HttpResponseErrorzm[91mAzure Content-Safety not installed, try running 'pip install azure-ai-contentsafety' to fix this error: 
z[0m)azure.ai.contentsafety.aior   azure.ai.contentsafety.modelsr   r   r   azure.core.credentialsr   azure.core.exceptionsr   	Exception	traceback
format_excendpointapi_keytext_categoryanalyze_text_optionsanalyze_text_output_typeazure_http_error_configure_thresholds
thresholdsclient)selfr   r   r"   r   r   r   r   r   r   es              b/home/james-whalen/.local/lib/python3.13/site-packages/litellm/proxy/hooks/azure_content_safety.py__init__"_PROXY_AzureContentSafety.__init__   s    	F 
 B?
 !)$6!(=% 144Z@)MM-dll;
  	 C  DE  CF  FH  IR  I]  I]  I_  H`  `g  h 	s   B 
B5%B00B5c                    U R                   R                  SU R                   R                  SU R                   R                  SU R                   R                  S0nUc  U$ UR                  5        H  u  p4X1;  d  M  XAU'   M     U$ )N   )r   HATE	SELF_HARMSEXUALVIOLENCEitems)r$   r"   default_thresholdskeydefaults        r&   r!   /_PROXY_AzureContentSafety._configure_thresholds-   s    ##Q((!%%q''	
 %%.446LC$")3 7     c                     0 nUR                    Vs0 s H  o3R                  UR                  _M     nnU R                   H/  nUR	                  U5      nUc  M  X`R
                  U   :  US.X%'   M1     U$ s  snf )N)filteredseverity)categories_analysiscategoryr7   r   getr"   )r$   responseresultitemcategory_severityr9   r7   s          r&   _compute_result)_PROXY_AzureContentSafety._compute_result>   s     6>5Q5Q
5QTMM4==(5Q 	 
 **H(,,X6H# (OOH,E E ($  + 
s    A4contentsourcec           	      X  #    [         R                  " SU5        U R                  UU R                  R                  S9n U R
                  R                  U5      I S h  vN nU R                  U5      n[         R                  " SU5        UR                  5        H!  u  pgUS   (       d  M  [        SSUUUS   S	.S
9e   g  Nb! U R                   aU    [         R                  " S[        R                  " 5       5        [         R                  " [        R                  " 5       5        e f = f7f)Nz$Testing Azure Content-Safety for: %s)textoutput_typez!Error in Azure Content-Safety: %szAzure Content-Safety Result: %sr6   i  zViolated content safety policyr7   )errorrB   r9   r7   )status_codedetail)r   debugr   r   EIGHT_SEVERITY_LEVELSr#   analyze_textr    r   r   r?   r/   r   )r$   rA   rB   requestr;   r<   r1   values           r&   test_violation(_PROXY_AzureContentSafety.test_violationN   s    ""#I7S ++55KK , 
	![[55g>>H %%h/""#DfM ,,.JCZ  # #!A"($'$)*$5	  ) ?$$ 	 &&3Y5I5I5K !&&y';';'=>	s6   <D*C C C "AD*+D* C A%D''D*user_api_key_dictcachedata	call_typec                   #    [         R                  " S5         US:X  aQ  SU;   aJ  US    H@  nSU;   d  M  [        US   [        5      (       d  M%  U R	                  US   SS9I S h  vN   MB     g g g  N! [
         a  nUeS nAf[         aa  n[         R                  " SR                  [        U5      5      5        [         R                  " [        R                  " 5       5         S nAg S nAff = f7f)Nz)Inside Azure Content-Safety Pre-Call Hook
completionmessagesrA   inputrA   rB   zZlitellm.proxy.hooks.azure_content_safety.py::async_pre_call_hook(): Exception occured - {})r   rI   
isinstancestrrN   r   r   rF   formatr   r   )r$   rP   rQ   rR   rS   mr%   s          r&   async_pre_call_hook-_PROXY_AzureContentSafety.async_pre_call_hookp   s      	""#NO	?L(Z4-?j)A A~*Qy\3*G*G"11!I,w1WWW * .@( X 	G 	? &&lssF
 !&&y';';'=>>	?sX   C1A4 A4 A4 &A2'A4 /C12A4 4
C.>B  C.AC)$C1)C..C1c                 n  #    [         R                  " S5        [        U[        R                  5      (       az  [        UR
                  S   [        R                  R                  5      (       aC  U R                  UR
                  S   R                  R                  =(       d    SSS9I S h  vN   g g g  N7f)Nz*Inside Azure Content-Safety Post-Call Hookr    outputrX   )r   rI   rY   litellmModelResponsechoicesutilsChoicesrN   messagerA   )r$   rR   rP   r;   s       r&   async_post_call_success_hook6_PROXY_AzureContentSafety.async_post_call_success_hook   s      	""#OPh 5 566:Q!6!6<
 <
 %% ((+33;;Ar( &   <
6s   B)B5+B3,B5)r   r   r   r    r#   r   r   r"   )N)__name__
__module____qualname____firstlineno__r'   r!   r?   rZ   r   rN   r   r   dictr]   rh   __static_attributes__ r4   r&   r
   r
      sk    

6"  C  #  D?)? ? 	?
 ?0 *r4   r
   )r   typingr   fastapir   rb   litellm._loggingr   litellm.caching.cachingr   "litellm.integrations.custom_loggerr   litellm.proxy._typesr   r
   rp   r4   r&   <module>rw      s,      !  1 - ; /GGr4   