Ë
    µŒjð  ã                   ó¼   — 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y)é    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	y)	ÚDetectorÚallowed_subjectsÚbanned_subjectsÚprompt_injectionÚkeywordsÚpiiÚsecretsÚtoxicityN©
Ú__name__Ú
__module__Ú__qualname__ÚALLOWED_TOPICSÚBANNED_TOPICSÚPROMPT_INJECTIONÚKEYWORDSÚPIIÚSECRETSÚTOXICITY© ó    úq/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/tools/zenguard/tool.pyr   r   
   s&   „ Ø'€NØ%€MØ)ÐØ€HØ
€CØ€GØ�Hr#   r   c                   ó(   — e Zd ZdZdZdZdZdZdZdZ	y)	Ú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&      s&   „ Ø/€NØ-€MØ3ÐØ#€HØ
€CØ!€GØ#�Hr#   r&   c                   óx   — 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<   y)Ú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(      sY   … ÙØØØ%ô€GˆT�#‰Yó ñ
 !&ØØØMô!€Iˆt�H‰~ó ñ
 ØØVô€K�ô r#   r(   c                   ó  — 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y)Ú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                 ó~   — |€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<   sN   € àˆ9Ü—	‘	˜#×8Ñ8Ó9ˆAØˆ9Ü!ðà×6Ñ6Ð7Ð7LðNóð ð
 ˆr#   c                 ób   — | 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   sA   € à× Ñ Ð(Üðð
 ×3Ñ3Ð4ð6óð ð ×$Ñ$Ð$r#   r,   r-   r/   c                 óˆ  — 	 d }d }t        |«      dk(  r| j                  |d   «      }d|i}nd}|||dœ}t        j                  | j                  |z   |d| j
                  id¬«      }|j                  «        |j                  «       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�Ø" GÐ,‘à%�à 'Ø#.Ø!*ñ�ô
  —}‘}Ø×+Ñ+¨gÑ5ØØ$ d§m¡mÐ4Øô	ˆHð ×%Ñ%Ô'Ø—=‘=“?Ð"øÜ×"Ñ"¤H×$4Ñ$4Ð5ò 	%ØœS ›VÐ$Õ$ûð	%ús   ‚BB Â#CÂ*B<Â6CÂ<CÚdetectorc                 ó<   — 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Ø€M�4Óá&+°DÔ&9Ð�h˜s‘mÓ9à"<Ð˜CÓ<Ø&8Ð Ó8áÐ! t°DÀuÔMð	˜Cð 	 Cò 	ó Nð	ð ð
%˜#ò 
%ó ð
%ð  !ñ	%à�c‘ð%ð ˜‘>ð%ð ð	%ð
 
ˆc�3ˆh‰ó%ð<0°ð 0¸cô 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      sS   ðÛ 	Ý ß 2Õ 2ã Ý )ß AÓ Aôˆs�Dô ô$�#�tô $ô�Iô ô"E0�8õ E0r#   