Ë
    µŒjÀ   ã                  óÖ   — 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j6                  e«      Z G d„ de«      Zy)é    )Ú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d%d„«       Zed&d„«       Z ed¬«      ed'd„«       «       Zed(d„«       Zed)d„«       Zed*d „«       Z	 	 d+	 	 	 	 	 	 	 	 	 d,d!„Z	 	 d+	 	 	 	 	 	 	 	 	 d-d"„Zd.d#„Zy)/Ú	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Úextrac                ó
   — ddiS )Nr   ÚREPLICATE_API_TOKEN© ©Úselfs    úl/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/replicate.pyÚ
lc_secretszReplicate.lc_secrets@   s   € à%Ð'<Ð=Ð=ó    c                 ó   — y)NTr+   ©Úclss    r.   Úis_lc_serializablezReplicate.is_lc_serializableD   s   € àr0   c                ó
   — g d¢S )z*Get the namespace of the langchain object.)Ú	langchainÚllmsÚ	replicater+   r2   s    r.   Úget_lc_namespacezReplicate.get_lc_namespaceH   s
   € ò 2Ð1r0   Úbefore)Úmodec                ó’  — t        | «      j                  «       D �ch c]  }|’Œ }}|j                  di «      }|rt        j	                  d«       i |j                  di «      ¥|¥}t        |«      D ]I  }||vsŒ||v rt        d|› d�«      ‚t        j	                  |› d|› d�«       |j                  |«      ||<   ŒK ||d<   |S c c}w )z>Build extra kwargs from additional params that were passed in.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)r3   ÚvaluesÚfieldÚall_required_field_namesr   r(   Ú
field_names          r.   Úbuild_extrazReplicate.build_extraM   së   € ô 8BÀ#³×7KÑ7KÔ7MÓ#NÑ7M¨e¢EÐ7MÐ Ð#Nà—
‘
˜7 BÓ'ˆÙÜ�N‰NØVôð <�6—:‘:˜n¨bÓ1Ð;°UÐ;ˆÜ˜vž,ˆJØÐ!9Ò9Ø Ñ&Ü$ v¨j¨\Ð9IÐ%JÓKÐKÜ—‘Ø#˜ð %)Ø)3¨Ð4JðNôð %+§J¡J¨zÓ$:��jÒ!ð 'ð "'ˆˆ~ÑØˆùò% $Os   œ	Cc                ó*   — t        |dd«      }||d<   |S )z?Validate that api key and python package exists in environment.r   r*   )r   )r3   rC   r   s      r.   Úvalidate_environmentzReplicate.validate_environmente   s*   € ô 3ØÐ)Ð+@ó
Ðð )<ˆÐ$Ñ%Øˆr0   c                ó4   — | j                   | j                  dœS )zGet the identifying parameters.©r   r   rK   r,   s    r.   Ú_identifying_paramszReplicate._identifying_paramsn   s   € ð —Z‘ZØ ×-Ñ-ñ
ð 	
r0   c                 ó   — y)zReturn type of model.r8   r+   r,   s    r.   Ú	_llm_typezReplicate._llm_typev   s   € ð r0   c                ó  — | j                   r<d} | j                  |f||dœ|¤ŽD ]   }|€|j                  }Œ||j                  z  }Œ" n‰ | j                  |fi |¤Ž}|j	                  «        |j
                  dk(  rt        |j                  «      ‚t        |j                  t        «      r|j                  }ndj                  |j                  «      }|€J ‚|xs | j                  }|D ]  }	|	|v sŒ|d|j                  |	«       }Œ |S )zCall to replicate endpoint.N)r%   Úrun_managerÚfailedÚ )r#   Ú_streamÚtextÚ_create_predictionÚwaitÚstatusÚRuntimeErrorÚerrorÚ
