
    m
i                     z    d Z ddl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 ddlmZ  G d d	e          Zd
S )z)Pass input through a moderation endpoint.    )Any)AsyncCallbackManagerForChainRunCallbackManagerForChainRun)check_package_versionget_from_dict_or_env)Fieldmodel_validator)override)Chainc            
           e Zd ZU dZdZeed<   dZeed<   dZe	dz  ed<   	 dZ
eed<   	 dZe	ed	<   d
Ze	ed<   dZe	dz  ed<   dZe	dz  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e	 ddee	ef         dedz  dee	ef         fd            Z	 ddee	ef         dedz  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:
        ```python
        from langchain_classic.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<   n2|                    |          |d<   |                    |          |d<   n$# t          $ r}d}t          |          |d}~w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   )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          C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\langchain_classic/chains/moderation.pyvalidate_environmentz*OpenAIModerationChain.validate_environment-   sK    .
 

 3!!	
 
 
	*MMM+FN" :&9#',F#$0%hEBBBBB 0 0 0+/'(((0&' T#)#4x  #)===#H#Hx )/););N);)S)S~& 	* 	* 	*?  c"")	* s<   B-  A B- A$!B- #A$$AB- -
C7C		Cc                     | j         gS )zExpect input key.)r   selfs    r/   
input_keysz OpenAIModerationChain.input_keysU   s         c                     | j         gS )zReturn output key.)r   r2   s    r/   output_keysz!OpenAIModerationChain.output_keysZ   s       r5   textresultsc                 j    | 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_   sK    *.*=RGI&&7?	 	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._callh   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._acallw   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   strr   boolr   r   r   r   r   r   r	   classmethoddictr0   propertylistr4   r7   r>   r
   r   rE   r   rH   __classcell__)rI   s   @r/   r   r      sV           FCL#!Jd
!!!'E4;IsJ!%NC$J%%%&*t*** 5///ND///_(###$$ $3 $ $ $ [ $#$L  DI       X  !T#Y ! ! ! X!c C C      :>) )S#X) 0$6) 
c3h	) ) ) X)" ?C
) 
)S#X
) 5t;
) 
c3h	
) 
) 
) 
) 
) 
) 
) 
) 
) 
)r5   r   N)rM   typingr   langchain_core.callbacksr   r   langchain_core.utilsr   r   pydanticr   r	   typing_extensionsr
   langchain_classic.chains.baser   r    r5   r/   <module>r]      s    / /              M L L L L L L L + + + + + + + + & & & & & & / / / / / /q) q) q) q) q)E q) q) q) q) q)r5   