
    dh                         S SK r S SKJrJrJrJrJr  S SKJr  S SK	J
r
  S SKJr  \ R                  " \5      rS\S\4S jr " S	 S
\
5      rg)    N)AnyCallableDictListOptional)CallbackManagerForLLMRun)LLM)model_validator	violationreturnc                     U R                  S5      (       a  U S   $ U R                  S5      (       a  SU R                  S5       3OSn[        U S35      e)zDefault guardrail violation handler.

Args:
    violation (dict): The violation dictionary.

Returns:
    str: The canned response.
canned_responseoffending_guardrailz
Guardrail zA guardrailz; was violated without a proper guardrail violation handler.)get
ValueError)r   guardrail_names     a/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/llms/layerup_security.py#default_guardrail_violation_handlerr      sl     }}&''*++ ==.// Y]]#89:; 
 
UV     c                   b   \ rS rSr% Sr\\S'   \\S'   Sr\\S'   / r	\
\\      \S'   / r\
\\      \S'   S	r\\S
'   0 r\
\\\4      \S'   \r\\/\4   \S'   \r\\/\4   \S'   \\S'   \" SS9\S\\\4   S\4S j5       5       r\S\4S j5       r  SS\S\
\\      S\
\   S\S\4
S jjrSrg)LayerupSecurity    zLayerup Security LLM service.llmlayerup_api_keyzhttps://api.uselayerup.com/v1layerup_api_base_urlprompt_guardrailsresponse_guardrailsFmaskmetadata!handle_prompt_guardrail_violation#handle_response_guardrail_violationclientbefore)modevaluesr   c                 f     SSK Jn  U" US   US   S9US'   U$ ! [         a    [        S5      ef = f)Nr   )r   r   r   )api_keybase_urlr"   z[Could not import LayerupSecurity SDK. Please install it with `pip install LayerupSecurity`.)layerup_securityr   ImportError)clsr%   LayerupSecuritySDKs      r   validate_layerup_sdk$LayerupSecurity.validate_layerup_sdk2   sV    	N101 67 F8   	H 	s    0c                     g)Nr)    )selfs    r   	_llm_typeLayerupSecurity._llm_typeC   s    !r   Npromptstoprun_managerkwargsc                    SUS./nS nU R                   (       a'  U R                  R                  XPR                  5      u  pVU R                  (       aL  U R                  R                  U R                  XQU R                  5      nUS   (       d  U R                  U5      $ U R                  R                  " US   S   4SU0UD6nU R                   (       a  U(       a  U" U5      nUR                  SUS.5        U R                  (       aL  U R                  R                  U R                  XXU R                  5      nUS   (       d  U R                  U5      $ U$ )Nuser)rolecontentall_safer   r;   r6   	assistant)r   r"   mask_promptr   r   execute_guardrailsr    r   _callappendr   r!   )	r1   r4   r5   r6   r7   messagesunmask_responsesecurity_responseresults	            r   r@   LayerupSecurity._callG   s'    $7899(,(?(?--(X%H!! $ > >&&$--! %Z0==>OPPQK	"
0;
?E
 99$V,F@A## $ > >(((DMM! %Z0??@QRRr   r0   )NN)__name__
__module____qualname____firstlineno____doc__r	   __annotations__strr   r   r   r   r   r   boolr   r   r   r   r    r   dictr!   r
   classmethodr-   propertyr2   r   r@   __static_attributes__r0   r   r   r   r       sB   '	H ?#?-/xS	*//1$s),1D$)+HhtCH~&++ &x'<  	, (4&#+)>  K(#$sCx. S   $ "3 " " %):>	$$ tCy!$ 67	$
 $ 
$ $r   r   )loggingtypingr   r   r   r   r   langchain_core.callbacksr   #langchain_core.language_models.llmsr	   pydanticr
   	getLoggerrG   loggerrO   rM   r   r   r0   r   r   <module>rZ      sH     6 6 = 3 $			8	$4 C *Kc Kr   