§
    šŠtj   ã                   ó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)Úget_from_dict_or_envÚpre_init)Ú
ConfigDict)ÚRequestsz$meta-llama/Meta-Llama-3-70B-Instructc                   óV  — e Zd ZU dZeZeed<   dZe	e
         ed<   dZe	e         ed<    e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ed	d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_tokenÚforbid)ÚextraÚvaluesÚreturnc                 ó2   — t          |dd¦  «        }||d<   |S )z?Validate that api key and python package exists in environment.r   ÚDEEPINFRA_API_TOKEN)r   )Úclsr   r   s      ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/deepinfra.pyÚvalidate_environmentzDeepInfra.validate_environment-   s/   € õ 3ØÐ)Ð+@ñ
ô 
Ðð )<ˆÐ$Ñ%Øˆó    c                 ó*   — i d| j         i¥d| j        i¥S )zGet the identifying parameters.r   r   )r   r   ©Úselfs    r   Ú_identifying_paramszDeepInfra._identifying_params6   s+   € ð
Ø˜4œ=Ð)ð
à˜tÔ0Ð1ð
ð 	
r    c                 ó   — dS )zReturn type of llm.Ú	deepinfra© 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._urlC   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._headersF   s"   € àA tÔ'?ÐAÐAØ.ð
ð 
ð 	
r    ÚpromptÚkwargsc                 ó,   — | j         pi }i |¥|¥}d|i|¥S )NÚinput)r   )r#   r.   r/   r   s       r   Ú_bodyzDeepInfra._bodyL   s7   € ØÔ(Ð.¨BˆØ1˜,Ð1¨&Ð1ˆð �Vð
àð
ð 	
r    ÚcodeÚtextc                 óT  — |dk    rt          d|› �¦  «        ‚|dk    rt          d¦  «        ‚|dk    rt          d¦  «        ‚|dk    rt          d| j        › �¦  «        ‚|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 Server: Unauthorizedi“  i”  z"DeepInfra Server: Model not found i­  z%DeepInfra Server: Rate limit exceededi�  z'DeepInfra received an invalid payload: éÈ   z6DeepInfra returned an unexpected response with status z: )Ú	Exceptionr   Ú
ValueError)r#   r3   r4   s      r   Ú_handle_statuszDeepInfra._handle_statusU   sâ   € Ø�3Š;ˆ;ÝÐ=°tÐ=Ð=Ñ>Ô>Ð>Ø�SŠ[ˆ[ÝÐ<Ñ=Ô=Ð=Ø�SŠ[ˆ[ÝÐ<Ñ=Ô=Ð=Ø�SŠ[ˆ[ÝÐPÀÄÐPÐPÑQÔQÐQØ�SŠ[ˆ[ÝÐCÑDÔDÐDØ�SŠ[ˆ[ÝÐMÀtÐMÐMÑNÔNÐNØ�SŠ[ˆ[ÝØWÈÐWÐWÐQUÐWÐWñô ð ð ˆ[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   r-   Úpostr*   r2   r9   Ústatus_coder4   Újson©r#   r.   r:   r;   r/   ÚrequestÚresponserA   s           r   Ú_callzDeepInfra._callg   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 )Nr=   r?   rB   r   rC   )	r   r-   Úapostr*   r2   r9   Ústatusr4   rF   rG   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        |j        ¦  «         t          | 
                    ¦   «         ¦  «        D ]3}t          |¦  «        }	|	r |r|                     |	j        ¦  «         |	V — Œ4d S ©Nr=   ÚstreamTr?   )r   r-   rD   r*   r2   r4   Ú_handle_body_errorsr9   rE   Ú_parse_streamÚ
iter_linesÚ_handle_sse_lineÚon_llm_new_token©
r#   r.   r:   r;   r/   rH   rI   Úresponse_textÚ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           	     óv  K  — t          |                      ¦   «         ¬¦  «        }|                     |                      ¦   «         |                      |i |¥ddi¥¦  «        ¬¦  «        4 ƒd {V —†	 }|                     ¦   «         ƒ d {V —†}|                      |¦  «         |                      |j        |j        ¦  «         t          |j
        ¦  «        2 3 d {V —†}t          |¦  «        }	|	r'|r |                     |	j        ¦  «        ƒ d {V —† |	W V — Œ@6 	 d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S rP   )r   r-   rL   r*   r2   r4   rR   r9   rM   Ú_parse_stream_asyncÚcontentrU   rV   rW   s
             r   Ú_astreamzDeepInfra._astream©   s   è è € õ  4§=¢=¡?¤?Ð3Ñ3Ô3ˆØ—=’=Ø—	’	‘” $§*¢*¨VÐ5O¸Ð5OÀÈ$Ð5OÐ5OÑ"PÔ"Pð !ñ 
