Ë
    µŒjÿ<  ã                   óP  — d dl Z d dlZd dlmZmZmZmZmZmZm	Z	m
Z
mZ d dlmZmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZm Z m!Z! d dl"m#Z#m$Z$m%Z%  G d„ d	e%«      Z& G d
„ de%«      Z' G d„ de'«      Z( G d„ de(«      Z) G d„ dee#«      Z*dee+ef   de
e   defd„Z,y)é    N)	ÚAnyÚAsyncIteratorÚDictÚIteratorÚListÚMappingÚOptionalÚTypeÚcast)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚBaseChatModel)Ú	AIMessageÚAIMessageChunkÚBaseMessageÚBaseMessageChunkÚChatMessageÚChatMessageChunkÚFunctionMessageChunkÚHumanMessageÚHumanMessageChunkÚSystemMessageÚSystemMessageChunkÚToolMessageChunk)ÚChatGenerationÚChatGenerationChunkÚ
ChatResult)ÚAzureMLBaseEndpointÚAzureMLEndpointApiTypeÚContentFormatterBasec                   ó   — e Zd ZdZdd„Zy)ÚLlamaContentFormatterzContent formatter for `LLaMA`.Nc                 ó   — t        d«      ‚)Nzb`LlamaContentFormatter` is deprecated for chat models. Use `CustomOpenAIContentFormatter` instead.)Ú	TypeError©Úselfs    úz/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/chat_models/azureml_endpoint.pyÚ__init__zLlamaContentFormatter.__init__.   s   € Üð6ó
ð 	
ó    ©ÚreturnN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   © r)   r'   r"   r"   +   s
   „ Ù(ô
r)   r"   c                   óª   — e Zd ZU dZg d¢Zee   ed<   ede	de
fd„«       Zedee   fd„«       Zdee	   d	e
d
edefd„Zej"                  fded
edefd„Zy)Ú CustomOpenAIChatContentFormatterz>Chat Content formatter for models with OpenAI like API scheme.)ÚuserÚ	assistantÚsystemÚSUPPORTED_ROLESÚmessager+   c                 óB  — t        t        | j                  «      }t        | t        «      rdt        j                  |«      dœS t        | t        «      rdt        j                  |«      dœS t        | t        «      rdt        j                  |«      dœS t        | t        «      r>| j                  t        j                  v r"| j                  t        j                  |«      dœS dj                  t        j                  D �cg c]  }|‘Œ c}«      }t        d|› �«      ‚c c}w )z0Converts a message to a dict according to a roler3   )ÚroleÚcontentr4   r5   Ú,z\Received unsupported role. 
                Supported roles for the LLaMa Foundation Model: )r   Ústrr:   Ú
isinstancer   r    Úescape_special_charactersr   r   r   r9   r2   r6   ÚjoinÚ
ValueError)r7   r:   r9   Ú	supporteds       r'   Ú_convert_message_to_dictz9CustomOpenAIChatContentFormatter._convert_message_to_dict:   s  € ô ”s˜GŸO™OÓ,ˆÜ�gœ|Ô,àÜ/×IÑIÈ'ÓRñð ô ˜¤Ô+à#Ü/×IÑIÈ'ÓRñð ô ˜¤Ô/à Ü/×IÑIÈ'ÓRñð ô
 �w¤Ô,Ø—‘Ô @× PÑ PÑPð  Ÿ™Ü/×IÑIÈ'ÓRñð ð
 Ÿ™Ü"B×"RÒ"RÓSÑ"R˜$’Ð"RÑSóˆIô ðAØAJÀðOóð ùò Ts   Ã>	Dc                 óB   — t         j                  t         j                  gS )N)r   Ú	dedicatedÚ
