
    Ng                         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     c/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/tools/zenguard/tool.pyr   r   
   s2        'N%M)H
CGHHHr#   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#HHHr#   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         %  GT#Y   
 !&M! ! !ItH~   
 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9A9!N6N N N  
 r#   c                 L    | j         t          d| j                   | j         S )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: )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-1D9~~""77	!EE"G,% '#.!* 
  }+g5$dm4	  H %%'''==??""H$45 	% 	% 	%SVV$$$$$$$	%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     $1Ki000M4&+eD&9&9&9hsm999"<C<<<&8888Y!tDuMMM	C 	C 	 	 	 NM	 
%# 
% 
% 
% X
%  !	% %c% >% 	%
 
c3h% % % %<0 0c 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    sD   $ $ $ $ $#t $ $ $    I   "E0 E0 E0 E0 E08 E0 E0 E0 E0 E0r#   