§
    æ˜ºh^  ã                   ó0  — d dl Z d dlmZmZmZmZmZmZmZ d dl	Z	d dl
mZ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 d	Z G d
„ de¦  «        Zdee         dee         fd„Zde	j        dee         fd„Zdedee         fd„Zdedee         fd„Z dS )é    N)ÚAnyÚAsyncIteratorÚDictÚIteratorÚListÚMappingÚOptional)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚLLM)ÚGenerationChunk)ÚExtraÚroot_validator©Úget_from_dict_or_env)ÚRequestszgoogle/flan-t5-xlc                   óX  — e Zd ZU dZeZeed<   dZe	e
         ed<   dZe	e         ed<    G d„ d¦  «        Z e¦   «         de
d	e
fd
„¦   «         Zed	eeef         fd„¦   «         Zed	efd„¦   «         Zd	efd„Zd	e
fd„Zdeded	e
fd„Zdeded	dfd„Z	 	 ddede	ee                  de	e         ded	ef
d„Z	 	 ddede	ee                  de	e         ded	ef
d„Z	 	 ddede	ee                  de	e         ded	ee         f
d„Z 	 	 ddede	ee                  de	e         ded	e!e         f
d„Z"dS )Ú	DeepInfraaæ  DeepInfra models.

    To use, you should have the environment variable ``DEEPINFRA_API_TOKEN``
    set with your API token, or pass it as a named parameter to the
    constructor.

    Only supports `text-generation` and `text2text-generation` for now.

    Example:
        .. code-block:: python

            from langchain_community.llms import DeepInfra
            di = DeepInfra(model_id="google/flan-t5-xl",
                                deepinfra_api_token="my-api-key")
    Úmodel_idNÚmodel_kwargsÚdeepinfra_api_tokenc                   ó    — e Zd ZdZej        ZdS )úDeepInfra.Configz'Configuration for this pydantic object.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚforbidÚextra© ó    új/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/llms/deepinfra.pyÚConfigr   )   s   € € € € € Ø5Ð5à”ˆˆˆr!   r#   ÚvaluesÚreturnc                 ó2   — t          |dd¦  «        }||d<   |S )z?Validate that api key and python package exists in environment.r   ÚDEEPINFRA_API_TOKENr   )Úclsr$   r   s      r"   Úvalidate_environmentzDeepInfra.validate_environment.   s/   € õ 3ØÐ)Ð+@ñ
ô 
Ðð )<ˆÐ$Ñ%Øˆr!   c                 ó*   — i d| j         i¥d| j        i¥S )zGet the identifying parameters.r   r   )r   r   ©Úselfs    r"   Ú_identifying_paramszDeepInfra._identifying_params7   s+   € ð
Ø˜4œ=Ð)ð
à˜tÔ0Ð1ð
ð 	
r!   c                 ó   — dS )zReturn type of llm.Ú	deepinfrar    r+   s    r"   Ú	_llm_typezDeepInfra._llm_type?   s	   € ð ˆ{r!   c                 ó   — d| j         › �S )Nz'https://api.deepinfra.com/v1/inference/)r   r+   s    r"   Ú_urlzDeepInfra._urlD   s   € ØH¸¼ÐHÐHÐHr!   c                 ó   — d| j         › �ddœS )Nzbearer zapplication/json)ÚAuthorizationzContent-Type)r   r+   s    r"   Ú_headerszDeepInfra._headersG   s"   € àA tÔ'?ÐAÐAØ.ð
ð 
ð 	
r!   ÚpromptÚkwargsc                 ó,   — | j         pi }i |¥|¥}d|i|¥S )NÚinput)r   )r,   r6   r7   r   s       r"   Ú_bodyzDeepInfra._bodyM   s7   € ØÔ(Ð.¨BˆØ1˜,Ð1¨&Ð1ˆð �Vð
àð
ð 	
r!   ÚcodeÚtextc                 óœ   — |dk    rt          d|› �¦  «        ‚|dk    rt          d|› �¦  «        ‚|dk    rt          d|› d|› �¦  «        ‚d S )Niô  zDeepInfra Server: Error i�  z'DeepInfra received an invalid payload: éÈ   z6DeepInfra returned an unexpected response with status z: )Ú	ExceptionÚ
ValueError)r,   r;   r<   s      r"   Ú_handle_statuszDeepInfra._handle_statusV   sƒ   € Ø�3Š;ˆ;ÝÐ=°tÐ=Ð=Ñ>Ô>Ð>Ø�SŠ[ˆ[ÝÐMÀtÐMÐMÑNÔNÐNØ�SŠ[ˆ[Ýð"Øð"ð "Øð"ð "ñô ð ð ˆ[r!   ÚstopÚrun_managerc                 óP  — t          |                      ¦   «         ¬¦  «        }|                     |                      ¦   «         |                      ||¦  «        ¬¦  «        }|                      |j        |j        ¦  «         |                     ¦   «         }|d         d         d         S )al  Call out to DeepInfra's inference API endpoint.

        Args:
            prompt: The prompt to pass into the model.
            stop: Optional list of stop words to use when generating.

        Returns:
            The string generated by the model.

        Example:
            .. code-block:: python

                response = di("Tell me a joke.")
        ©Úheaders©ÚurlÚdataÚresultsr   Úgenerated_text)	r   r5   Úpostr2   r:   rA   Ústatus_coder<   Újson©r,   r6   rB   rC   r7   ÚrequestÚresponserI   s           r"   Ú_callzDeepInfra._calla   s„   € õ,  4§=¢=¡?¤?Ð3Ñ3Ô3ˆØ—<’< D§I¢I¡K¤K°d·j²jÀÈÑ6PÔ6P�<ÑQÔQˆà×Ò˜HÔ0°(´-Ñ@Ô@Ð@Ø�}Š}‰Œˆà�IŒ˜qÔ!Ð"2Ô3Ð3r!   c              ‹   óº  K  — t          |                      ¦   «         ¬¦  «        }|                     |                      ¦   «         |                      ||¦  «        ¬¦  «        4 ƒd {V —†	 }|                      |j        |j        ¦  «         |                     ¦   «         ƒ d {V —†}|d         d         d         cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S )NrE   rG   rJ   r   rK   )	r   r5   Úapostr2   r:   rA   Ústatusr<   rN   rO   s           r"   Ú_acallzDeepInfra._acall   s`  è è € õ  4§=¢=¡?¤?Ð3Ñ3Ô3ˆØ—=’=Ø—	’	‘” $§*¢*¨V°VÑ"<Ô"<ð !ñ 