serverlessr%   s    r'   Úsupported_api_typesz4CustomOpenAIChatContentFormatter.supported_api_types^   s   € ä&×0Ñ0Ô2H×2SÑ2SÐTÐTr)   ÚmessagesÚmodel_kwargsÚapi_typec                 ól  — |D �cg c]  }t         j                  |«      ‘Œ }}|t        j                  t        j                  fv rt        j                  d||dœi«      }n<|t        j                  k(  rt        j                  d|i|¥«      }nt        d|› d�«      ‚t        j                  |«      S c c}w )ú/Formats the request according to the chosen apiÚ
input_data©Úinput_stringÚ
parametersrG   ú`api_type` ú# is not supported by this formatter)r2   rB   r   rD   ÚrealtimeÚjsonÚdumpsrE   r@   r<   Úencode©r&   rG   rH   rI   r7   Úchat_messagesÚrequest_payloads          r'   Úformat_messages_request_payloadz@CustomOpenAIChatContentFormatter.format_messages_request_payloadb   sÌ   € ñ $ó
á#�ô -×EÑEÀgÕNØ#ð 	ð 
ð Ü"×,Ñ,Ü"×+Ñ+ð
ñ 
ô #Ÿj™jà Ø(5Ø&2ñ#ðó‰Oð Ô/×:Ñ:Ò:Ü"Ÿj™j¨*°mÐ)TÀ|Ð)TÓU‰OäØ˜h˜ZÐ'JÐKóð ô �z‰z˜/Ó*Ð*ùò-
s   …B1Úoutputc           	      óŠ  — |t         j                  t         j                  fv r>	 t        j                  |«      d   }t        t        |j                  «       ¬«      d¬«      S |t         j                  k(  r¾	 t        j                  |«      d   d   }t        |t         «      st        d«      ‚	 t        |d	   d
   dk(  r t        |d	   d   j                  «       ¬«      n&t#        |d	   d   j                  «       |d	   d
   ¬«      t!        |j%                  d«      |j%                  d«      ¬«      ¬«      S t        d|› d�«      ‚# t
        t        t        f$ r+}t        | j                  j                  |¬«      «      |‚d}~ww xY w# t
        t        t        f$ r+}t        | j                  j                  |¬«      «      |‚d}~ww xY w)zFormats responserZ   )rI   N©r:   ©r7   Úgeneration_infoÚchoicesr   ziEndpoint response is not well formed for a chat model. Expected `dict` but `{type(choice)}` was received.r7   r9   r4   r:   )r:   ÚtypeÚfinish_reasonÚlogprobs)ra   rb   rP   rQ   )r   rD   rR   rS   ÚloadsÚKeyErrorÚ
IndexErrorr$   r@   Úformat_error_msgÚformatr   r   ÚstriprE   r=   Údictr   Úget)r&   rZ   rI   ÚchoiceÚes        r'   Úformat_response_payloadz8CustomOpenAIChatContentFormatter.format_response_payload�   sÍ  € ð Ü"×,Ñ,Ü"×+Ñ+ð
ñ 
ðYÜŸ™ FÓ+¨HÑ5�ô "Ü!Ø"ŸL™L›Nôð !%ô	ð ð Ô-×8Ñ8Ò8ðYÜŸ™ FÓ+¨IÑ6°qÑ9�Ü! &¬$Ô/Ü#ðTóð ð 0ô "à˜)Ñ$ VÑ,°Ò;ô "¨&°Ñ*;¸IÑ*F×*LÑ*LÓ*NÕOä Ø" 9Ñ-¨iÑ8×>Ñ>Ó@Ø 	Ñ*¨6Ñ2ôô !%Ø"(§*¡*¨_Ó"=Ø#ŸZ™Z¨
Ó3ô!ôð ô ˜; x jÐ0SÐTÓUÐUøô= œj¬)Ð4ò YÜ  ×!6Ñ!6×!=Ñ!=ÀxÐ!=Ó!PÓQÐWXÐXûðYûô  œj¬)Ð4ò YÜ  ×!6Ñ!6×!=Ñ!=ÀxÐ!=Ó!PÓQÐWXÐXûðYús/   ¤E Á56F ÅF Å&E;Å;F ÆGÆ&F=Æ=GN)r,   r-   r.   r/   r6   r   r<   Ú__annotations__Ústaticmethodr   r   rB   Úpropertyr   rF   ÚbytesrY   rD   r   rm   r0   r)   r'   r2   r2   5   sº   … ÙHâ!@€O�T˜#‘YÓ@àð!¨+ð !¸$ò !ó ð!ðF ðU TÐ*@Ñ%Aò Uó ðUð+à�{Ñ#ð+ð ð+ð )ð	+ð
 
