HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/langchain/chains/__pycache__/moderation.cpython-310.pyc
o

���g��@sldZddlmZmZmZmZddlmZmZddl	m
Z
mZddlm
Z
mZddlmZGdd�de�Zd	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	sZeZdZUdZdZeed<dZeed<dZe	e
ed<	dZeed<	dZ
e
ed	<d
Ze
ed<dZe	e
ed<dZe	e
ed
<edd�Zeed<edd�ededefdd���Zedee
fdd��Zedee
fdd��Zde
dede
fdd�Z	d$dee
efde	edee
effd d!�Z	d$dee
efde	edee
eff�fd"d#�
Z�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�returncCs�t|dd�}t|dddd�}zEddl}||_|r||_d	|d
<ztddd
�Wn
ty4d|d
<Ynw|d
rA|j|d<W|S|j|d�|d<|j|d�|d<W|St	y^t	d��w)z?Validate that api key and python package exists in environment.r�OPENAI_API_KEYr�OPENAI_ORGANIZATION�rrNFr�openaiz1.0)�gte_versionTr)�api_keyrzTCould not import openai python package. Please install it with `pip install openai`.)
r	r"r$�organizationr�
ValueError�
Moderation�OpenAI�AsyncOpenAI�ImportError)�clsrrrr"�r,�F/usr/local/lib/python3.10/dist-packages/langchain/chains/moderation.py�validate_environment+s>���
����z*OpenAIModerationChain.validate_environmentcC�|jgS)z2Expect input key.

        :meta private:
        )r��selfr,r,r-�
input_keysP�z OpenAIModerationChain.input_keyscCr/)z3Return output key.

        :meta private:
        )rr0r,r,r-�output_keysXr3z!OpenAIModerationChain.output_keys�text�resultscCs4|jr|d}n|j}|rd}|jrt|��|S|S)N�flaggedz5Text was found that violates OpenAI's content policy.)rr7rr&)r1r5r6�	condition�	error_strr,r,r-�	_moderate`s
zOpenAIModerationChain._moderate�inputs�run_managercCs^||j}|jr|j�|�}|�||dd�}n|jjj|d�}|�||jd�}|j|iS)Nr6r�r)rrr�creater:�moderationsr6r�r1r;r<r5r6rr,r,r-�_callms

zOpenAIModerationChain._callc�sZ�|jrt�j||d�IdHS||j}|jjj|d�IdH}|�||jd�}|j	|iS)N)r<r=r)
r�super�_acallrrr?r>r:r6rr@��	__class__r,r-rC{s�

zOpenAIModerationChain._acall)N)!�__name__�
__module__�__qualname__�__doc__rr�__annotations__rrr�strr�boolrrrrr
rr�classmethodrr.�propertyrr2r4r:rrArrC�
__classcell__r,r,rDr-r
sJ
#�
��

��
��
�r
N)rI�typingrrrr�langchain_core.callbacksrr�langchain_core.utilsrr	�pydanticr
r�langchain.chains.baserr
r,r,r,r-�<module>s