§
    šŠtjÀ   ã                  óÚ   — d dl mZ d dlZd dlmZmZ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mZ d dlmZ d d	lmZmZmZ erd d
lmZ  ej        e¦  «        Z G d„ de¦  «        ZdS )é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚDictÚIteratorÚListÚOptional)ÚCallbackManagerForLLMRun)ÚLLM)ÚGenerationChunk)Úget_from_dict_or_envÚpre_init)Ú
get_fields)Ú
ConfigDictÚFieldÚmodel_validator)Ú
Predictionc                  óÂ  — e Zd ZU dZded<    eed¬¦  «        Zded<   dZd	ed
<   dZ	d	ed<    edd¬¦  «        Z
ded<   	 dZded<   	  ee¬¦  «        Zded<   	  edd¬¦  «        Zed/d„¦   «         Zed0d„¦   «         Zed1d„¦   «         Z ed¬¦  «        ed2d „¦   «         ¦   «         Zed3d"„¦   «         Zed4d#„¦   «         Zed5d$„¦   «         Z	 	 d6d7d*„Z	 	 d6d8d,„Zd9d.„ZdS ):Ú	Replicatea  Replicate models.

    To use, you should have the ``replicate`` python package installed,
    and the environment variable ``REPLICATE_API_TOKEN`` set with your API token.
    You can find your token here: https://replicate.com/account

    The model param is required, but any other model parameters can also
    be passed in with the format model_kwargs={model_param: value, ...}

    Example:
        .. code-block:: python

            from langchain_community.llms import Replicate

            replicate = Replicate(
                model=(
                    "stability-ai/stable-diffusion: "
                    "27b93a2413e7f36cd83da926f3656280b2931564ff050bf9575f1fdf9bcd7478",
                ),
                model_kwargs={"image_dimensions": "512x512"}
            )
    ÚstrÚmodelÚinput)Údefault_factoryÚaliasúDict[str, Any]Úmodel_kwargsNzOptional[str]Úreplicate_api_tokenÚ
prompt_keyT)ÚdefaultÚexcluder   Úversion_objFÚboolÚ	streaming)r   ú	List[str]ÚstopÚforbid)Úpopulate_by_nameÚextraÚreturnúDict[str, str]c                ó
   — ddiS )Nr   ÚREPLICATE_API_TOKEN© ©Úselfs    ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/replicate.pyÚ
lc_secretszReplicate.lc_secrets@   s   € à%Ð'<Ð=Ð=ó    c                ó   — dS )NTr-   ©Úclss    r0   Úis_lc_serializablezReplicate.is_lc_serializableD   s   € àˆtr2   c                ó
   — g d¢S )z*Get the namespace of the langchain object.)Ú	langchainÚllmsÚ	replicater-   r4   s    r0   Úget_lc_namespacezReplicate.get_lc_namespaceH   s   € ð 2Ð1Ð1Ð1r2   Úbefore)ÚmodeÚvaluesc                óÈ  — d„ t          | ¦  «                             ¦   «         D ¦   «         }|                     di ¦  «        }|rt                               d¦  «         i |                     di ¦  «        ¥|¥}t          |¦  «        D ]U}||vrO||v rt          d|› d�¦  «        ‚t                               |› d|› d�¦  «         |                     |¦  «        ||<   ŒV||d<   |S )	z>Build extra kwargs from additional params that were passed in.c                ó   — h | ]}|’ŒS r-   r-   )Ú.0Úfields     r0   ú	<setcomp>z(Replicate.build_extra.<locals>.<setcomp>Q   s   € Ð#NÐ#NÐ#N¨e EÐ#NÐ#NÐ#Nr2   r   zDInit param `input` is deprecated, please use `model_kwargs` instead.r   zFound z supplied twice.zJ was transferred to model_kwargs.
                    Please confirm that z is what you intended.)r   ÚkeysÚpopÚloggerÚwarningÚlistÚ
