§
    æ˜ºhX  ã                  óÊ   — 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mZ d dl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)ÚExtraÚFieldÚroot_validator©Úget_from_dict_or_env)Ú
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<   	  G d„ d¦  «        Zed.d„¦   «         Zed/d„¦   «         Zed0d„¦   «         Z ed¬¦  «        d1d„¦   «         Z e¦   «         d2d!„¦   «         Zed3d"„¦   «         Zed4d#„¦   «         Z	 	 d5d6d)„Z	 	 d5d7d+„Zd8d-„ZdS )9Ú	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]Ústopc                  ó$   — e Zd ZdZdZej        ZdS )úReplicate.Configz'Configuration for this pydantic config.TN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úallow_population_by_field_namer   ÚforbidÚextra© ó    új/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/llms/replicate.pyÚConfigr&   :   s!   € € € € € Ø5Ð5à)-Ð&Ø”ˆˆˆr/   r1   ÚreturnúDict[str, str]c                ó
   — ddiS )Nr   ÚREPLICATE_API_TOKENr.   ©Úselfs    r0   Ú
lc_secretszReplicate.lc_secrets@   s   € à%Ð'<Ð=Ð=r/   c                ó   — dS )NTr.   ©Úclss    r0   Úis_lc_serializablezReplicate.is_lc_serializableD   s   € àˆtr/   c                ó
   — g d¢S )z*Get the namespace of the langchain object.)Ú	langchainÚllmsÚ	replicater.   r:   s    r0   Úget_lc_namespacezReplicate.get_lc_namespaceH   s   € ð 2Ð1Ð1Ð1r/   )ÚpreÚvaluesc                ó¸  — d„ | j                              ¦   «         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 | ]	}|j         ’Œ
S r.   )r   )Ú.0Úfields     r0   ú	<setcomp>z(Replicate.build_extra.<locals>.<setcomp>P   s   € Ð#UÐ#UÐ#U°E E¤KÐ#UÐ#UÐ#Ur/   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.)Ú
__fields__rC   ÚpopÚloggerÚwarningÚlistÚ
ValueError)r;   rC   Úall_required_field_namesr   r-   Ú
field_names         r0   Úbuild_extrazReplicate.build_extraM   s"  € ð $VÐ#U¸S¼^×=RÒ=RÑ=TÔ=TÐ#UÑ#UÔ#UÐ à—
’
˜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Ñ!øØ!&ˆˆ~ÑØˆr/   r   c                ó2   — t          |dd¦  «        }||d<   |S )z?Validate that api key and python package exists in environment.r   r5   r   )r;   rC   r   s      r0   Úvalidate_environmentzReplicate.validate_environmentd   s/   € õ 3ØÐ)Ð+@ñ
ô 
Ðð )<ˆÐ$Ñ%Øˆr/   c                ó    — | j         | j        dœS )zGet the identifying parameters.©r   r   rU   r6   s    r0   Ú_identifying_paramszReplicate._identifying_paramsm   s   € ð ”ZØ Ô-ð
ð 
ð 	
r/   c                ó   — dS )zReturn type of model.r@   r.   r6   s    r0   Ú	_llm_typezReplicate._llm_typeu   s	   € ð ˆ{r/   Ú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$   r[   ÚfailedÚ )r"   Ú_streamÚtextÚ_create_predictionÚwaitÚstatusÚRuntimeErrorÚerrorÚ
isinstanceÚoutputr   Újoinr$   Úfind)
r7   rY   r$   r[   r]   Ú
completionÚchunkÚ
predictionÚstop_conditionsÚss
             r0   Ú_callzReplicate._callz   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ˆˆØ'Ð(<¨*¯/ª/¸!Ñ*<Ô*<Ð(<Ô=�
