§
    ™Štj"  ã                   ó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          úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_classic/chains/moderation.pyÚvalidate_environmentz*OpenAIModerationChain.validate_environment-   sK  € õ .ØØØñ
ô 
ˆõ
 3ØØ!Ø!Øð	
ñ 
ô 
Ðð	*ØˆMˆMˆMà+ˆFŒNØ"ð :Ø&9�Ô#Ø',ˆFÐ#Ñ$ð0Ý% h¸EÐ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   € Ø*.Ô*=ÐR�G˜IÔ&Ð&À7Ä?ˆ	Øð 	ØOˆIØŒ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‘   € ð �d”nÔ%ˆØÔð 	>Ø”k×(Ò(¨Ñ.Ô.ˆGØ—^’^ D¨'°)Ô*<¸QÔ*?Ñ@Ô@ˆFˆFà”kÔ-×4Ò4¸4Ð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Ø�d”nÔ%ˆØÔ)Ô5×<Ò<À4Ð<ÑHÔHÐHÐHÐHÐHÐHÐHˆØ—’  g¤o°aÔ&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  ø€ € € € € € ðð ð  €FˆCÐÐÑØ€L�#ÐÐÑØ!€J��d‘
Ð!Ð!Ñ!Ø'Ø€Eˆ4ÐÐÑØ;Ø€IˆsÐÐÑØ€J�ÐÐÑØ!%€N�C˜$‘JÐ%Ð%Ñ%Ø&*Ð˜˜t™Ð*Ð*Ñ*Ø ˜5¨Ð/Ñ/Ô/€N�DÐ/Ð/Ñ/à€_˜(Ð#Ñ#Ô#Øð$¨$ð $°3ð $ð $ð $ñ „[ñ $Ô#ð$ðL ð ˜D œIð  ð  ð  ñ „Xð ð ð!˜T #œYð !ð !ð !ñ „Xð!ð˜cð ¨Cð °Cð ð ð ð ð ð :>ð)ð )à�S˜#�X”ð)ð 0°$Ñ6ð)ð 
ˆc�3ˆhŒð	)ð )ð )ñ „Xð)ð" ?Cð
)ð 
)à�S˜#�X”ð
)ð 5°tÑ;ð
)ð 
ˆc�3ˆhŒð	
)ð 
)ð 
)ð 
)ð 
)ð 
)ð 
)ð 
)ð 
)ð 
)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   