
    h                     j    d 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mZ ddlmZ  G d de      Zy	)
z)Pass input through a moderation endpoint.    )AnyOptional)AsyncCallbackManagerForChainRunCallbackManagerForChainRun)check_package_versionget_from_dict_or_env)Fieldmodel_validator)Chainc            	           e Zd ZU dZdZeed<   dZeed<   dZe	e
   ed<   	 dZeed<   	 dZe
ed	<   d
Ze
ed<   dZe	e
   ed<   dZe	e
   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	 ddee
ef   de	e   dee
ef   fdZ	 ddee
ef   de	e   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:
        .. 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                 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          Y/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/langchain/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 )z2Expect input key.

        :meta private:
        )r   selfs    r/   
input_keysz OpenAIModerationChain.input_keysS   s         c                     | j                   gS )z3Return output key.

        :meta private:
        )r   r2   s    r/   output_keysz!OpenAIModerationChain.output_keys[   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._moderatec   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._calll   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._acallz   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   r   strr   boolr   r   r   r   r	   r   r
   classmethoddictr0   propertylistr4   r7   r>   r   rE   r   rH   __classcell__)rI   s   @r/   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	
) 
)r5   r   N)rM   typingr   r   langchain_core.callbacksr   r   langchain_core.utilsr   r   pydanticr	   r
   langchain.chains.baser   r    r5   r/   <module>r\      s*    /   M + 'u)E u)r5   