ó+ðD ,B×+KÑ+Kñ*Vàð*Vð )ð*Vð 
ô	*Vr)   r2   c                   ó$   ‡ — e Zd ZdZdˆ fd„Zˆ xZS )ÚLlamaChatContentFormatterzSDeprecated: Kept for backwards compatibility

    Chat Content formatter for Llama.c                 óL   •— t         ‰| �  «        t        j                  d«       y )Nz”`LlamaChatContentFormatter` will be deprecated in the future. 
                Please use `CustomOpenAIChatContentFormatter` instead.  
            )Úsuperr(   ÚwarningsÚwarn)r&   Ú	__class__s    €r'   r(   z"LlamaChatContentFormatter.__init__³   s   ø€ Ü‰ÑÔÜ�‰ðõ	
r)   r*   )r,   r-   r.   r/   r(   Ú__classcell__)rx   s   @r'   rs   rs   ®   s   ø„ ñ)÷
ñ 
r)   rs   c                   ó.   — e Zd ZdZdee   dededefd„Z	y)ÚMistralChatContentFormatterz Content formatter for `Mistral`.rG   rH   rI   r+   c                 óš  — |D �cg c]  }| j                  |«      ‘Œ }}|r(|d   d   dk(  r|d   d   dz   |d   d   z   |d   d<   |d= |t        j                  k(  rt        j                  d||dœi«      }n<|t        j
                  k(  rt        j                  d	|i|¥«      }nt        d
|› d�«      ‚t        j                  |«      S c c}w )rK   r   r9   r5   r:   z

é   rL   rM   rG   rP   rQ   )	rB   r   rR   rS   rT   rE   r@   r<   rU   rV   s          r'   rY   z;MistralChatContentFormatter.format_messages_request_payload¿   sÿ   € ñ PXÓXÉxÀG˜×6Ñ6°wÕ?ÈxˆÐXá˜]¨1Ñ-¨fÑ5¸ÒAð ˜aÑ  Ñ+¨fÑ4°}ÀQÑ7GÈ	Ñ7RÑRð ˜!Ñ˜YÑ'ð ˜aÐ àÔ-×6Ñ6Ò6Ü"Ÿj™jà Ø(5Ø&2ñ#ðó‰Oð Ô/×:Ñ:Ò:Ü"Ÿj™j¨*°mÐ)TÀ|Ð)TÓU‰OäØ˜h˜ZÐ'JÐKóð ô �z‰z˜/Ó*Ð*ùò3 Ys   …CN)
r,   r-   r.   r/   r   r   r   r   rq   rY   r0   r)   r'   r{   r{   ¼   s5   „ Ù*ð +à�{Ñ#ð +ð ð +ð )ð	 +ð
 
ô +r)   r{   c                   ó   — e Zd ZdZedeeef   fd„«       Zedefd„«       Z		 	 dde
e   dee
e      dee   d	edef
d
„Z	 	 dde
e   dee
e      dee   d	edee   f
d„Z	 	 dde
e   dee
e      dee   d	edee   f
d„Zy)ÚAzureMLChatOnlineEndpointa«  Azure ML Online Endpoint chat models.

    Example:
        .. code-block:: python
            azure_llm = AzureMLOnlineEndpoint(
                endpoint_url="https://<your-endpoint>.<your_region>.inference.ml.azure.com/v1/chat/completions",
                endpoint_api_type=AzureMLApiType.serverless,
                endpoint_api_key="my-api-key",
                content_formatter=chat_content_formatter,
            )
    r+   c                 ó.   — | j                   xs i }i d|i¥S )zGet the identifying parameters.rH   )rH   )r&   Ú_model_kwargss     r'   Ú_identifying_paramsz-AzureMLChatOnlineEndpoint._identifying_paramsï   s+   € ð ×)Ñ)Ò/¨Rˆð
