
    NgL                     z    d Z ddlmZmZ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d	S )
z)Pass input through a moderation endpoint.    )AnyDictList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                    t          |dd          }t          |ddd          }	 ddl}||_        |r||_        d	|d
<   	 t	          dd           n# t
          $ r d|d
<   Y nw xY w|d
         r|j        |d<   n.|                                |d<   |                                |d<   n# t          $ r t          d          w xY w|S )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   r   zTCould not import openai python package. Please install it with `pip install openai`.)
r
   r%   api_keyorganizationr	   
ValueError
ModerationOpenAIAsyncOpenAIImportError)clsr   r   r   r%   s        W/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain/chains/moderation.pyvalidate_environmentz*OpenAIModerationChain.validate_environment+   s6    .$&6
 
 3!!	
 
 
	MMM+FN" :&9#',F#$0%hEBBBBB 0 0 0+/'(((0&' >#)#4x  #)==??x )/););)=)=~& 	 	 	?  	
 s0   B)  A B) A$!B) #A$$AB) )Cc                     | j         gS )z2Expect input key.

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

        :meta private:
        )r   r2   s    r/   output_keysz!OpenAIModerationChain.output_keysX   s       r5   textresultsc                 l    | 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`   sP     	(	*III 	!OIz ! +++  r5   inputsrun_managerc                 8   || j                  }| j        r=| j                            |          }|                     ||d         d                   }nA| 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._callm   s    
 dn% 	>k((..G^^D')*<Q*?@@FFk-4444@@G^^D'/!*<==F((r5   c                 "  K   | j         r)t                                          ||           d {V S || j                 }| j        j                            |           d {V }|                     ||j        d                   }| j	        |iS )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._acall{   s      
  	IKHHHHHHHHHdn%)5<<4<HHHHHHHHgoa&899((r5   )N)!__name__
__module____qualname____doc__r   r   __annotations__r   r   r   strr   boolr   r   r   r   r   r   r   classmethodr   r0   propertyr   r4   r7   r>   r   rE   r   rH   __classcell__)rI   s   @r/   r   r      sN          FCL# $J$$$'E4;IsJ$(NHSM((()-#--- 5///ND///_(###!$ !3 ! ! ! [ $#!F  DI       X  !T#Y ! ! ! X!c C C      =A) )S#X) 89) 
c3h	) ) ) )" BF
) 
)S#X
) =>
) 
c3h	
) 
) 
) 
) 
) 
) 
) 
) 
) 
)r5   r   N)rM   typingr   r   r   r   langchain_core.callbacksr   r   langchain_core.utilsr	   r
   pydanticr   r   langchain.chains.baser   r    r5   r/   <module>rZ      s    / / , , , , , , , , , , , ,        M L L L L L L L + + + + + + + + ' ' ' ' ' 'v) v) v) v) v)E v) v) v) v) v)r5   