Ë
    µŒj   ã                   ó  — 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 y)é    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                   óÖ  — 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$y)Ú	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                 ó*   — t        |dd«      }||d<   |S )z?Validate that api key and python package exists in environment.r   ÚDEEPINFRA_API_TOKEN)r   )Úclsr   r   s      úl/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/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   s0   € ð
Ø˜4Ÿ=™=Ð)ð
à˜t×0Ñ0Ð1ð
ð 	
r    c                  ó   — y)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   € Ø8¸¿¹¸ÐHÐHr    c                 ó&   — d| j                   › �ddœS )Nzbearer zapplication/json)ÚAuthorizationzContent-Type)r   r"   s    r   Ú_headerszDeepInfra._headersF   s    € à& t×'?Ñ'?Ð&@ÐAØ.ñ
ð 	
r    ÚpromptÚkwargsc                 ó:   — | j                   xs i }i |¥|¥}d|i|¥S )NÚinput)r   )r#   r.   r/   r   s       r   Ú_bodyzDeepInfra._bodyL   s:   € Ø×(Ñ(Ò.¨BˆØ1˜,Ð1¨&Ð1ˆð �Vð
àð
ð 	
r    ÚcodeÚtextc                 ó  — |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k7  rt        d|› d|› �«      ‚y )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Š;ÜÐ6°t°fÐ=Ó>Ð>Ø�SŠ[ÜÐ<Ó=Ð=Ø�SŠ[ÜÐ<Ó=Ð=Ø�SŠ[ÜÐ@ÀÇÁÀÐPÓQÐQØ�SŠ[ÜÐCÓDÐDØ�SŠ[ÜÐFÀtÀfÐMÓNÐNØ�SŠ[ÜØHÈÈÈbÐQUÐPVÐWóð ð r    ÚstopÚrun_managerc                 ó  — t        | j                  «       ¬«      }|j                  | j                  «       | j	                  ||«      ¬«      }| j                  |j                  |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   sq   € ô,  4§=¡=£?Ô3ˆØ—<‘< D§I¡I£K°d·j±jÀÈÓ6P�<ÓQˆà×Ñ˜H×0Ñ0°(·-±-Ô@Ø�}‰}‹ˆà�I‰˜qÑ!Ð"2Ñ3Ð3r    c              ‹   óœ  K  — t        | j                  «       ¬«      }|j                  | j                  «       | j	                  ||«      ¬«      4 ƒd {  –—† }| j                  |j                  |j                  «       |j                  «       ƒ d {  –—† }|d   d   d   cd d d «      ƒd {  –—†  S 7 Œ^7 Œ"7 Œ	# 1 ƒd {  –—†7  sw Y   y xY w­w)Nr=   r?   rB   r   rC   )	r   r-   Úapostr*   r2   r9   Ústatusr4   rF   rG   s           r   Ú_acallzDeepInfra._acall…   sª   è ø€ ô  4§=¡=£?Ô3ˆØ—=‘=Ø—	‘	“ $§*¡*¨V°VÓ"<ð !÷ 
ô 
àØ×Ñ §¡°·±Ô?Ø!Ÿ™›×(ˆDØ˜	‘? 1Ñ%Ð&6Ñ7÷
÷ 
ò 
øð )øð	
ø÷ 
÷ 
ñ 
üsZ   ‚ACÁB1ÁCÁ:B7ÂB3ÂB7ÂCÂ+B5Â,CÂ3B7Â5CÂ7C	Â=C Â>C	ÃCc           	   +   óÎ  K  — t        | j                  «       ¬«      }|j                  | j                  «       | j	                  |i |¥ddi¥«      ¬«      }|j
                  }| j                  |«       | j                  |j                  |j
                  «       t        |j                  «       «      D ]1  }t        |«      }	|	sŒ|r|j                  |	j
                  «       |	–— Œ3 y ­w©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ˆØ—<‘<Ø—	‘	“ $§*¡*¨VÐ5O¸Ð5OÀÈ$Ñ5OÓ"Pð  ó 