ô 
ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8àØ×Ò ¤°´Ñ?Ô?Ð?Ø!Ÿš™œÐ(Ð(Ð(Ð(Ð(Ð(ˆDØ˜	”? 1Ô%Ð&6Ô7ð	8ð 	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð 	8ð 	8s   Á)AC
Ã

CÃCc           	   +   ó¾  K  — t          |                      ¦   «         ¬¦  «        }|                     |                      ¦   «         |                      |i |¥ddi¥¦  «        ¬¦  «        }|                      |j        |j        ¦  «         t          | 	                    ¦   «         ¦  «        D ]3}t          |¦  «        }|r |V — |r|                     |j        ¦  «         Œ4d S ©NrE   ÚstreamTrG   )r   r5   rL   r2   r:   rA   rM   r<   Ú_parse_streamÚ
iter_linesÚ_handle_sse_lineÚon_llm_new_token©	r,   r6   rB   rC   r7   rP   rQ   ÚlineÚchunks	            r"   Ú_streamzDeepInfra._streamŽ   sê   è è € õ  4§=¢=¡?¤?Ð3Ñ3Ô3ˆØ—<’<Ø—	’	‘” $§*¢*¨VÐ5O¸Ð5OÀÈ$Ð5OÐ5OÑ"PÔ"Pð  ñ 
ô 
ˆð 	×Ò˜HÔ0°(´-Ñ@Ô@Ð@Ý! (×"5Ò"5Ñ"7Ô"7Ñ8Ô8ð 	=ð 	=ˆDÝ$ TÑ*Ô*ˆEØð =Ø���Øð =Ø×0Ò0°´Ñ<Ô<Ð<øð	=ð 	=r!   c           	     ó  K  — t          |                      ¦   «         ¬¦  «        }|                     |                      ¦   «         |                      |i |¥ddi¥¦  «        ¬¦  «        4 ƒd {V —†	 }|                      |j        |j        ¦  «         t          |j	        ¦  «        2 3 d {V —†}t          |¦  «        }|r'|W V — |r |                     |j        ¦  «        ƒ d {V —† Œ@6 	 d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S rX   )r   r5   rT   r2   r:   rA   rU   r<   Ú_parse_stream_asyncÚcontentr\   r]   r^   s	            r"   Ú_astreamzDeepInfra._astream¢   sû  è è € õ  4§=¢=¡?¤?Ð3Ñ3Ô3ˆØ—=’=Ø—	’	‘” $§*¢*¨VÐ5O¸Ð5OÀÈ$Ð5OÐ5OÑ"PÔ"Pð !ñ 
ô 
ð 		Gð 		Gð 		Gð 		Gð 		Gð 		Gð 		Gð 		GàØ×Ò ¤°´Ñ?Ô?Ð?Ý1°(Ô2BÑCÔCð Gð Gð Gð Gð Gð Gð G�dÝ(¨Ñ.Ô.�Øð GØ�K�K�K�KØ"ð GØ)×:Ò:¸5¼:ÑFÔFÐFÐFÐFÐFÐFÐFÐFøð DÐCð			Gð 		Gð 		Gñ 		Gô 		Gð 		Gð 		Gð 		Gð 		Gð 		Gð 		Gð 		Gð 		Gð 		Gð 		Gð 		Gð 		Gð 		Gð 		Gð 		Gð 		Gð 		Gð 		Gð 		Gøøøð 		Gð 		Gð 		Gð 		Gð 		Gð 		Gs   Á/5C9Â$C$Â*;C9Ã9
DÄD)NN)#r   r   r   r   ÚDEFAULT_MODEL_IDr   ÚstrÚ__annotations__r   r	   r   r   r#   r   r)   Úpropertyr   r   r-   r0   r2   r5   r:   ÚintrA   r   r   rR   r
   rV   r   r   ra   r   re   r    r!   r"   r   r      s5  € € € € € € ðð ð  %€HˆcÐ$Ð$Ñ$Ø#'€L�(˜4”.Ð'Ð'Ñ'à)-Ð˜ #œÐ-Ð-Ñ-ðð ð ð ð ñ ô ð ð
 €^ÑÔð¨$ð °4ð ð ð ñ Ôðð ð
 W¨S°#¨XÔ%6ð 