ô 
ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 àØ"*§-¢-¡/¤/Ð1Ð1Ð1Ð1Ð1Ð1ˆMØ×$Ò$ ]Ñ3Ô3Ð3Ø×Ò ¤°´Ñ?Ô?Ð?Ý1°(Ô2BÑCÔCð  ð  ð  ð  ð  ð  ð  �dÝ(¨Ñ.Ô.�Øð  Ø"ð GØ)×:Ò:¸5¼:ÑFÔFÐFÐFÐFÐFÐFÐFÐFØ�K�K�K�Køð DÐCð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s   Á/A$D(ÃDÃ;D(Ä(
D2Ä5D2Úbodyc                 ó*  — d|v rŽ	 |                      d¦  «        r|t          d¦  «        d…         }t          j        |¦  «        }|                     dd¦  «        }t          d|› �¦  «        ‚# t          j        $ r t          d|› �¦  «        ‚w xY wdS )z‹
        Example error response:
        data: {"error_type": "validation_error",
        "error_message": "ConnectionError: ..."}
        Úerrorzdata:NÚerror_messagezUnknown errorzDeepInfra Server Error: zDeepInfra Server: )Ú
startswithÚlenrF   ÚloadsÚgetr7   ÚJSONDecodeError)r#   r`   Ú
error_datarc   s       r   rR   zDeepInfra._handle_body_errors¾   s¯   € ð �dˆ?ˆ?ð	=à—?’? 7Ñ+Ô+ð 0Ø¥ G¡¤  Ô/�DÝ!œZ¨Ñ-Ô-�
Ø *§¢¨ÀÑ PÔ P�åÐ J¸=Ð JÐ JÑKÔKÐKøÝÔ'ð =ð =ð =ÝÐ ;°TÐ ;Ð ;Ñ<Ô<Ð<ð=øøøð ˆ?s   †A(A. Á."B)NN)%Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚDEFAULT_MODEL_IDr   ÚstrÚ__annotations__r   r	   r   r   r   Úmodel_configr   r   Úpropertyr   r   r$   r(   r*   r-   r2   Úintr9   r   r   rJ   r
   rN   r   r   r[   r   r_   rR   r'   r    r   r   r      s3  € € € € € € ðð ð  %€HˆcÐ$Ð$Ñ$Ø#'€L�(˜4”.Ð'Ð'Ñ'à)-Ð˜ #œÐ-Ð-Ñ-à�:Øðñ ô €Lð ð¨$ð °4ð ð ð ñ „Xðð ð
 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ð	ð
 ðð 
�/Ô	"ðð ð ð ð0 %)Ø?Cð	 ð  àð ð �t˜C”yÔ!ð ð Ð;Ô<ð	 ð
 ð ð 
�Ô	'ð ð  ð  ð  ð*=¨ð =°ð =ð =ð =ð =ð =ð =r    r   Úrbodyr   c              #   ó>   K  — | D ]}t          |¦  «        }|�|V — Œd S ©N©Ú_parse_stream_helper©rt   rY   Ú_lines      r   rS   rS   Ñ   s<   è è € Øð ð ˆÝ$ TÑ*Ô*ˆØÐØˆKˆKˆKøðð r    c                óL   K  — | 2 3 d {V —†}t          |¦  «        }|�|W V — Œ6 d S rv   rw   ry   s      r   r]   r]   Ø   sV   è è € Øð ð ð ð ð ð ð ˆdÝ$ TÑ*Ô*ˆØÐØˆKˆKˆKˆKøð �e�es   …#rY   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)rd   re   ÚstripÚdecode)rY   s    r   rx   rx   ß   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Útokenr4   )r4   )rF   rf   r   rg   r7   )rY   Úobjs     r   rU   rU   ï   sp   € ðÝŒj˜ÑÔˆÝØ—’˜ "Ñ%Ô%×)Ò)¨&Ñ1Ô1ð
ñ 
ô 
ð 	
øõ ð ð ð Øˆtˆtðøøøs   ‚A
A Á
AÁA)!rF   Útypingr   r   r   r   r   r   r	   ÚaiohttpÚlangchain_core.callbacksr
   r   Ú#langchain_core.language_models.llmsr   Úlangchain_core.outputsr   Úlangchain_core.utilsr   r   Úpydanticr   Ú&langchain_community.utilities.requestsr   rn   r   Úbytesro   rS   ÚStreamReaderr]   rx   rU   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Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø Ð Ð Ð Ð Ð à ;Ð ;Ð ;Ð ;Ð ;Ð ;à9Ð ð{=ð {=ð {=ð {=ð {=�ñ {=ô {=ð {=ð|˜ %œð ¨X°c¬]ð ð ð ð ð WÔ%9ð ¸mÈCÔ>Pð ð ð ð ð˜uð ¨°#¬ð ð ð ð ð ˜3ð  8¨OÔ#<ð ð ð ð ð ð r    