Ø˜}Ð-ð
ð 	
r)   c                  ó   — y)zReturn type of llm.Úazureml_chat_endpointr0   r%   s    r'   Ú	_llm_typez#AzureMLChatOnlineEndpoint._llm_type÷   s   € ð 'r)   NrG   ÚstopÚrun_managerÚkwargsc                 ó@  — | j                   xs i }|j                  |«       |r||d<   | j                  j                  ||| j                  «      }| j
                  j                  ||¬«      }| j                  j                  || j                  «      }t        |g¬«      S )a�  Call out to an AzureML Managed Online endpoint.
        Args:
            messages: The messages in the conversation with the chat model.
            stop: Optional list of stop words to use when generating.
        Returns:
            The string generated by the model.
        Example:
            .. code-block:: python
                response = azureml_model.invoke("Tell me a joke.")
        r†   )Úbodyr‡   )Úgenerations)	rH   ÚupdateÚcontent_formatterrY   Úendpoint_api_typeÚhttp_clientÚcallrm   r   )	r&   rG   r†   r‡   rˆ   r�   rX   Úresponse_payloadr‹   s	            r'   Ú	_generatez#AzureMLChatOnlineEndpoint._generateü   s§   € ð" ×)Ñ)Ò/¨RˆØ×Ñ˜VÔ$ÙØ$(ˆM˜&Ñ!à×0Ñ0×PÑPØ�m T×%;Ñ%;ó
ˆð  ×+Ñ+×0Ñ0Ø ¨kð 1ó 
Ðð ×,Ñ,×DÑDØ˜d×4Ñ4ó
ˆô  { mÔ4Ð4r)   c              +   ó&  K  — | j                   j                  dd«      | _         d|vrd n|d   }dd l}i }| j                  j	                  «       | j                   |d d d dœ} |j
                  di |¤Ž}	|D �
cg c]  }
t        j                  |
«      ‘Œ }}
d|d dœ|¥}t        } |	j                  j                  j                  dd|i|¤ŽD ]¾  }t        |t        «      s|j                  «       }t        |d	   «      dk(  rŒ5|d	   d   }t        |d
   |«      }i }|j!                  d«      x}r||d<   |j!                  d«      }|r||d<   |j"                  }t%        ||xs d ¬«      }|r|j'                  |j(                  ||¬«       |–— ŒÀ y c c}
