
    7|h                         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     f/var/www/html/test/engine/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    %GT#Y 
 !&M!ItH~ 
 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9A9!6677LN 
 r#   c                 b    | 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   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-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                 <    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M4&+D&9hsm9"<C<&88!tDuM	C 	C 	 N	 
%# 
% 
%  !	%c% >% 	%
 
c3h%<0 0c 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sD $#t $I "E08 E0r#   