Ë
    ´Œjƒ  ã                   ój   — d 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mZ ddlmZ  G d„ de«      Zy	)
z)Pass input through a moderation endpoint.é    )ÚAnyÚ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                 óv  — t        |dd«      }t        |ddd¬«      }	 ddl}||_        |r||_        d	|d
<   	 t	        dd¬«       |d
   r|j                  |d<   |S |j                  |¬«      |d<   |j                  |¬«      |d<   	 |S # t
        $ r d|d
<   Y ŒSw xY w# t        $ r}d}t        |«      |‚d}~ww xY w)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          úe/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain/chains/moderation.pyÚvalidate_environmentz*OpenAIModerationChain.validate_environment+   s  € ô .ØØØó
ˆô
 3ØØ!Ø!Øô	
Ðð	*Ûà+ˆFŒNÙ"Ø&9�Ô#Ø',ˆFÐ#Ñ$ð0Ü% h¸EÕBð Ð&Ò'Ø#)×#4Ñ#4��xÑ ð ˆð $*§=¡=¸ =Ó#H��xÑ Ø)/×);Ñ);ÀNÐ);Ó)S��~Ò&ð ˆøô ò 0Ø+/�Ð'Ó(ð0ûô ò 	*ð?ð ô ˜cÓ"¨Ð)ûð	*ús@   žB ¸B ÁB Á*B ÂBÂB ÂBÂB Â	B8Â%B3Â3B8c                 ó   — | j                   gS )z2Expect input key.

        :meta private:
        )r   ©Úselfs    r/   Ú
input_keysz OpenAIModerationChain.input_keysS   s   € ð —‘ÐÐó    c                 ó   — | j                   gS )z3Return output key.

        :meta private:
        )r   r2   s    r/   Úoutput_keysz!OpenAIModerationChain.output_keys[   s   € ð —‘Ð Ð r5   ÚtextÚresultsc                 óz   — | 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._moderatec   s?   € Ø*.×*=Ò*=�G˜IÒ&À7Ç?Á?ˆ	ÙØOˆIØ�zŠzÜ  Ó+Ð+ØÐØˆr5   ÚinputsÚrun_managerc                 óF  — || j                      }| j                  r4| j                  j                  |«      }| j	                  ||d   d   «      }nE| j                  j
                  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._calll   sŽ   € ð
 �d—n‘nÑ%ˆØ×ÒØ—k‘k×(Ñ(¨Ó.ˆGØ—^‘^ D¨'°)Ñ*<¸QÑ*?Ó@‰Fà—k‘k×-Ñ-×4Ñ4¸4Ð4Ó@ˆGØ—^‘^ D¨'¯/©/¸!Ñ*<Ó=ˆFØ—‘ Ð(Ð(r5   c              ƒ   ó2  •K  — | j                   rt        ‰| �	  ||¬«      ƒ d {  –—† S || j                     }| j                  j
                  j                  |¬«      ƒ d {  –—† }| j                  ||j                  d   «      }| j                  |iS 7 Œn7 Œ3­w)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._acallz   sŠ   øè ø€ ð
 ×ÒÜ™™¨¸K˜ÓH×HÐHØ�d—n‘nÑ%ˆØ×)Ñ)×5Ñ5×<Ñ<À4Ð<ÓH×HˆØ—‘  g§o¡o°aÑ&8Ó9ˆØ—‘ Ð(Ð(ð	 IøàHús!   ƒ!B¤B¥<BÁ!BÁ"2BÂB)N)!Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__annotations__r   r   r   Ústrr   Úboolr   r   r   r   r	   r   r
   ÚclassmethodÚdictr0   ÚpropertyÚlistr4   r7   r>   r   rE   r   rH   Ú__classcell__)rI   s   @r/   r   r      s‚  ø… ñð €FˆCÓØ€L�#ÓØ $€J�˜‘Ó$Ø'Ø€Eˆ4ÓØ;Ø€IˆsÓØ€J�ÓØ$(€N�H˜S‘MÓ(Ø)-Ð˜ #™Ó-Ù ¨Ô/€N�DÓ/á˜(Ô#Øð$¨$ð $°3ò $ó ó $ð$ðL ð ˜D ™Iò  ó ð ð ð!˜T #™Yò !ó ð!ð˜cð ¨Cð °Có ð =Añ)à�S˜#�X‘ð)ð Ð8Ñ9ð)ð 
ˆc�3ˆh‰ó	)ð" BFñ
)à�S˜#�X‘ð
)ð Ð=Ñ>ð
)ð 
ˆc�3ˆh‰÷	
)ñ 
)r5   r   N)rM   Útypingr   r   Úlangchain_core.callbacksr   r   Úlangchain_core.utilsr   r   Úpydanticr	   r
   Úlangchain.chains.baser   r   © r5   r/   Ú<module>r\      s*   ðÙ /ç  ÷÷ Mß +å 'ôu)˜Eõ u)r5   