ˆð !Ÿ™ˆØ× Ñ  Ô/Ø×Ñ˜H×0Ñ0°(·-±-Ô@Ü! (×"5Ñ"5Ó"7Ö8ˆDÜ$ TÓ*ˆEÚÙØ×0Ñ0°·±Ô<Ø“ñ 9ùs   ‚B>C%Ã$C%c           	     ój  K  — t        | j                  «       ¬«      }|j                  | j                  «       | j	                  |i |¥ddi¥«      ¬«      4 ƒd {  –—† }|j                  «       ƒ d {  –—† }| j                  |«       | j                  |j                  |j
                  «       t        |j                  «      2 3 d {  –—† }t        |«      }	|	sŒ|r#|j                  |	j
                  «      ƒ d {  –—†  |	­–— ŒB7 Œª7 Œ”7 ŒA7 Œ6 d d d «      ƒd {  –—†7   y # 1 ƒd {  –—†7  sw Y   y xY w­wrP   )r   r-   rL   r*   r2   r4   rR   r9   rM   Ú_parse_stream_asyncÚcontentrU   rV   rW   s
             r   Ú_astreamzDeepInfra._astream©   s  è ø€ ô  4§=¡=£?Ô3ˆØ—=‘=Ø—	‘	“ $§*¡*¨VÐ5O¸Ð5OÀÈ$Ñ5OÓ"Pð !÷ 
ô 
àØ"*§-¡-£/×1ˆMØ×$Ñ$ ]Ô3Ø×Ñ §¡°·±Ô?Ü1°(×2BÑ2BÔC÷  �dÜ(¨Ó.�ÚÙ"Ø)×:Ñ:¸5¿:¹:ÓF×FÐFØ”Kð
øð 2øð øð Gøð	 D÷
÷ 
÷ 
÷ 
ó 
üs—   ‚AD3ÁDÁD3ÁDÁ0DÁ1ADÃDÃDÃDÃ	DÃ DÃ8D	Ã9
DÄD3ÄDÄDÄ	DÄDÄD3ÄDÄD3ÄD0Ä$D'Ä%D0Ä,D3Úbodyc                 ó   — d|v rU	 |j                  d«      r|t        d«      d }t        j                  |«      }|j	                  dd«      }t        d|› �«      ‚y# t        j                  $ r t        d|› �«      ‚w xY w)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Ô+Ø¤ G£ Ð/�DÜ!ŸZ™Z¨Ó-�
Ø *§¡¨ÀÓ P�äÐ":¸=¸/Ð JÓKÐKð øô ×'Ñ'ò =ÜÐ"4°T°FÐ ;Ó<Ð<ð=ús   †AA Á"A=)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      s:  … ñð  %€HˆcÓ$Ø#'€L�(˜4‘.Ó'à)-Ð˜ #™Ó-áØô€Lð ð¨$ð °4ò ó ðð ð
 W¨S°#¨XÑ%6ò 
ó ð
ð ð˜3ò ó ððI�có Ið
˜$ó 
ð
˜Cð 
¨ð 
°ó 
ð 3ð ¨cð °dó ð* %)Ø:>ñ	4àð4ð �t˜C‘yÑ!ð4ð Ð6Ñ7ð	4ð
 ð4ð 
ó4ðB %)Ø?Cñ	8àð8ð �t˜C‘yÑ!ð8ð Ð;Ñ<ð	8ð
 ð8ð 
ó8ð$ %)Ø:>ñ	àðð �t˜C‘yÑ!ðð Ð6Ñ7ð	ð
 ðð 
�/Ñ	"óð0 %)Ø?Cñ	 àð ð �t˜C‘yÑ!ð ð Ð;Ñ<ð	 ð
 ð ð 
�Ñ	'ó ð*=¨ð =°ô =r    r   Úrbodyr   c              #   ó>   K  — | D ]  }t        |«      }|€Œ|–— Œ y ­w©N©Ú_parse_stream_helper©rt   rY   Ú_lines      r   rS   rS   Ñ   s%   è ø€ ÛˆÜ$ TÓ*ˆØÑØ‹Kñ ùs   ‚–c                óP   K  — | 2 3 d {  –—† }t        |«      }|€Œ|­–— Œ7 Œ6 y ­wrv   rw   ry   s      r   r]   r]   Ø   s-   è ø€ Ù÷ ˆdÜ$ TÓ*ˆØÑØŒKðø‘eùs    ‚&…$‰"Š$�&œ&¢$¤&rY   c                 óÐ   — | rd| j                  d«      rS| j                  d«      r| t        d«      d  } n| t        d«      d  } | j                  «       dk(  ry | j                  d«      S y )Ns   data:s   data: s   [DONE]zutf-8)rd   re   ÚstripÚdecode)rY   s    r   rx   rx   ß   sb   € Ù�—‘ Ô)Ø�?‰?˜9Ô%àœ˜I›Ð(Ð)‰Dàœ˜H›˜Ð(ˆDØ�:‰:‹<˜9Ò$ð à—;‘;˜wÓ'Ð'Ør    c                 ó¢   — 	 t        j                  | «      }t        |j                  di «      j                  d«      ¬«      S # t        $ r Y y w xY w)NÚtokenr4   )r4   )rF   rf   r   rg   r7   )rY   Úobjs     r   rU   rU   ï   sO   € ðÜ�j‰j˜ÓˆÜØ—‘˜ "Ó%×)Ñ)¨&Ó1ô
ð 	
øô ò Ùðús   ‚?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ã ÷õ 4Ý 2ß ?Ý å ;à9Ð ô{=�ô {=ð|˜ %™ð ¨X°c©]ó ð W×%9Ñ%9ð ¸mÈCÑ>Pó ð˜uð ¨°#©ó ð ˜3ð  8¨OÑ#<ô r    