øØÐr/   úIterator[GenerationChunk]c              +  ó†  K  —  | j         |fi |¤Ž}|p| j        }d}d}|                     ¦   «         D ]Ž}	||	z  }|D ]M}
|
|v rG|                     ¦   «          d}t	          |	                     |
¦  «        d¦  «        }|	d |…         }	|	s nŒN|	r0t          |	¬¦  «        V — |r|                     |	| j        ¬¦  «         |r d S Œ�d S )NFr`   Tr   )rb   )Úverbose)	rc   r$   Úoutput_iteratorÚcancelÚmaxrk   r   Úon_llm_new_tokenrt   )r7   rY   r$   r[   r]   rn   ro   Ústop_condition_reachedÚcurrent_completionri   rp   Ú
stop_indexs               r0   ra   zReplicate._stream›   s6  è è € ð -�TÔ,¨VÐ>Ð>°vÐ>Ð>ˆ
ØÐ+ $¤)ˆØ!&ÐØ"$ÐØ ×0Ò0Ñ2Ô2ð 	ð 	ˆFØ &Ñ(Ðà$ð 	ð 	�ØÐ*Ð*Ð*Ø×%Ò%Ñ'Ô'Ð'Ø-1Ð*õ "% V§[¢[°¡^¤^°QÑ!7Ô!7�JØ# K Z KÔ0�FØ!ð Ø˜øØð Ý%¨6Ð2Ñ2Ô2Ð2Ð2Ð2Øð Ø×0Ò0ØØ $¤ð 1ñ ô ð ð &ð Ø��ðð)	ð 	r/   r   c                ó(  — 	 dd l }n# t          $ r t          d¦  «        ‚w xY w| j        €V| j                             d¦  «        \  }}|j                             |¦  «        }|j                             |¦  «        | _        | j        €Yt          | j        j
        d         d         d         d                              ¦   «         d„ ¬	¦  «        }|d         d         | _        | j        |i| j        ¥|¥}|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¸Ñ!:Ô!:€ r/   )Úkey)Úversionr   )r@   ÚImportErrorr    r   ÚsplitÚmodelsr„   Úversionsr   ÚsortedÚopenapi_schemaÚitemsr   ÚpredictionsÚcreate)	r7   rY   r]   Úreplicate_pythonÚ	model_strÚversion_strr   Úinput_propertiesÚinput_s	            r0   rc   zReplicate._create_prediction½   sJ  € ð	Ø0Ð0Ð0Ð0Ð0øÝð 	ð 	ð 	ÝðBñô ð ð	øøøð ÔÐ#Ø%)¤Z×%5Ò%5°cÑ%:Ô%:Ñ"ˆI�{Ø$Ô+×/Ò/°	Ñ:Ô:ˆEØ$œ~×1Ò1°+Ñ>Ô>ˆDÔàŒ?Ð"å%ØÔ Ô/°Ô=¸iÔHÈÔQØ ôç’%‘'”'Ø:Ð:ð	 ñ  ô  Ðð /¨qÔ1°!Ô4ˆDŒOð ŒO˜Vð
àÔð
ð ð
ˆð
  Ô+×2Ò2ØÔ$¨Fð 3ñ 
ô 
ð 	
s   ‚ ‡!)r2   r3   )r2   r!   )r2   r#   )rC   r   r2   r   )rC   r   r2   r   )r2   r   )r2   r   )NN)
rY   r   r$   rZ   r[   r\   r]   r   r2   r   )
rY   r   r$   rZ   r[   r\   r]   r   r2   rr   )rY   r   r]   r   r2   r   )r'   r(   r)   r*   Ú__annotations__r   Údictr   r   r   r    r"   rM   r$   r1   Úpropertyr8   Úclassmethodr<   rA   r   rQ   rS   rV   rX   rq   ra   rc   r.   r/   r0   r   r      sA  € € € € € € ðð ð. €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ðð ð ð ð ñ ô ð ð ð>ð >ð >ñ „Xð>ð ðð ð ñ „[ðð ð2ð 2ð 2ñ „[ð2ð €^˜ÐÑÔðð ð ñ Ôðð, €^ÑÔðð ð ñ Ôðð ð
ð 
ð 
ñ „Xð
ð ðð ð ñ „Xðð %)Ø:>ð	ð ð ð ð ðH %)Ø:>ð	 ð  ð  ð  ð  ðD!
ð !
ð !
ð !
ð !
ð !
r/   r   )Ú
__future__r   ÚloggingÚtypingr   r   r   r   r   r	   Úlangchain_core.callbacksr
   Ú#langchain_core.language_models.llmsr   Úlangchain_core.outputsr   Úlangchain_core.pydantic_v1r   r   r   Úlangchain_core.utilsr   Úreplicate.predictionr   Ú	getLoggerr'   rK   r   r.   r/   r0   ú<module>r¥      s   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø 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Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ 5Ð 5Ð 5Ð 5Ð 5Ð 5àð 0Ø/Ð/Ð/Ð/Ð/Ð/à	ˆÔ	˜8Ñ	$Ô	$€ðL
ð L
ð L
ð L
ð L
�ñ L
ô L
ð L
ð L
ð L
r/   