§
    šŠtjð  ã                   óÖ   — d dl Z d dlm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mZmZmZ  G d„ dee¦  «        Z G d„ d	ee¦  «        Z G d
„ de¦  «        Z G d„ de¦  «        ZdS )é    N)ÚEnum)ÚAnyÚDictÚListÚOptionalÚType)ÚBaseTool)Ú	BaseModelÚFieldÚValidationErrorÚ	validatorc                   ó*   — e Zd ZdZdZdZdZdZdZdZ	dS )	ÚDetectorÚallowed_subjectsÚbanned_subjectsÚprompt_injectionÚkeywordsÚpiiÚsecretsÚtoxicityN©
Ú__name__Ú
__module__Ú__qualname__ÚALLOWED_TOPICSÚBANNED_TOPICSÚPROMPT_INJECTIONÚKEYWORDSÚPIIÚSECRETSÚTOXICITY© ó    úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/tools/zenguard/tool.pyr   r   
   s2   € € € € € Ø'€NØ%€MØ)ÐØ€HØ
€CØ€GØ€H€H€Hr#   r   c                   ó*   — e Zd ZdZdZdZdZdZdZdZ	dS )	ÚDetectorAPIzv1/detect/topics/allowedzv1/detect/topics/bannedzv1/detect/prompt_injectionzv1/detect/keywordszv1/detect/piizv1/detect/secretszv1/detect/toxicityNr   r"   r#   r$   r&   r&      s2   € € € € € Ø/€NØ-€MØ3ÐØ#€HØ
€CØ!€GØ#€H€H€Hr#   r&   c                   ó˜   — e Zd ZU  eddd¬¦  «        Zee         ed<    eddd¬¦  «        Zee	         ed<    edd	¬
¦  «        Z
eed<   dS )ÚZenGuardInput.é   zPrompt to check)Ú
min_lengthÚdescriptionÚpromptsz7List of detectors by which you want to check the promptÚ	detectorsTz@Run prompt detection by the detector in parallel or sequentially)Údefaultr+   Úin_parallelN)r   r   r   r   r,   r   ÚstrÚ__annotations__r-   r   r/   Úboolr"   r#   r$   r(   r(      s¯   € € € € € € Ø˜ØØØ%ðñ ô €GˆT�#ŒYð ð ñ ð
 !& ØØØMð!ñ !ô !€Iˆt�HŒ~ð ð ñ ð
 ˜ØØVðñ ô €K�ð ð ñ ð ð r#   r(   c                   óH  — e Zd ZU dZeed<   dZeed<   eZe	e
         ed<   dZeed<    ed¬	¦  «        Zee         ed
<   dZeed<   dZeed<    ed
ddd¬¦  «        dedefd„¦   «         Zedefd„¦   «         Z	 ddee         dee         dedeeef         fd„Zdedefd„ZdS )ÚZenGuardToolÚZenGuardÚnamezLZenGuard AI integration package. ZenGuard AI - the fastest GenAI guardrails.r+   Úargs_schemaTÚreturn_directN)r.   Úzenguard_api_keyzhttps://api.zenguard.ai/Ú_ZENGUARD_API_URL_ROOTÚZENGUARD_API_KEYÚ_ZENGUARD_API_KEY_ENV_NAMEF)ÚpreÚalwaysÚcheck_fieldsÚvÚreturnc                 óp   — |€t          j        | j        ¦  «        }|€t          d| j        › d�¦  «        ‚|S )NzoThe zenguard_api_key tool option must be set either by passing zenguard_api_key to the tool or by setting the fz environment variable)ÚosÚgetenvr<   r   )Úclsr@   s     r$   Úset_api_keyzZenGuardTool.set_api_key<   sU   € àˆ9Ý”	˜#Ô8Ñ9Ô9ˆAØˆ9Ý!ðNàÔ6ðNð Nð Nñô ð ð
 ˆr#   c                 óL   — | j         €t          d| j        › �¦  «        ‚| j         S )NzÞAPI key is required for the ZenGuardTool. Please provide the API key by either:
