
    3fi                     r    d Z ddlmZ ddlmZmZ ddlmZmZ ddl	m
Z
mZ ddlmZ ddlmZ  G d d	e      Zy
)z)Pass input through a moderation endpoint.    )Any)AsyncCallbackManagerForChainRunCallbackManagerForChainRun)check_package_versionget_from_dict_or_env)Fieldmodel_validator)override)Chainc            
           e Zd ZU dZdZeed<   dZeed<   dZe	dz  ed<   	 dZ
eed<   	 dZe	ed	<   d
Ze	ed<   dZe	dz  ed<   dZe	dz  ed<    ed      Zeed<    ed      ededefd              Zedee	   fd       Zedee	   fd       Zde	dede	fdZe	 ddee	ef   dedz  dee	ef   fd       Z	 ddee	ef   dedz  dee	ef   f fdZ xZ S )OpenAIModerationChaina  Pass input through a moderation endpoint.

    To use, you should have the `openai` python package installed, and the
    environment variable `OPENAI_API_KEY` set with your API key.

    Any parameters that are valid to be passed to the openai.create call can be passed
    in, even if not explicitly saved on this class.

    Example:
        ```python
        from langchain_classic.chains import OpenAIModerationChain

        moderation = OpenAIModerationChain()
        ```
    Nclientasync_client
model_nameFerrorinput	input_keyoutput
output_keyopenai_api_keyopenai_organizationdefaultopenai_pre_1_0before)modevaluesreturnc                 v   t        |dd      }t        |ddd      }	 ddl}||_        |r||_        d	|d
<   	 t	        dd       |d
   r|j                  |d<   |S |j                  |      |d<   |j                  |      |d<   	 |S # t
        $ r d|d
<   Y Sw xY w# t        $ r}d}t        |      |d}~ww xY w)z?Validate that api key and python package exists in environment.r   OPENAI_API_KEYr   OPENAI_ORGANIZATION r   r   NFr   openaiz1.0)gte_versionTr   )api_keyr   zTCould not import openai python package. Please install it with `pip install openai`.)
r   r#   r%   organizationr   
ValueError
ModerationOpenAIAsyncOpenAIImportError)clsr   r   r   r#   emsgs          a/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langchain_classic/chains/moderation.pyvalidate_environmentz*OpenAIModerationChain.validate_environment-   s    .

 3!!	
	*+FN"&9#',F#$0%hEB &'#)#4#4x   $*===#Hx )/););N);)S~&   0+/'(0  	*?  c")	*s@   B B B *B BB BB 	B8%B33B8c                     | j                   gS )zExpect input key.)r   selfs    r/   
input_keysz OpenAIModerationChain.input_keysU   s         c                     | j                   gS )zReturn output key.)r   r2   s    r/   output_keysz!OpenAIModerationChain.output_keysZ   s       r5   textresultsc                 z    | j                   r|d   n|j                  }|rd}| j                  rt        |      |S |S )Nflaggedz5Text was found that violates OpenAI's content policy.)r   r;   r   r'   )r3   r8   r9   	condition	error_strs        r/   	_moderatezOpenAIModerationChain._moderate_   s?    *.*=*=GI&7??	OIzz ++r5   inputsrun_managerc                 F   || j                      }| j                  r4| j                  j                  |      }| j	                  ||d   d         }nE| j                  j
                  j                  |      }| j	                  ||j                  d         }| j                  |iS )Nr9   r   r   )r   r   r   creater>   moderationsr9   r   )r3   r?   r@   r8   r9   r   s         r/   _callzOpenAIModerationChain._callh   s     dnn%kk((.G^^D')*<Q*?@Fkk--4444@G^^D'//!*<=F((r5   c                 2  K   | j                   rt        | 	  ||       d {   S || j                     }| j                  j
                  j                  |       d {   }| j                  ||j                  d         }| j                  |iS 7 n7 3w)N)r@   rB   r   )
r   super_acallr   r   rD   rC   r>   r9   r   )r3   r?   r@   r8   r9   r   	__class__s         r/   rH   zOpenAIModerationChain._acallw   s     
 KHHHdnn%))55<<4<HHgooa&89((	 IHs!   !BB<B!B"2BB)N)!__name__
__module____qualname____doc__r   r   __annotations__r   r   strr   boolr   r   r   r   r   r   r	   classmethoddictr0   propertylistr4   r7   r>   r
   r   rE   r   rH   __classcell__)rI   s   @r/   r   r      s     FCL#!Jd
!'E4;IsJ!%NC$J%&*t* /ND/(#$$ $3 $  $$L  DI     !T#Y ! !c C C   :>)S#X) 0$6) 
c3h	) )" ?C
)S#X
) 5t;
) 
c3h	
) 
)r5   r   N)rM   typingr   langchain_core.callbacksr   r   langchain_core.utilsr   r   pydanticr   r	   typing_extensionsr
   langchain_classic.chains.baser   r    r5   r/   <module>r]      s-    /  M + & /q)E q)r5   