§
    šŠtj�  ã                   óš   — d dl Z d dlmZmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZ  e j        e¦  «        Zdedefd„Z G d	„ d
e
¦  «        ZdS )é    N)ÚAnyÚCallableÚDictÚListÚOptional)ÚCallbackManagerForLLMRun)ÚLLM)Úmodel_validatorÚ	violationÚreturnc                 ó¾   — |                       d¦  «        r| d         S |                       d¦  «        rd|                       d¦  «        › �nd}t          |› d�¦  «        ‚)z˜Default 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     úg/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/layerup_security.pyÚ#default_guardrail_violation_handlerr      s   € ð ‡}‚}Ð&Ñ'Ô'ð ,ØÐ*Ô+Ð+ð �=Š=Ð.Ñ/Ô/ð	Ð;�Y—]’]Ð#8Ñ9Ô9Ð;Ð;Ð;àð õ
 ØÐVÐVÐVñô ð ó    c                   óº  — e Zd ZU dZeed<   eed<   dZeed<   g Ze	e
e                  ed<   g Ze	e
e                  ed<   dZeed	<   i Ze	eeef                  ed
<   eZeegef         ed<   eZeegef         ed<   eed<    ed¬¦  «        edeeef         defd„¦   «         ¦   «         Zedefd„¦   «         Z	 	 ddede	e
e                  de	e         dedef
d„ZdS )ÚLayerupSecurityz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                 óˆ   — 	 ddl m}  ||d         |d         ¬¦  «        |d<   n# t          $ r t          d¦  «        ‚w xY w|S )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_sdkz$LayerupSecurity.validate_layerup_sdk2   s†   € ð	ØNÐNÐNÐNÐNÐNà1Ð1ØÐ0Ô1ØÐ 6Ô7ð ñ  ô  ˆF�8ÑÐøõ ð 	ð 	ð 	ÝðHñô ð ð	øøøð
 ˆs   ‚"% ¥?c                 ó   — dS )Nr(   © )Úselfs    r   Ú	_llm_typezLayerupSecurity._llm_typeC   s   € à!Ð!r   NÚpromptÚstopÚrun_managerÚkwargsc                 ó0  — d|dœg}d }| j         r#| j                             || j        ¦  «        \  }}| j        rD| j                             | j        ||| j        ¦  «        }|d         s|                      |¦  «        S  | j        j        |d         d         fd|i|¤Ž}| j         r|r ||¦  «        }| 	                    d|dœ¦  «         | j
        rD| j                             | j
        ||| j        ¦  «        }|d         s|                      |¦  «        S |S )NÚuser)ÚroleÚcontentÚall_safer   r8   r3   Ú	assistant)r   r!   Úmask_promptr   r   Úexecute_guardrailsr   r   Ú_callÚappendr   r    )	r/   r1   r2   r3   r4   ÚmessagesÚunmask_responseÚsecurity_responseÚresults	            r   r=   zLayerupSecurity._callG   sg  € ð $°Ð7Ð7Ð8ˆØˆàŒ9ð 	YØ(,¬×(?Ò(?ÀÈ$Ì-Ñ(XÔ(XÑ%ˆH�oàÔ!ð 	QØ $¤× >Ò >ØÔ&¨°&¸$¼-ñ!ô !Ðð % ZÔ0ð QØ×=Ò=Ð>OÑPÔPÐPà�””Ø�QŒK˜	Ô"ð
ð 
Ø0;ð
Ø?Eð
ð 
ˆð Œ9ð 	-˜ð 	-Ø$�_ VÑ,Ô,ˆFà�Š ¸Ð@Ð@ÑAÔAÐAàÔ#ð 	SØ $¤× >Ò >ØÔ(¨(°F¸D¼Mñ!ô !Ðð % ZÔ0ð SØ×?Ò?Ð@QÑRÔRÐRàˆr   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   Ú__annotations__Ústrr   r   r   r   r   r   Úboolr   r   r   r   r   r   Údictr    r
   Úclassmethodr,   Úpropertyr0   r   r=   r.   r   r   r   r       sË  € € € € € € Ø'Ð'à	€H€H�HØÐÐÑØ ?Ð˜#Ð?Ð?Ñ?Ø-/Ð�x  S¤	Ô*Ð/Ð/Ñ/Ø/1Ð˜ $ s¤)Ô,Ð1Ð1Ñ1Ø€Dˆ$ÐÐÑØ)+€Hˆh�t˜C ˜H”~Ô&Ð+Ð+Ñ+à+ð & x°°¸°Ô'<ð ð ñ ð 	,ð (¨°4°&¸#°+Ô)>ð ð ñ ð €K€K�Kà€_˜(Ð#Ñ#Ô#Øð¨$¨s°C¨x¬.ð ¸Sð ð ð ñ „[ñ $Ô#ðð ð"˜3ð "ð "ð "ñ „Xð"ð %)Ø:>ð	$ð $àð$ð �t˜C”yÔ!ð$ð Ð6Ô7ð	$ð
 ð$ð 
ð$ð $ð $ð $ð $ð $r   r   )ÚloggingÚtypingr   r   r   r   r   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr	   Úpydanticr
   Ú	getLoggerrC   ÚloggerrJ   rH   r   r   r.   r   r   ú<module>rT      sà   ðØ €€€Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6à =Ð =Ð =Ð =Ð =Ð =Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø $Ð $Ð $Ð $Ð $Ð $à	ˆÔ	˜8Ñ	$Ô	$€ð°4ð ¸Cð ð ð ð ð*Kð Kð Kð Kð K�cñ Kô Kð Kð Kð Kr   