ValueError)r5   r>   Úall_required_field_namesr   r(   Ú
field_names         r0   Úbuild_extrazReplicate.build_extraM   s&  € ð $OÐ#NµzÀ#±´×7KÒ7KÑ7MÔ7MÐ#NÑ#NÔ#NÐ à—
’
˜7 BÑ'Ô'ˆØð 	Ý�NŠNØVñô ð ð <�6—:’:˜n¨bÑ1Ô1Ð;°UÐ;ˆÝ˜v™,œ,ð 	;ð 	;ˆJØÐ!9Ð9Ð9Ø Ð&Ð&Ý$Ð%J¨jÐ%JÐ%JÐ%JÑKÔKÐKÝ—’Ø#ð Nð NØ)3ðNð Nð Nñô ð ð %+§J¢J¨zÑ$:Ô$:��jÑ!øØ!&ˆˆ~ÑØˆr2   r   c                ó2   — t          |dd¦  «        }||d<   |S )z?Validate that api key and python package exists in environment.r   r,   )r   )r5   r>   r   s      r0   Úvalidate_environmentzReplicate.validate_environmente   s/   € õ 3ØÐ)Ð+@ñ
ô 
Ðð )<ˆÐ$Ñ%Øˆr2   c                ó    — | j         | j        dœS )zGet the identifying parameters.©r   r   rP   r.   s    r0   Ú_identifying_paramszReplicate._identifying_paramsn   s   € ð ”ZØ Ô-ð
ð 
ð 	
r2   c                ó   — dS )zReturn type of model.r:   r-   r.   s    r0   Ú	_llm_typezReplicate._llm_typev   s	   € ð ˆ{r2   ÚpromptúOptional[List[str]]Úrun_managerú"Optional[CallbackManagerForLLMRun]Úkwargsc                óÊ  — | j         r+d} | j        |f||dœ|¤ŽD ]}|€|j        }Œ||j        z  }Œn} | j        |fi |¤Ž}|                     ¦   «          |j        dk    rt          |j        ¦  «        ‚t          |j	        t          ¦  «        r|j	        }nd                     |j	        ¦  «        }|€J ‚|p| j        }|D ]#}	|	|v r|d|                     |	¦  «        …         }Œ$|S )zCall to replicate endpoint.N)r%   rV   ÚfailedÚ )r#   Ú_streamÚtextÚ_create_predictionÚwaitÚstatusÚRuntimeErrorÚerrorÚ
isinstanceÚoutputr   Újoinr%   Úfind)
r/   rT   r%   rV   rX   Ú
completionÚchunkÚ
predictionÚstop_conditionsÚss
             r0   Ú_callzReplicate._call{   s?  € ð Œ>ð 	8Ø(,ˆJØ%˜œØðØ!¨{ðð Ø>Dðð ð -ð -�ð Ð%Ø!&¤�J�Jà %¤*Ñ,�J�Jð-ð 1˜Ô0°ÐBÐB¸6ÐBÐBˆJØ�OŠOÑÔÐØÔ  HÒ,Ð,Ý" :Ô#3Ñ4Ô4Ð4Ý˜*Ô+­SÑ1Ô1ð 8Ø'Ô.�
�
àŸWšW ZÔ%6Ñ7Ô7�
ØÐ%Ð%Ð%ØÐ+ $¤)ˆØ ð 	>ð 	>ˆAØ�JˆˆØ'Ð(<¨*¯/ª/¸!Ñ*<Ô*<Ð(<Ô=�
øØÐr2   úIterator[GenerationChunk]c              +  ó†  K  —  | j         |fi |¤Ž}|p| j        }d}d}|                     ¦   «         D ]Ž}	||	z  }|D ]M}
|
|v rG|                     ¦   «          d}t	          |	                     |
¦  «        d¦  «        }|	d |…         }	|	s nŒN|	r0|r|                     |	| j        ¬¦  «         t          |	¬¦  «        V — |r d S Œ�d S )NFr[   Tr   )Úverbose)r]   )	r^   r%   Úoutput_iteratorÚcancelÚmaxrf   Úon_llm_new_tokenro   r   )r/   rT   r%   rV   rX   ri   rj   Ústop_condition_reachedÚcurrent_completionrd   rk   Ú
stop_indexs               r0   r\   zReplicate._streamœ   s6  è è € ð -�TÔ,¨VÐ>Ð>°vÐ>Ð>ˆ
ØÐ+ $¤)ˆØ!&ÐØ"$ÐØ ×0Ò0Ñ2Ô2ð 	ð 	ˆFØ &Ñ(Ðà$ð 	ð 	�ØÐ*Ð*Ð*Ø×%Ò%Ñ'Ô'Ð'Ø-1Ð*õ "% V§[¢[°¡^¤^°QÑ!7Ô!7�JØ# K Z KÔ0�FØ!ð Ø˜øØð 3Øð Ø×0Ò0ØØ $¤ð 1ñ ô ð õ &¨6Ð2Ñ2Ô2Ð2Ð2Ð2Ø%ð Ø��ðð)	ð 	r2   r   c                óð  — 	 dd l }n# t          $ r t          d¦  «        ‚w xY w| j        €‹d| j        v rW| j                             d¦  «        \  }}|j                             |¦  «        }|j                             |¦  «        | _        n+|j                             | j        ¦  «        }|j        | _        | j	        €Yt          | j        j        d         d         d         d                              ¦   «         d„ ¬	¦  «        }|d         d         | _	        | j	        |i| j        ¥|¥}d| j        vr&|j        j                             | j        |¬
¦  «        S |j                             | j        |¬¦  «        S )Nr   zZCould not import replicate python package. Please install it with `pip install replicate`.ú:Ú
componentsÚschemasÚInputÚ
propertiesc                ó:   — | d                               dd¦  «        S )Né   zx-orderr   )Úget)Úitems    r0   ú<lambda>z.Replicate._create_prediction.<locals>.<lambda>×   s   €   a¤§¢¨Y¸Ñ!:Ô!:€ r2   )Úkey)r   )Úversionr   )r:   ÚImportErrorr!   r   ÚsplitÚmodelsr   ÚversionsÚlatest_versionr   ÚsortedÚopenapi_schemaÚitemsr   ÚpredictionsÚcreate)	r/   rT   rX   Úreplicate_pythonÚ	model_strÚversion_strr   Úinput_propertiesÚinput_s	            r0   r^   zReplicate._create_prediction¾   s¬  € ð	Ø0Ð0Ð0Ð0Ð0øÝð 	ð 	ð 	ÝðBñô ð ð	øøøð ÔÐ#Ø�d”jÐ Ð Ø)-¬×)9Ò)9¸#Ñ)>Ô)>Ñ&�	˜;Ø(Ô/×3Ò3°IÑ>Ô>�Ø#(¤>×#5Ò#5°kÑ#BÔ#B�Ô Ð à(Ô/×3Ò3°D´JÑ?Ô?�Ø#(Ô#7�Ô àŒ?Ð"å%ØÔ Ô/°Ô=¸iÔHÈÔQØ ôç’%‘'”'Ø:Ð:ð	 ñ  ô  Ðð /¨qÔ1°!Ô4ˆDŒOð ŒO˜Vð
àÔð
ð ð
ˆð �d”jÐ Ð Ø#Ô*Ô6×=Ò=¸d¼jÐPVÐ=ÑWÔWÐWà#Ô/×6Ò6ØÔ(°ð 7ñ ô ð s   ‚ ‡!)r)   r*   )r)   r"   )r)   r$   )r>   r   r)   r   )r>   r   r)   r   )r)   r   )r)   r   )NN)
rT   r   r%   rU   rV   rW   rX   r   r)   r   )
rT   r   r%   rU   rV   rW   rX   r   r)   rm   )rT   r   rX   r   r)   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   Údictr   r   r   r!   r#   rH   r%   r   Úmodel_configÚpropertyr1   Úclassmethodr6   r;   r   rL   r   rN   rQ   rS   rl   r\   r^   r-   r2   r0   r   r      s6  € € € € € € ðð ð. €J€J�JØ#( 5¸ÀWÐ#MÑ#MÔ#M€LÐMÐMÐMÑMØ)-ÐÐ-Ð-Ð-Ñ-Ø $€JÐ$Ð$Ð$Ñ$Ø�u T°4Ð8Ñ8Ô8€KÐ8Ð8Ð8Ñ8ðð
 €IÐÐÐÑØ(à�e¨DÐ1Ñ1Ô1€DÐ1Ð1Ð1Ñ1Ø7à�:ØØðñ ô €Lð
 ð>ð >ð >ñ „Xð>ð ðð ð ñ „[ðð ð2ð 2ð 2ñ „[ð2ð €_˜(Ð#Ñ#Ô#Øðð ð ñ „[ñ $Ô#ðð, ðð ð ñ „Xðð ð
ð 
ð 
ñ „Xð
ð ðð ð ñ „Xðð %)Ø:>ð	ð ð ð ð ðH %)Ø:>ð	 ð  ð  ð  ð  ðD*ð *ð *ð *ð *ð *r2   r   )Ú
__future__r   ÚloggingÚtypingr   r   r   r   r   r	   Úlangchain_core.callbacksr
   Ú#langchain_core.language_models.llmsr   Úlangchain_core.outputsr   Úlangchain_core.utilsr   r   Úlangchain_core.utils.pydanticr   Úpydanticr   r   r   Úreplicate.predictionr   Ú	getLoggerr“   rF   r   r-   r2   r0   ú<module>r§      s8  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eà =Ð =Ð =Ð =Ð =Ð =Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7àð 0Ø/Ð/Ð/Ð/Ð/Ð/à	ˆÔ	˜8Ñ	$Ô	$€ðUð Uð Uð Uð U�ñ Uô Uð Uð Uð Ur2   