isinstanceÚoutputr   Újoinr%   Úfind)
r-   Úpromptr%   rP   ÚkwargsÚ
completionÚchunkÚ
predictionÚstop_conditionsÚss
             r.   Ú_callzReplicate._call{   s  € ð �>Š>Ø(,ˆJØ%˜Ÿ™ØðØ!¨{ñØ>Dô�ð Ð%Ø!&§¡‘Jà %§*¡*Ñ,‘Jñð 1˜×0Ñ0°ÑB¸6ÑBˆJØ�O‰OÔØ× Ñ  HÒ,Ü" :×#3Ñ#3Ó4Ð4Ü˜*×+Ñ+¬SÔ1Ø'×.Ñ.‘
àŸW™W Z×%6Ñ%6Ó7�
ØÐ%Ð%Ð%ØÒ+ $§)¡)ˆÛ ˆAØ�JŠØ'Ð(<¨*¯/©/¸!Ó*<Ð=‘
ð !ð Ðr0   c              +  óx  K  —  | j                   |fi |¤Ž}|xs | j                  }d}d}|j                  «       D ]|  }	||	z  }|D ]=  }
|
|v sŒ|j                  «        d}t	        |	j                  |
«      d«      }|	d | }	|	rŒ= n |	r-|r|j                  |	| j                  ¬«       t        |	¬«      –— |sŒ| y  y ­w)NFrR   Tr   )Úverbose)rT   )	rU   r%   Úoutput_iteratorÚcancelÚmaxr]   Úon_llm_new_tokenrg   r   )r-   r^   r%   rP   r_   rb   rc   Ústop_condition_reachedÚcurrent_completionr[   rd   Ú
stop_indexs               r.   rS   zReplicate._streamœ   sÜ   è ø€ ð -�T×,Ñ,¨VÑ>°vÑ>ˆ
ØÒ+ $§)¡)ˆØ!&ÐØ"$ÐØ ×0Ñ0Ö2ˆFØ &Ñ(Ðã$�ØÐ*Ò*Ø×%Ñ%Ô'Ø-1Ð*ô "% V§[¡[°£^°QÓ!7�JØ# K ZÐ0�FÚ!Ùð %ñ ÙØ×0Ñ0ØØ $§¡ð 1ô ô &¨6Ô2Ò2Ú%Ùñ+ 3ùs   ‚A	B:Á4B:Â4B:Â6B:c                ó>  — 	 dd l }| j                  €žd| j                  v rZ| j                  j	                  d«      \  }}|j
                  j                  |«      }|j                  j                  |«      | _        n6|j
                  j                  | j                  «      }|j                  | _        | j                  €It        | j                  j                  d   d   d   d   j                  «       d„ ¬	«      }|d   d   | _	        | j                  |i| j                  ¥|¥}d| j                  vr1|j
                  j                  j                  | j                  |¬
«      S |j                  j                  | j                  |¬«      S # t        $ r t        d«      ‚w xY w)Nr   zZCould not import replicate python package. Please install it with `pip install replicate`.Ú:Ú
componentsÚschemasÚInputÚ
propertiesc                ó,   — | d   j                  dd«      S )Né   zx-orderr   )Úget)Úitems    r.   Ú<lambda>z.Replicate._create_prediction.<locals>.<lambda>×   s   €   a¡§¡¨Y¸Ô!:r0   )Úkey)r   )Úversionr   )r8   ÚImportErrorr!   r   ÚsplitÚmodelsrw   ÚversionsÚlatest_versionr   ÚsortedÚopenapi_schemaÚitemsr   ÚpredictionsÚcreate)	r-   r^   r_   Úreplicate_pythonÚ	model_strÚversion_strr   Úinput_propertiesÚinput_s	            r.   rU   zReplicate._create_prediction¾   s—  € ð	Û0ð ×ÑÐ#Ø�d—j‘jÑ Ø)-¯©×)9Ñ)9¸#Ó)>Ñ&�	˜;Ø(×/Ñ/×3Ñ3°IÓ>�Ø#(§>¡>×#5Ñ#5°kÓ#B�Õ à(×/Ñ/×3Ñ3°D·J±JÓ?�Ø#(×#7Ñ#7�Ô à�?‰?Ð"ä%Ø× Ñ ×/Ñ/°Ñ=¸iÑHÈÑQØ ñç‘%“'Ù:ô	 Ðð /¨qÑ1°!Ñ4ˆDŒOð �O‰O˜Vð
à×Ñð
ð ð
ˆð �d—j‘jÑ Ø#×*Ñ*×6Ñ6×=Ñ=¸d¿j¹jÐPVÐ=ÓWÐWà#×/Ñ/×6Ñ6Ø×(Ñ(°ð 7ó ð øôK ò 	ÜðBóð ð	ús   ‚F ÆF)ÚreturnzDict[str, str])r‹   r"   )r‹   r$   )rC   r   r‹   r   )rC   r   r‹   r   )r‹   r   )r‹   r   )NN)
r^   r   r%   úOptional[List[str]]rP   ú"Optional[CallbackManagerForLLMRun]r_   r   r‹   r   )
r^   r   r%   rŒ   rP   r�   r_   r   r‹   zIterator[GenerationChunk])r^   r   r_   r   r‹   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   Údictr   r   r   r!   r#   rA   r%   r   Úmodel_configÚpropertyr/   Úclassmethodr4   r9   r   rG   r   rI   rL   rN   re   rS   rU   r+   r0   r.   r   r      s•  … ñð. ƒJÙ#(¸ÀWÔ#M€L�.ÓMØ)-Ð˜Ó-Ø $€J�Ó$Ù T°4Ô8€K�Ó8ðð
 €IˆtÓØ(á¨DÔ1€Dˆ)Ó1Ø7áØØô€Lð
 ò>ó ð>ð òó ðð ò2ó ð2ñ ˜(Ô#Øòó ó $ðð, òó ðð ò
ó ð
ð òó ðð %)Ø:>ð	àðð "ðð 8ð	ð
 ðð 
óðH %)Ø:>ð	 àð ð "ð ð 8ð	 ð
 ð ð 
#ó ôD*r0   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Ž   r?   r   r+   r0   r.   Ú<module>r¢      sL   ðÝ "ã ß E× Eå =Ý 3Ý 2ß ?Ý 4ß 7Ñ 7áÝ/à	ˆ×	Ñ	˜8Ó	$€ôU�õ Ur0   