
    @h                     j    S r SSKJrJr  SSKJrJr  SSKJrJ	r	  SSK
JrJr  SSKJr   " S S\5      rg	)
z)Pass input through a moderation endpoint.    )AnyOptional)AsyncCallbackManagerForChainRunCallbackManagerForChainRun)check_package_versionget_from_dict_or_env)Fieldmodel_validator)Chainc            	         ^  \ rS rSr% SrSr\\S'   Sr\\S'   Sr	\
\   \S'    Sr\\S'    S	r\\S
'   Sr\\S'   Sr\
\   \S'   Sr\
\   \S'   \" SS9r\\S'   \" SS9\S\S\4S j5       5       r\S\\   4S j5       r\S\\   4S j5       rS\S\S\4S jr S S\\\4   S\
\   S\\\4   4S jjr S S\\\4   S\
\   S\\\4   4U 4S jjjr Sr!U =r"$ )!OpenAIModerationChain   a  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:
    .. code-block:: python

        from langchain.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                 r   [        USS5      n[        USSSS9n SSKnX$l        U(       a  X4l        S	US
'    [	        SSS9  US
   (       a  UR                  US'   U$ UR                  US9US'   UR                  US9US'    U$ ! [
         a    SUS
'    NSf = f! [         a  nSn[        U5      UeSnAff = f)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          S/var/www/html/shao/venv/lib/python3.13/site-packages/langchain/chains/moderation.pyvalidate_environment*OpenAIModerationChain.validate_environment+   s     .

 3!!	
	*+N"&9#',F#$0%hEB &'#)#4#4x   $*===#Hx )/););N);)S~&   0+/'(0  	*?  c")	*s@   B 
B B $B BB BB 
B6#B11B6c                     U R                   /$ )z"Expect input key.

:meta private:
)r   selfs    r0   
input_keys OpenAIModerationChain.input_keysS   s         c                     U R                   /$ )z#Return output key.

:meta private:
)r   r4   s    r0   output_keys!OpenAIModerationChain.output_keys[   s       r8   textresultsc                     U R                   (       a  US   OUR                  nU(       a   SnU R                  (       a  [        U5      eU$ U$ )Nflaggedz5Text was found that violates OpenAI's content policy.)r   r?   r   r(   )r5   r<   r=   	condition	error_strs        r0   	_moderateOpenAIModerationChain._moderatec   s?    *.*=*=GI&7??	OIzz ++r8   inputsrun_managerc                 D   XR                      nU R                  (       a3  U R                  R                  U5      nU R	                  X4S   S   5      nOAU R                  R
                  R                  US9nU R	                  X4R                  S   5      nU R                  U0$ )Nr=   r   r   )r   r   r   createrB   moderationsr=   r   )r5   rD   rE   r<   r=   r   s         r0   _callOpenAIModerationChain._calll   s    
 nn%kk((.G^^D)*<Q*?@Fkk--4444@G^^D//!*<=F((r8   c                 *  >#    U R                   (       a  [        TU ]	  XS9I S h  vN $ XR                     nU R                  R
                  R                  US9I S h  vN nU R                  X4R                  S   5      nU R                  U0$  Ni N27f)N)rE   rG   r   )
r   super_acallr   r   rI   rH   rB   r=   r   )r5   rD   rE   r<   r=   r   	__class__s         r0   rN   OpenAIModerationChain._acallz   s     
 HHHnn%))55<<4<HHooa&89((	 IHs!   "BB8BB1BB )N)#__name__
__module____qualname____firstlineno____doc__r   r   __annotations__r   r   r   strr   boolr   r   r   r   r	   r   r
   classmethoddictr1   propertylistr6   r:   rB   r   rJ   r   rN   __static_attributes____classcell__)rO   s   @r0   r   r      s    FCL# $J$'E4;IsJ$(NHSM()-#- /ND/(#$$ $3 $  $$L  DI     !T#Y ! !c C C  =A)S#X) 89) 
c3h	)" BF
)S#X
) =>
) 
c3h	
) 
)r8   r   N)rV   typingr   r   langchain_core.callbacksr   r   langchain_core.utilsr   r   pydanticr	   r
   langchain.chains.baser   r   rQ   r8   r0   <module>re      s*    /   M + 'u)E u)r8   