
    dh                         S SK r S SKJr  S SKJrJrJrJrJr  S SK	r	S SK
Jr  S SKJrJrJrJr   " S S\\5      r " S S	\\5      r " S
 S\5      r " S S\5      rg)    N)Enum)AnyDictListOptionalType)BaseTool)	BaseModelFieldValidationError	validatorc                   0    \ rS rSrSrSrSrSrSrSr	Sr
S	rg
)Detector
   allowed_subjectsbanned_subjectsprompt_injectionkeywordspiisecretstoxicity N__name__
__module____qualname____firstlineno__ALLOWED_TOPICSBANNED_TOPICSPROMPT_INJECTIONKEYWORDSPIISECRETSTOXICITY__static_attributes__r       _/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/tools/zenguard/tool.pyr   r   
   s&    'N%M)H
CGHr&   r   c                   0    \ rS rSrSrSrSrSrSrSr	Sr
S	rg
)DetectorAPI   zv1/detect/topics/allowedzv1/detect/topics/bannedzv1/detect/prompt_injectionzv1/detect/keywordszv1/detect/piizv1/detect/secretszv1/detect/toxicityr   Nr   r   r&   r'   r)   r)      s&    /N-M3#H
C!G#Hr&   r)   c                   n    \ rS rSr% \" SSSS9r\\   \S'   \" SSSS9r	\\
   \S'   \" S	S
S9r\\S'   Srg)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)defaultr0   in_parallelr   N)r   r   r   r   r   r1   r   str__annotations__r2   r   r4   boolr%   r   r&   r'   r,   r,      sY    %GT#Y 
 !&M!ItH~ 
 VK r&   r,   c                      \ rS rSr% Sr\\S'   Sr\\S'   \r	\
\   \S'   Sr\\S'   \" S	S
9r\\   \S'   Sr\\S'   Sr\\S'   \" SSSSS9S\S\4S j5       r\S\4S j5       r SS\\   S\\   S\S\\\4   4S jjrS\S\4S jrSrg	)ZenGuardTool/   ZenGuardnamezLZenGuard AI integration package. ZenGuard AI - the fastest GenAI guardrails.r0   args_schemaTreturn_directN)r3   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                     Uc   [         R                  " U R                  5      nUc  [        SU R                   S35      eU$ )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getenvrB   r   )clsrF   s     r'   set_api_keyZenGuardTool.set_api_key<   sN    9		#889A9!6677LN 
 r&   c                 d    U R                   c  [        SU R                   35      eU R                   $ )NzAPI 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: )r?   
ValueErrorrB   )selfs    r'   _api_keyZenGuardTool._api_keyH   sA      (
 3346  $$$r&   r1   r2   r4   c                     S nS n[        U5      S:X  a  U R                  US   5      nSU0nOSnUUUS.n[        R                  " U R                  U-   USU R
                  0SS9nUR                  5         UR                  5       $ ! [        R                  [        R                  4 a  nS	[        U5      0s S nA$ S nAff = f)
Nr.   r   messagesz	v1/detect)rT   r4   r2   z	x-api-key   )jsonheaderstimeouterror)len_convert_detector_to_apirequestspostr@   rQ   raise_for_statusrV   	HTTPErrorTimeoutr5   )rP   r1   r2   r4   postfixrV   responsees           r'   _runZenGuardTool._runU   s    	%G-1D9~"77	!E"G,% '#.!*
  }}++g5$dmm4	H %%'==?"""H$4$45 	%SV$$	%s   BB $C*B<6C<Cdetectorc                 <    [         UR                     R                  $ )N)r)   r<   value)rP   rf   s     r'   r[   %ZenGuardTool._convert_detector_to_apis   s    8==)///r&   r   )T)r   r   r   r   r<   r5   r6   r0   r,   r=   r   r
   r>   r7   r   r?   r   r@   rB   r   rL   propertyrQ   r   r   r   r   rd   r[   r%   r   r&   r'   r9   r9   /   s    D#V   $1Ki0M4&+D&9hsm9"<C<&88!tDuM	C 	C 	 N	 
%# 
% 
%  !	%c% >% 	%
 
c3h%<0 0c 0r&   r9   )rI   enumr   typingr   r   r   r   r   r\   langchain_core.toolsr	   pydanticr
   r   r   r   r5   r   r)   r,   r9   r   r&   r'   <module>ro      sS    	  2 2  ) A AsD $#t $I "E08 E0r&   