ð 
ð 
ñ „Xð
ð ð˜3ð ð ð ñ „XððI�cð Ið Ið Ið Ið
˜$ð 
ð 
ð 
ð 
ð
˜Cð 
¨ð 
°ð 
ð 
ð 
ð 
ð	 3ð 	¨cð 	°dð 	ð 	ð 	ð 	ð %)Ø:>ð	4ð 4àð4ð �t˜C”yÔ!ð4ð Ð6Ô7ð	4ð
 ð4ð 
ð4ð 4ð 4ð 4ðB %)Ø?Cð	8ð 8àð8ð �t˜C”yÔ!ð8ð Ð;Ô<ð	8ð
 ð8ð 
ð8ð 8ð 8ð 8ð$ %)Ø:>ð	=ð =àð=ð �t˜C”yÔ!ð=ð Ð6Ô7ð	=ð
 ð=ð 
�/Ô	"ð=ð =ð =ð =ð. %)Ø?Cð	Gð GàðGð �t˜C”yÔ!ðGð Ð;Ô<ð	Gð
 ðGð 
�Ô	'ðGð Gð Gð Gð Gð Gr!   r   Úrbodyr%   c              #   ó>   K  — | D ]}t          |¦  «        }|�|V — Œd S ©N©Ú_parse_stream_helper©rk   r_   Ú_lines      r"   rZ   rZ   ¶   s<   è è € Øð ð ˆÝ$ TÑ*Ô*ˆØÐØˆKˆKˆKøðð r!   c                óL   K  — | 2 3 d {V —†}t          |¦  «        }|�|W V — Œ6 d S rm   rn   rp   s      r"   rc   rc   ½   sV   è è € Øð ð ð ð ð ð ð ˆdÝ$ TÑ*Ô*ˆØÐØˆKˆKˆKˆKøð �e�es   …#r_   c                 ó  — | rˆ|                       d¦  «        rs|                       d¦  «        r| t          d¦  «        d …         } n| t          d¦  «        d …         } |                      ¦   «         dk    rd S |                      d¦  «        S d S )Ns   data:s   data: s   [DONE]zutf-8)Ú
startswithÚlenÚstripÚdecode)r_   s    r"   ro   ro   Ä   sŽ   € Øð (�—’ Ñ)Ô)ð (Ø�?Š?˜9Ñ%Ô%ð 	)à�˜I™œÐ(Ð(Ô)ˆDˆDà�˜H™œ˜˜Ô(ˆDØ�:Š:‰<Œ<˜9Ò$Ð$ð �4à—;’;˜wÑ'Ô'Ð'Øˆ4r!   c                 ó¼   — 	 t          j        | ¦  «        }t          |                     di ¦  «                             d¦  «        ¬¦  «        S # t          $ r Y d S w xY w)NÚtokenr<   )r<   )rN   Úloadsr   Úgetr?   )r_   Úobjs     r"   r\   r\   Ô   sp   € ðÝŒj˜ÑÔˆÝØ—’˜ "Ñ%Ô%×)Ò)¨&Ñ1Ô1ð
ñ 
ô 
ð 	
øõ ð ð ð Øˆtˆtðøøøs   ‚A
A Á
AÁA)!rN   Útypingr   r   r   r   r   r   r	   ÚaiohttpÚlangchain_core.callbacksr
   r   Ú#langchain_core.language_models.llmsr   Úlangchain_core.outputsr   Úlangchain_core.pydantic_v1r   r   Úlangchain_core.utilsr   Ú&langchain_community.utilities.requestsr   rf   r   Úbytesrg   rZ   ÚStreamReaderrc   ro   r\   r    r!   r"   ú<module>r‡      sÃ  ðØ €€€Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ Nà €€€ðð ð ð ð ð ð ð ð 4Ð 3Ð 3Ð 3Ð 3Ð 3Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5à ;Ð ;Ð ;Ð ;Ð ;Ð ;à&Ð ð`Gð `Gð `Gð `Gð `G�ñ `Gô `Gð `GðF˜ %œð ¨X°c¬]ð ð ð ð ð WÔ%9ð ¸mÈCÔ>Pð ð ð ð ð˜uð ¨°#¬ð ð ð ð ð ˜3ð  8¨OÔ#<ð ð ð ð ð ð r!   