1. Manually specifying it when initializing the tool: ZenGuardTool(zenguard_api_key='your_api_key')
2. Setting it as an environment variable: )r9   Ú
ValueErrorr<   )Úselfs    r$   Ú_api_keyzZenGuardTool._api_keyH   s?   € àÔ Ð(Ýð6ð
 Ô3ð6ð 6ñô ð ð Ô$Ð$r#   r,   r-   r/   c                 ó’  — 	 d }d }t          |¦  «        dk    r |                      |d         ¦  «        }d|i}nd}|||dœ}t          j        | j        |z   |d| j        id¬¦  «        }|                     ¦   «          |                     ¦   «         S # t          j        t          j	        f$ r}d	t          |¦  «        icY d }~S d }~ww xY w)
Nr)   r   Úmessagesz	v1/detect)rL   r/   r-   z	x-api-keyé   )ÚjsonÚheadersÚtimeoutÚerror)ÚlenÚ_convert_detector_to_apiÚrequestsÚpostr:   rJ   Úraise_for_statusrN   Ú	HTTPErrorÚTimeoutr0   )rI   r,   r-   r/   ÚpostfixrN   ÚresponseÚes           r$   Ú_runzZenGuardTool._runU   sþ   € ð	%ØˆGØ-1ˆDÝ�9‰~Œ~ Ò"Ð"Ø×7Ò7¸	À!¼ÑEÔE�Ø" GÐ,��à%�à 'Ø#.Ø!*ðð �õ
  ”}ØÔ+¨gÑ5ØØ$ d¤mÐ4Øð	ñ ô ˆHð ×%Ò%Ñ'Ô'Ð'Ø—=’=‘?”?Ð"øÝÔ"¥HÔ$4Ð5ð 	%ð 	%ð 	%Ø�S ™VœVÐ$Ð$Ð$Ð$Ð$Ð$Ð$øøøøð	%øøøs   ‚BB ÂCÂ+CÂ;CÃCÚdetectorc                 ó0   — t           |j                 j        S )N)r&   r6   Úvalue)rI   r]   s     r$   rS   z%ZenGuardTool._convert_detector_to_apis   s   € Ý˜8œ=Ô)Ô/Ð/r#   )T)r   r   r   r6   r0   r1   r+   r(   r7   r   r
   r8   r2   r   r9   r   r:   r<   r   rF   ÚpropertyrJ   r   r   r   r   r\   rS   r"   r#   r$   r4   r4   /   sˆ  € € € € € € Ø€Dˆ#ÐÐÑàVð �ð ð ñ ð $1€K��i”Ð0Ð0Ñ0Ø€M�4ÐÐÑà&+ e°DÐ&9Ñ&9Ô&9Ð�h˜s”mÐ9Ð9Ñ9à"<Ð˜CÐ<Ð<Ñ<Ø&8Ð Ð8Ð8Ñ8à€YÐ! t°DÀuÐMÑMÔMð	˜Cð 	 Cð 	ð 	ð 	ñ NÔMð	ð ð
%˜#ð 
%ð 
%ð 
%ñ „Xð
%ð  !ð	%ð %à�c”ð%ð ˜”>ð%ð ð	%ð
 
ˆc�3ˆhŒð%ð %ð %ð %ð<0°ð 0¸cð 0ð 0ð 0ð 0ð 0ð 0r#   r4   )rC   Úenumr   Útypingr   r   r   r   r   rT   Úlangchain_core.toolsr	   Úpydanticr
   r   r   r   r0   r   r&   r(   r4   r"   r#   r$   ú<module>re      sI  ðØ 	€	€	€	Ø Ð Ð Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2à €€€Ø )Ð )Ð )Ð )Ð )Ð )Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aðð ð ð ð ˆs�Dñ ô ð ð$ð $ð $ð $ð $�#�tñ $ô $ð $ðð ð ð ð �Iñ ô ð ð"E0ð E0ð E0ð E0ð E0�8ñ E0ô E0ð E0ð E0ð E0r#   