Ë
    tPêjW  ã                   ó¾   — d dl Z d dlZd dlmZmZmZmZmZ d dlZd dl	m
Z
 d dlmZ d dlmZmZ d dlmZ d dlmZmZ d dlmZ d d	lmZmZ erd d
lmZ  G d„ de«      Zy)é    N)ÚTYPE_CHECKINGÚAnyÚFinalÚLiteralÚOptional)ÚHTTPException)Úverbose_proxy_logger)ÚCustomGuardrailÚlog_guardrail_information)ÚLogging)Úget_async_httpx_clientÚhttpxSpecialProvider)ÚGuardrailEventHooks)ÚGenericGuardrailAPIInputsÚModelResponse)ÚGuardrailConfigModelc                   óØ   ‡ — e Zd Zedee   fd„«       Z	 	 	 ddedz  dedz  dedz  fˆ fd„Z	de
d	ed
   dedefd„Ze	 ddeded	ed
   ded   def
d„«       Zeded   dz  fd„«       Zˆ xZS )ÚOnyxGuardrailÚreturnc                 ó`   — t         j                  t         j                  t         j                  gS ©N)r   Úpre_callÚduring_callÚ	post_call)Úclss    úw/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/proxy/guardrails/guardrail_hooks/onyx/onyx.pyÚget_supported_event_hooksz'OnyxGuardrail.get_supported_event_hooks    s)   € ô  ×(Ñ(Ü×+Ñ+Ü×)Ñ)ð
ð 	
ó    NÚapi_baseÚapi_keyÚtimeoutc                 ó   •— |j                  dt        | j                  «       «      «       |xs t        t	        j
                  dd«      «      }t        t        j                  dt        j                  |d¬«      i¬«      | _        |xs t	        j
                  dd	«      | _        |xs t	        j
                  d
«      | _        | j                  st        d«      ‚|| _        t!        ‰| �D  di |¤Ž t%        j&                  d| j                  «       y )NÚsupported_event_hooksÚONYX_TIMEOUTç      $@r!   g      @)r!   Úconnect)Úllm_providerÚparamsÚONYX_API_BASEzhttps://ai-guard.onyx.securityÚONYX_API_KEYz,ONYX_API_KEY environment variable is not setz%OnyxGuard initialized with server: %s© )Ú
setdefaultÚlistr   ÚintÚosÚgetenvr   r   ÚGuardrailCallbackÚhttpxÚTimeoutÚasync_handlerr   r    Ú
ValueErrorÚoptional_paramsÚsuperÚ__init__r	   Úinfo)Úselfr   r    r!   ÚkwargsÚ	__class__s        €r   r8   zOnyxGuardrail.__init__(   sÝ   ø€ ð 	×ÑÐ1´4¸×8VÑ8VÓ8XÓ3YÔZØÒAœS¤§¡¨>¸4Ó!@ÓAˆÜ3Ü-×?Ñ?ØœuŸ}™}°WÀcÔJÐKô
ˆÔð !ò 
¤B§I¡IØØ,ó%
ˆŒð Ò;¤"§)¡)¨NÓ";ˆŒØ�|Š|ÜÐKÓLÐLØ%ˆÔÜ‰ÑÑ"˜6Ò"Ü×!Ñ!Ð"IÈ4Ï=É=ÕYr   ÚpayloadÚ
input_type)ÚrequestÚresponseÚconversation_idc              ƒ   ó„  K  — | j                   j                  | j                  › d| j                  › d�|||dœddi¬«      ƒ d{  –—† }|j	                  «        |j                  «       }|j                  dd	«      sAd
}d|v rdj                  |d   «      }t        j                  d|«       t        dd|› d�¬«      ‚|S 7 Œy­w)z@
        Call external Onyx Guard server for validation
        z/guard/evaluate/v1/z/litellm)r=   r>   rA   zContent-Typezapplication/json)ÚjsonÚheadersNÚallowedTzUnknown violationÚviolated_rulesz, z.Request blocked by Onyx Guard. Violations: %s.i�  z+Request blocked by Onyx Guard. Violations: ú.)Ústatus_codeÚdetail)r4   Úpostr   r    Úraise_for_statusrC   ÚgetÚjoinr	   Úwarningr   )r:   r=   r>   rA   r@   ÚresultÚdetection_messages          r   Ú_validate_with_guard_serverz)OnyxGuardrail._validate_with_guard_server@   sã   è ø€ ð !%× 2Ñ 2× 7Ñ 7Ø�}‰}ˆoÐ0°·±°¸hÐGà"Ø(Ø#2ñð Ð 2ðð !8ó 
!
÷ 

ˆð 	×!Ñ!Ô#Ø Ÿ™›ˆØ�z‰z˜) TÔ*Ø 3ÐØ 6Ñ)Ø$(§I¡I¨fÐ5EÑ.FÓ$GÐ!Ü ×(Ñ(Ð)YÐ[lÔmÜØØDÐEVÐDWÐWXÐYôð ð ˆð-

ús   ‚AC ÁB>ÁA:C ÚinputsÚrequest_dataÚlogging_objÚLiteLLMLoggingObjc              ƒ   óL  K  — |r|j                   nt        t        j                  «       «      }t	        j
                  d||dœ¬«       i }|dk(  r|j                  di «      }n.	 t        d	i |¤Ž}|j                  «       }|j                  di «      }	 | j                  |||«      ƒ d {  –—†  |S # t        $ r'}	t	        j                  d|	||dœ¬«       |}Y d }	~	ŒId }	~	ww xY w7 Œ9# t        $ r}	|	‚d }	~	wt        $ r'}	t	        j                  d|	||dœ¬«       |cY d }	~	S d }	~	ww xY w­w)
Nz'Running Onyx Guard apply_guardrail hook)rA   r>   )Úextrar?   Úproxy_server_requestr@   z5Error in converting request_data to ModelResponse: %sz"Error in apply_guardrail guard: %sr+   )Úlitellm_call_idÚstrÚuuidÚuuid4r	   r9   rL   r   rC   Ú	ExceptionÚerrorrQ   r   )
r:   rR   rS   r>   rT   rA   r=   r@   ÚparsedÚes
             r   Úapply_guardrailzOnyxGuardrail.apply_guardraila   s1  è ø€ ñ AL ×!<Ò!<ÔQTÔUY×U_ÑU_ÓUaÓQbˆä×!Ñ!Ø5Ø&5ÀZÑPõ	
ð ˆØ˜Ò"Ø"×&Ñ&Ð'=¸rÓB‰Gð'Ü"/Ñ"?°,Ñ"?�Ø (§¡£�Ø Ÿ*™* Z°Ó4�ð	Ø×2Ñ2°7¸JÈÓX×XÐXØˆMøô ò 	'Ü$×*Ñ*ØKØà+:Ø&0ñõð '•ûð	'úð Yùäò 	ØˆGûÜò 	Ü ×&Ñ&Ø4ØØ*9ÈÑTõð
 �Mûð	üsx   ‚A D$Á#-B. ÂC# Â'C!Â(C# Â-D$Â.	CÂ7CÃD$ÃCÃD$Ã!C# Ã#	D!Ã,C.Ã.D!Ã:DÄD!ÄD$ÄD!Ä!D$r   c                  ó   — ddl m}  | S )Nr   ©ÚOnyxGuardrailConfigModel)Ú3litellm.types.proxy.guardrails.guardrail_hooks.onyxrd   rc   s    r   Úget_config_modelzOnyxGuardrail.get_config_model�   s   € õ	
ð (Ð'r   )NNr%   r   )Ú__name__Ú
__module__Ú__qualname__Úclassmethodr-   r   r   rZ   Úfloatr8   r   r   ÚdictrQ   r   r   r   ra   ÚstaticmethodÚtyperf   Ú__classcell__)r<   s   @r   r   r      s  ø„ Øð
¨$Ð/BÑ*Cò 
ó ð
ð  $Ø"Ø $ñ	Zà˜‘*ðZð �t‘ðZð ˜‘õ	Zð0àðð Ð1Ñ2ðð ð	ð
 
óðB ð 6:ñ+à)ð+ð ð+ð Ð1Ñ2ð	+ð
 Ð1Ñ2ð+ð 
#ò+ó ð+ðZ ð(˜dÐ#9Ñ:¸TÑAò (ó ô(r   r   )r/   r[   Útypingr   r   r   r   r   r2   Úfastapir   Úlitellm._loggingr	   Ú%litellm.integrations.custom_guardrailr
   r   Ú*litellm.litellm_core_utils.litellm_loggingr   rU   Ú&litellm.llms.custom_httpx.http_handlerr   r   Úlitellm.types.guardrailsr   Úlitellm.types.utilsr   r   Ú3litellm.types.proxy.guardrails.guardrail_hooks.baser   r   r+   r   r   ú<module>ry      sH   ðó 
Û ß ?Õ ?ã Ý !å 1÷õ T÷õ 9ß HáÝXôv(�Oõ v(r   