o
    .if                     @   s`   d Z ddlmZmZmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ G dd deZd	S )
z)Pass input through a moderation endpoint.    )AnyDictListOptional)root_validator)CallbackManagerForChainRun)Chain)get_from_dict_or_envc                	   @   s   e Zd ZU 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edefddZedee fddZedee fddZdededefddZ	ddeeef dee deeef fddZd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()
    clientN
model_nameFerrorinput	input_keyoutput
output_keyopenai_api_keyopenai_organizationvaluesreturnc                 C   s\   t |dd}t |dddd}zddl}||_|r||_|j|d	< W |S  ty-   td
w )z?Validate that api key and python package exists in environment.r   OPENAI_API_KEYr   OPENAI_ORGANIZATION )defaultr   Nr   zTCould not import openai python package. Please install it with `pip install openai`.)r	   openaiapi_keyorganization
ModerationImportError)clsr   r   r   r    r    T/var/www/html/corbot_env/lib/python3.10/site-packages/langchain/chains/moderation.pyvalidate_environment%   s*   z*OpenAIModerationChain.validate_environmentc                 C      | j gS )z2Expect input key.

        :meta private:
        )r   selfr    r    r!   
input_keys?      z OpenAIModerationChain.input_keysc                 C   r#   )z3Return output key.

        :meta private:
        )r   r$   r    r    r!   output_keysG   r'   z!OpenAIModerationChain.output_keystextresultsc                 C   s"   |d rd}| j rt||S |S )Nflaggedz5Text was found that violates OpenAI's content policy.)r   
ValueError)r%   r)   r*   	error_strr    r    r!   	_moderateO   s   zOpenAIModerationChain._moderateinputsrun_managerc                 C   s4   || j  }| j|}| ||d d }| j|iS )Nr*   r   )r   r   creater.   r   )r%   r/   r0   r)   r*   r   r    r    r!   _callX   s   

zOpenAIModerationChain._call)N)__name__
__module____qualname____doc__r   __annotations__r   r   strr   boolr   r   r   r   r   r   r"   propertyr   r&   r(   dictr.   r   r2   r    r    r    r!   r
      s4   
 

r
   N)r6   typingr   r   r   r   langchain_core.pydantic_v1r   langchain.callbacks.managerr   langchain.chains.baser   langchain.utilsr	   r
   r    r    r    r!   <module>   s    