w ­w)Nú/chat/completionsÚ Útimeoutr   ©Úapi_keyÚbase_urlr–   Údefault_headersÚdefault_queryr�   T©Ústreamr†   ÚmodelrG   r_   Údeltara   rb   r]   )Úchunkrb   r0   )Úendpoint_urlÚreplaceÚopenaiÚendpoint_api_keyÚget_secret_valueÚOpenAIr2   rB   r   ÚchatÚcompletionsÚcreater=   ri   ÚlenÚ_convert_delta_to_message_chunkrj   rx   r   Úon_llm_new_tokenÚtext)r&   rG   r†   r‡   rˆ   r–   r£   ÚparamsÚclient_paramsÚclientÚmÚmessage_dictsÚdefault_chunk_classr    rk   r^   ra   rb   s                     r'   Ú_streamz!AzureMLChatOnlineEndpoint._stream  sÆ  è ø€ ð !×-Ñ-×5Ñ5Ð6IÈ2ÓNˆÔØ#¨6Ñ1‘$°v¸iÑ7Hˆãàˆà×,Ñ,×=Ñ=Ó?Ø×)Ñ)ØØ#Ø!Øñ
ˆð �—‘Ñ/ Ñ/ˆñ ó
á�ô -×EÑEÀaÕHØð 	ð 
ð !¨$¸ÑHÀÐHˆä6DÐØ3�V—[‘[×,Ñ,×3Ñ3ÑU¸]ÐUÈfÔUˆEÜ˜e¤TÔ*ØŸ
™
›�Ü�5˜Ñ#Ó$¨Ò)ØØ˜9Ñ% aÑ(ˆFÜ3Ø�w‘Ø#óˆEð !ˆOØ &§
¡
¨?Ó ;Ð;ˆ}Ð;Ø3@� Ñ0Ø—z‘z *Ó-ˆHÙØ.6� 
Ñ+Ø"'§/¡/ÐÜ'ØØ /Ò 7°4ôˆEñ Ø×,Ñ,¨U¯Z©Z¸uÈxÐ,ÔXØ‹Kñ/ Vùò
ùs   ‚A4FÁ6FÂC?Fc                ó`  K  — | j                   j                  dd«      | _         d|vrd n|d   }dd l}i }| j                  j	                  «       | j                   |d d d dœ} |j
                  di |¤Ž}	|D �
cg c]  }
t        j                  |
«      ‘Œ }}
d|d dœ|¥}t        } |	j                  j                  j                  dd|i|¤Žƒ d {  –—† 2 3 d {  –—† }t        |t        «      s|j                  «       }t        |d	   «      dk(  rŒ;|d	   d   }t        |d
   |«      }i }|j!                  d«      x}r||d<   |j!                  d«      }|r||d<   |j"                  }t%        ||xs d ¬«      }|r&|j'                  |j(                  ||¬«      ƒ d {  –—†  |­–— ŒÏc c}
w 7 ŒØ7 ŒÑ7 Œ6 y ­w)Nr”   r•   r–   r   r—   Trœ   rG   r_   rŸ   ra   rb   r]   )Útokenr    rb   r0   )r¡   r¢   r£   r¤   r¥   ÚAsyncOpenAIr2   rB   r   r§   r¨   r©   r=   ri   rª   r«   rj   rx   r   r¬   r­   )r&   rG   r†   r‡   rˆ   r–   r£   r®   r¯   Úasync_clientr±   r²   r³   r    rk   r^   ra   rb   s                     r'   Ú_astreamz"AzureMLChatOnlineEndpoint._astreamT  s  è ø€ ð !×-Ñ-×5Ñ5Ð6IÈ2ÓNˆÔØ#¨6Ñ1‘$°v¸iÑ7Hˆãàˆà×,Ñ,×=Ñ=Ó?Ø×)Ñ)ØØ#Ø!Øñ
ˆð *�v×)Ñ)Ñ:¨MÑ:ˆñ ó
á�ô -×EÑEÀaÕHØð 	ð 
ð !¨$¸ÑHÀÐHˆä6DÐØ!E ×!2Ñ!2×!>Ñ!>×!EÑ!Eñ "
Ø"ð"
àñ"
÷ 
ð 
÷ 	�%ô ˜e¤TÔ*ØŸ
™
›�Ü�5˜Ñ#Ó$¨Ò)ØØ˜9Ñ% aÑ(ˆFÜ3Ø�w‘Ð!4óˆEð !ˆOØ &§
¡
¨?Ó ;Ð;ˆ}Ð;Ø3@� Ñ0Ø—z‘z *Ó-ˆHÙØ.6� 
Ñ+Ø"'§/¡/ÐÜ'Ø¨Ò/FÀ$ôˆEñ Ø!×2Ñ2ØŸ*™*¨E¸Hð 3ó ÷ ð ð ŒKùòC
ð
øð 	øð.øñ/
ùsU   ‚A4F.Á6F!Â;F.ÃF&ÃF.ÃF,ÃF(ÃF,ÃB<F.ÆF*ÆF.Æ(F,Æ*F.Æ,F.)NN)r,   r-   r.   r/   rp   r   r<   r   r‚   r…   r   r   r	   r   r   r’   r   r   r´   r   r   r¹   r0   r)   r'   r   r   â   sF  „ ñ
ð ð
 T¨#¨s¨(¡^ò 
ó ð
ð ð'˜3ò 'ó ð'ð %)Ø:>ñ	5à�{Ñ#ð5ð �t˜C‘yÑ!ð5ð Ð6Ñ7ð	5ð
 ð5ð 
ó5ðH %)Ø:>ñ	5à�{Ñ#ð5ð �t˜C‘yÑ!ð5ð Ð6Ñ7ð	5ð
 ð5ð 
Ð%Ñ	&ó5ðt %)Ø?Cñ	8à�{Ñ#ð8ð �t˜C‘yÑ!ð8ð Ð;Ñ<ð	8ð
 ð8ð 
Ð*Ñ	+ô8r)   r   Ú_dictÚdefault_classr+   c                 óx  — t        t        | j                  d«      «      }t        t        | j                  d«      xs d«      }i }| j                  d«      r!t        | d   «      }d|v r
|d   €d|d<   ||d<   | j                  d«      r| d   |d<   |dk(  s	|t        k(  rt	        |¬«      S |d	k(  s	|t
        k(  rt        ||¬
«      S |dk(  s	|t        k(  rt        |¬«      S |dk(  s	|t        k(  rt        || d   ¬«      S |dk(  s	|t        k(  rt        || d   ¬«      S |s	|t        k(  rt        ||¬«      S  ||¬«      S )Nr9   r:   r•   Úfunction_callÚnameÚ
tool_callsr3   r\   r4   )r:   Úadditional_kwargsr5   Úfunction)r:   r¾   ÚtoolÚtool_call_id)r:   rÃ   )r:   r9   )
r   r<   rj   ri   r   r   r   r   r   r   )rº   r»   r9   r:   rÀ   r½   s         r'   r«   r«   �  sN  € ô ”�U—Y‘Y˜vÓ&Ó'€DÜ”3˜Ÿ	™	 )Ó,Ò2°Ó3€GØ ÐØ‡y�y�Ô!Ü˜U ?Ñ3Ó4ˆØ�]Ñ" }°VÑ'<Ð'DØ$&ˆM˜&Ñ!Ø-:Ð˜/Ñ*Ø‡y�y�ÔØ*/°Ñ*=Ð˜,Ñ'àˆv‚~˜Ô*;Ò;Ü ¨Ô1Ð1Ø	�Ò	 ´Ò ?Ü gÐARÔSÐSØ	�Ò	˜]Ô.@Ò@Ü!¨'Ô2Ð2Ø	�Ò	˜}Ô0DÒDÜ#¨G¸%À¹-ÔHÐHØ	�Š˜=Ô,<Ò<Ü¨¸eÀNÑ>SÔTÐTÙ	�Ô"2Ò2Ü¨°dÔ;Ð;á WÔ-Ð-r)   )-rS   rv   Útypingr   r   r   r   r   r   r	   r
   r   Úlangchain_core.callbacksr   r   Ú*langchain_core.language_models.chat_modelsr   Úlangchain_core.messagesr   r   r   r   r   r   r   r   r   r   r   r   Úlangchain_core.outputsr   r   r   Ú)langchain_community.llms.azureml_endpointr   r   r    r"   r2   rs   r{   r   r<   r«   r0   r)   r'   Ú<module>rÊ      sÄ   ðÛ Û ÷
÷ 
õ 
÷õ E÷÷ ÷ ó ÷ SÑ R÷ñ ô
Ð0ô 
ôvVÐ';ô vVôr
Ð @ô 
ô#+Ð";ô #+ôLj Ð/Bô jðZ.Ø�3˜�8Ñð.Ø-1Ð2BÑ-Cð.àô.r)   