§
    šŠtjfP  ã                   óð  — d dl Z d dlZd dlZd dlmZ d dlmZ d dl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 d d	lmZmZ d d
lmZmZmZmZmZm Z  dZ! G d„ de"¦  «        Z# G d„ de$e¦  «        Z% G d„ d¦  «        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&¦  «        Z+ G d„ de+¦  «        Z, G d„ de¦  «        Z- G d „ d!ee-¦  «        Z.dS )"é    N)Úabstractmethod)ÚEnum)ÚAnyÚDictÚListÚMappingÚOptional)Úurlparse)ÚCallbackManagerForLLMRun)ÚBaseLLM)Ú
GenerationÚ	LLMResult)Úconvert_to_secret_strÚget_from_dict_or_env)Ú	BaseModelÚ
ConfigDictÚ	SecretStrÚfield_validatorÚmodel_validatorÚ	validatoré2   c                   ó\   — e Zd ZdZdefdededededdf
d	„Z	 dd
ede	e
         dedefd„ZdS )ÚAzureMLEndpointClientz AzureML Managed Endpoint client.Ú Úendpoint_urlÚendpoint_api_keyÚdeployment_nameÚtimeoutÚreturnNc                 ód   — |r|st          d¦  «        ‚|| _        || _        || _        || _        dS )zInitialize the class.zWA key/token and REST endpoint should
                be provided to invoke the endpointN)Ú
ValueErrorr   r   r   r   )Úselfr   r   r   r   s        úg/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/azureml_endpoint.pyÚ__init__zAzureMLEndpointClient.__init__   sO   € ð  ð 	 |ð 	Ýð6ñô ð ð )ˆÔØ 0ˆÔØ.ˆÔØˆŒˆˆó    ÚbodyÚrun_managerÚkwargsc                 ó2  — dd| j         z   dœ}| j        dk    r
| j        |d<   t          j                             | j        ||¦  «        }t          j                             ||                     d| j        ¦  «        ¬¦  «        }| 	                    ¦   «         }|S )zcall.úapplication/jsonzBearer )zContent-TypeÚAuthorizationr   zazureml-model-deploymentr   )r   )
r   r   ÚurllibÚrequestÚRequestr   ÚurlopenÚgetr   Úread)r"   r&   r'   r(   ÚheadersÚreqÚresponseÚresults           r#   ÚcallzAzureMLEndpointClient.call.   s�   € ð /Ø'¨$Ô*?Ñ?ð
ð 
ˆð Ô 2Ò%Ð%Ø26Ô2FˆGÐ.Ñ/åŒn×$Ò$ TÔ%6¸¸gÑFÔFˆÝ”>×)Ò)Ø˜Ÿš I¨t¬|Ñ<Ô<ð *ñ 
ô 
ˆð —’‘”ˆØˆr%   ©N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚDEFAULT_TIMEOUTÚstrÚintr$   Úbytesr	   r   r   r6   © r%   r#   r   r      sµ   € € € € € Ø*Ð*ð  "Ø&ðð àðð ðð ð	ð
 ðð 
ðð ð ð ð* ;?ðð àðð Ð6Ô7ðð ð	ð
 
ðð ð ð ð ð r%   r   c                   ó   — e Zd ZdZdZdZdZdS )ÚAzureMLEndpointApiTypezýAzure ML endpoints API types. Use `dedicated` for models deployed in hosted
    infrastructure (also known as Online Endpoints in Azure Machine Learning),
    or `serverless` for models deployed as a service with a
    pay-as-you-go billing or PTU.
    Ú	dedicatedÚrealtimeÚ
serverlessN)r8   r9   r:   r;   rC   rD   rE   r@   r%   r#   rB   rB   H   s)   € € € € € ðð ð €IØ€HØ€J€J€Jr%   rB   c            	       óü   — e Zd ZU dZ	 dZee         ed<   	 dZee         ed<   	 dZ	eed<   e
dedefd	„¦   «         Zedee         fd
„¦   «         Zej        fdedededefd„Zeej        fdededefd„¦   «         ZdS )ÚContentFormatterBasezZTransform request and response of AzureML endpoint to match with
    required schema.
    r*   Úcontent_typeÚacceptszšError while formatting response payload for chat model of type  `{api_type}`. Are you using the right formatter for the deployed  model and endpoint type?Úformat_error_msgÚpromptr   c                 óz   — ddddddddœ}|                      ¦   «         D ]\  }}|                      ||¦  «        } Œ| S )	z*Escapes any special characters in `prompt`z\\z\"z\bz\fz\nz\rz\t)ú\ú"úúú
úú	)ÚitemsÚreplace)rK   Ú
escape_mapÚescape_sequenceÚescaped_sequences       r#   Úescape_special_charactersz.ContentFormatterBase.escape_special_characters�   se   € ð ØØØØØØð
ð 
ˆ
ð 2<×1AÒ1AÑ1CÔ1Cð 	Gð 	GÑ-ˆOÐ-Ø—^’^ OÐ5EÑFÔFˆFˆFàˆr%   c                 ó   — t           j        gS )z«Supported APIs for the given formatter. Azure ML supports
        deploying models using different hosting methods. Each method may have
        a different API structure.©rB   rC   ©r"   s    r#   Úsupported_api_typesz(ContentFormatterBase.supported_api_types”   s   € õ 'Ô0Ð1Ð1r%   Úmodel_kwargsÚapi_typec                 ó   — t          ¦   «         ‚)zÄFormats the request body according to the input schema of
        the model. Returns bytes or seekable file like object in the
        format specified in the content_type request header.
        )ÚNotImplementedError)r"   rK   r^   r_   s       r#   Úformat_request_payloadz+ContentFormatterBase.format_request_payloadœ   s   € õ "Ñ#Ô#Ð#r%   Úoutputc                 ó   — dS )z™Formats the response body according to the output
        schema of the model. Returns the data type that is
        received from the response.
        Nr@   )r"   rc   r_   s      r#   Úformat_response_payloadz,ContentFormatterBase.format_response_payload¨   s   € € € r%   N)r8   r9   r:   r;   rH   r	   r=   Ú__annotations__rI   rJ   ÚstaticmethodrY   Úpropertyr   rB   r]   rC   r   r   rb   r   r?   r   re   r@   r%   r#   rG   rG   T   s]  € € € € € € ðð ðð8 #5€L�(˜3”-Ð4Ð4Ñ4Ø@à/€GˆX�cŒ]Ð/Ð/Ñ/ØGð	$ð �cð ð ñ ð ð¨#ð °#ð ð ð ñ „\ðð$ ð2 TÐ*@Ô%Að 2ð 2ð 2ñ „Xð2ð ,BÔ+Kð	
$ð 
$àð
$ð ð
$ð )ð	
$ð
 
ð
$ð 
$ð 
$ð 
$ð ð ,BÔ+Kðð àðð )ðð 
ð	ð ð ñ „^ðð ð r%   rG   c                   óf   — e Zd ZdZedee         fd„¦   «         Zdede	dede
fd„Zde
dedefd	„Zd
S )ÚGPT2ContentFormatterzContent handler for GPT2r   c                 ó   — t           j        gS r7   r[   r\   s    r#   r]   z(GPT2ContentFormatter.supported_api_types·   ó   € å&Ô0Ð1Ð1r%   rK   r^   r_   c                 ó¦   — t                                |¦  «        }t          j        dd|› d�gi|dœ¦  «        }t                               |¦  «        S )NÚinput_stringrN   ©ÚinputsÚ
parameters©rG   rY   ÚjsonÚdumpsr=   Úencode©r"   rK   r^   r_   Úrequest_payloads        r#   rb   z+GPT2ContentFormatter.format_request_payload»   s[   € õ &×?Ò?ÀÑGÔGˆÝœ*à)¨M°¨M¨M¨M¨?Ð;Ø*ðð ñ
ô 
ˆõ �zŠz˜/Ñ*Ô*Ð*r%   rc   c                 óö   — 	 t          j        |¦  «        d         d         }nH# t          t          t          f$ r.}t          | j                             |¬¦  «        ¦  «        |‚d }~ww xY wt          |¬¦  «        S )Nr   Ú0©r_   ©Útext©	rs   ÚloadsÚKeyErrorÚ
IndexErrorÚ	TypeErrorr!   rJ   Úformatr   ©r"   rc   r_   ÚchoiceÚes        r#   re   z,GPT2ContentFormatter.format_response_payloadÇ   sƒ   € ð	UÝ”Z Ñ'Ô'¨Ô*¨3Ô/ˆFˆFøÝ�*¥iÐ0ð 	Uð 	Uð 	UÝ˜TÔ2×9Ò9À8Ð9ÑLÔLÑMÔMÐSTÐTøøøøð	Uøøøå˜vÐ&Ñ&Ô&Ð&s   ‚ # £A(º)A#Á#A(N©r8   r9   r:   r;   rh   r   rB   r]   r=   r   r?   rb   r   re   r@   r%   r#   rj   rj   ´   s¥   € € € € € Ø"Ð"àð2 TÐ*@Ô%Að 2ð 2ð 2ñ „Xð2ð
+Øð
+Ø)-ð
+Ø9Oð
+à	ð
+ð 
+ð 
+ð 
+ð'Øð'Ø'=ð'à	ð'ð 'ð 'ð 'ð 'ð 'r%   rj   c                   ó4   ‡ — e Zd ZU dZdZeed<   dˆ fd„Zˆ xZS )ÚOSSContentFormatterz`Deprecated: Kept for backwards compatibility

    Content handler for LLMs from the OSS catalog.NÚcontent_formatterr   c                 óp   •— t          ¦   «                              ¦   «          t          j        d¦  «         d S )Nz�`OSSContentFormatter` will be deprecated in the future.
                      Please use `GPT2ContentFormatter` instead.
                      ©Úsuperr$   ÚwarningsÚwarn©r"   Ú	__class__s    €r#   r$   zOSSContentFormatter.__init__Ø   s<   ø€ Ý‰Œ×ÒÑÔÐÝŒðñ	
ô 	
ð 	
ð 	
ð 	
r%   ©r   N©	r8   r9   r:   r;   r‰   r   rf   r$   Ú__classcell__©r�   s   @r#   rˆ   rˆ   Ñ   s\   ø€ € € € € € ð6ð 6ð "Ð�sÐ!Ð!Ñ!ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r%   rˆ   c                   óf   — e Zd ZdZedee         fd„¦   «         Zdede	dede
fd„Zde
dedefd	„Zd
S )ÚHFContentFormatterz6Content handler for LLMs from the HuggingFace catalog.r   c                 ó   — t           j        gS r7   r[   r\   s    r#   r]   z&HFContentFormatter.supported_api_typesä   rl   r%   rK   r^   r_   c                 ó¢   — t                                |¦  «         t          j        d|› d�g|dœ¦  «        }t                               |¦  «        S )NrN   ro   rr   rv   s        r#   rb   z)HFContentFormatter.format_request_payloadè   sW   € õ 	×6Ò6°vÑ>Ô>Ð>Ýœ*à(˜v˜=˜=˜=˜/Ø*ðð ñ
ô 
ˆõ �zŠz˜/Ñ*Ô*Ð*r%   rc   c                 ó  — 	 t          j        |¦  «        d         d         d         }nH# t          t          t          f$ r.}t          | j                             |¬¦  «        ¦  «        |‚d }~ww xY wt          |¬¦  «        S )Nr   ry   Úgenerated_textrz   r{   r}   rƒ   s        r#   re   z*HFContentFormatter.format_response_payloadô   s‰   € ð	UÝ”Z Ñ'Ô'¨Ô*¨3Ô/Ð0@ÔAˆFˆFøÝ�*¥iÐ0ð 	Uð 	Uð 	UÝ˜TÔ2×9Ò9À8Ð9ÑLÔLÑMÔMÐSTÐTøøøøð	Uøøøå˜vÐ&Ñ&Ô&Ð&s   ‚&) ©A.Á )A)Á)A.Nr†   r@   r%   r#   r–   r–   á   s¥   € € € € € Ø@Ð@àð2 TÐ*@Ô%Að 2ð 2ð 2ñ „Xð2ð
+Øð
+Ø)-ð
+Ø9Oð
+à	ð
+ð 
+ð 
+ð 
+ð'Øð'Ø'=ð'à	ð'ð 'ð 'ð 'ð 'ð 'r%   r–   c                   óf   — e Zd ZdZedee         fd„¦   «         Zdede	dede
fd„Zde
dedefd	„Zd
S )ÚDollyContentFormatterz*Content handler for the Dolly-v2-12b modelr   c                 ó   — t           j        gS r7   r[   r\   s    r#   r]   z)DollyContentFormatter.supported_api_types  rl   r%   rK   r^   r_   c                 ó¦   — t                                |¦  «        }t          j        dd|› d�gi|dœ¦  «        }t                               |¦  «        S )Nrn   rN   )Ú
input_datarq   rr   rv   s        r#   rb   z,DollyContentFormatter.format_request_payload  s[   € õ &×?Ò?ÀÑGÔGˆÝœ*à-°°F°°°¨Ð?Ø*ðð ñ
ô 
ˆõ �zŠz˜/Ñ*Ô*Ð*r%   rc   c                 óê   — 	 t          j        |¦  «        d         }nH# t          t          t          f$ r.}t          | j                             |¬¦  «        ¦  «        |‚d }~ww xY wt          |¬¦  «        S )Nr   rz   r{   r}   rƒ   s        r#   re   z-DollyContentFormatter.format_response_payload  s~   € ð	UÝ”Z Ñ'Ô'¨Ô*ˆFˆFøÝ�*¥iÐ0ð 	Uð 	Uð 	UÝ˜TÔ2×9Ò9À8Ð9ÑLÔLÑMÔMÐSTÐTøøøøð	Uøøøå˜vÐ&Ñ&Ô&Ð&s   ‚ �A"´)AÁA"Nr†   r@   r%   r#   rœ   rœ   þ   s¥   € € € € € Ø4Ð4àð2 TÐ*@Ô%Að 2ð 2ð 2ñ „Xð2ð
+Øð
+Ø)-ð
+Ø9Oð
+à	ð
+ð 
+ð 
+ð 
+ð'Øð'Ø'=ð'à	ð'ð 'ð 'ð 'ð 'ð 'r%   rœ   c                   óf   — e Zd ZdZedee         fd„¦   «         Zdede	dede
fd„Zde
dedefd	„Zd
S )ÚCustomOpenAIContentFormatterzAContent formatter for models that use the OpenAI like API scheme.r   c                 ó2   — t           j        t           j        gS r7   )rB   rC   rE   r\   s    r#   r]   z0CustomOpenAIContentFormatter.supported_api_types  s   € å&Ô0Õ2HÔ2SÐTÐTr%   rK   r^   r_   c                 óT  — t                                |¦  «        }|t          j        t          j        fv rt          j        dd|› d�g|dœi¦  «        }n<|t          j        k    rt          j        d|i|¥¦  «        }nt          d|› d�¦  «        ‚t           
                    |¦  «        S )z/Formats the request according to the chosen apirŸ   rN   )rn   rq   rK   ú`api_type` ú# is not supported by this formatter)rG   rY   rB   rC   rD   rs   rt   rE   r!   r=   ru   rv   s        r#   rb   z3CustomOpenAIContentFormatter.format_request_payload"  sÌ   € õ &×?Ò?ÀÑGÔGˆØÝ"Ô,Ý"Ô+ð
ð 
ð 
õ #œjà Ø)6¨V¨¨¨¨Ø&2ð#ð #ðñô ˆOˆOð Õ/Ô:Ò:Ð:Ý"œj¨(°FÐ)K¸lÐ)KÑLÔLˆOˆOåØK˜hÐKÐKÐKñô ð õ �zŠz˜/Ñ*Ô*Ð*r%   rc   c           	      óH  — |t           j        t           j        fv rz	 t          j        |¦  «        d         d         }nH# t
          t          t          f$ r.}t          | j	         
                    |¬¦  «        ¦  «        |‚d}~ww xY wt          |¬¦  «        S |t           j        k    rì	 t          j        |¦  «        d         d         }t          |t          ¦  «        st          d¦  «        ‚nH# t
          t          t          f$ r.}t          | j	         
                    |¬¦  «        ¦  «        |‚d}~ww xY wt          |d                              ¦   «         t          |                     d	¦  «        |                     d
¦  «        ¬¦  «        ¬¦  «        S t          d|› d�¦  «        ‚)zFormats responser   ry   rz   Nr{   ÚchoicesziEndpoint response is not well formed for a chat model. Expected `dict` but `{type(choice)}` was received.r|   Úfinish_reasonÚlogprobs)r©   rª   )r|   Úgeneration_infor¥   r¦   )rB   rC   rD   rs   r~   r   r€   r�   r!   rJ   r‚   r   rE   Ú
isinstanceÚdictÚstripr0   rƒ   s        r#   re   z4CustomOpenAIContentFormatter.format_response_payload;  sÆ  € ð Ý"Ô,Ý"Ô+ð
ð 
ð 
ðYÝœ FÑ+Ô+¨AÔ.¨sÔ3��øÝ�j­)Ð4ð Yð Yð YÝ  Ô!6×!=Ò!=ÀxÐ!=Ñ!PÔ!PÑQÔQÐWXÐXøøøøðYøøøå 6Ð*Ñ*Ô*Ð*ØÕ-Ô8Ò8Ð8ð	YÝœ FÑ+Ô+¨IÔ6°qÔ9�Ý! &­$Ñ/Ô/ð Ý#ð$ñô ð ðøõ �j­)Ð4ð Yð Yð YÝ  Ô!6×!=Ò!=ÀxÐ!=Ñ!PÔ!PÑQÔQÐWXÐXøøøøðYøøøåØ˜F”^×)Ò)Ñ+Ô+Ý $Ø"(§*¢*¨_Ñ"=Ô"=Ø#ŸZšZ¨
Ñ3Ô3ð!ñ !ô !ðñ ô ð õ ÐT xÐTÐTÐTÑUÔUÐUs.   œ = ½BÁ)A=Á=BÂ&AC+ Ã+D0Ä)D+Ä+D0Nr†   r@   r%   r#   r¢   r¢     s³   € € € € € ØKÐKàðU TÐ*@Ô%Að Uð Uð Uñ „XðUð+Øð+Ø)-ð+Ø9Oð+à	ð+ð +ð +ð +ð2VØðVØ'=ðVà	ðVð Vð Vð Vð Vð Vr%   r¢   c                   ó4   ‡ — e Zd ZU dZdZeed<   dˆ fd„Zˆ xZS )ÚLlamaContentFormatterzNDeprecated: Kept for backwards compatibility

    Content formatter for Llama.Nr‰   r   c                 óp   •— t          ¦   «                              ¦   «          t          j        d¦  «         d S )Nz‰`LlamaContentFormatter` will be deprecated in the future.
                Please use `CustomOpenAIContentFormatter` instead.
            r‹   r�   s    €r#   r$   zLlamaContentFormatter.__init__d  s<   ø€ Ý‰Œ×ÒÑÔÐÝŒðñ	
ô 	
ð 	
ð 	
ð 	
r%   r‘   r’   r”   s   @r#   r°   r°   ]  s\   ø€ € € € € € ð$ð $ð "Ð�sÐ!Ð!Ñ!ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r%   r°   c                   ó  — e Zd ZU dZdZeed<   	 ej        Z	eed<   	  e
d¦  «        Zeed<   	 dZeed<   	 eZeed<   	 dZeed	<   d
Zeed<   dZeed<   	 dZee         ed<   	  ed¬¦  «        Z ed¬¦  «        ededefd„¦   «         ¦   «         Z ed¦  «        dededefd„¦   «         Z  e!dd¬¦  «        ededefd„¦   «         ¦   «         Z" ed¦  «        dededefd„¦   «         Z# ed	d¬¦  «        dedede$fd„¦   «         Z%dS )ÚAzureMLBaseEndpointz Azure ML Online Endpoint models.r   r   Úendpoint_api_typer   r   r   NÚhttp_clienté   Úmax_retriesr‰   r^   r@   )Úprotected_namespacesÚbefore)ÚmodeÚvaluesr   c                 ó&  — t          t          |dd¦  «        ¦  «        |d<   t          |dd¦  «        |d<   t          |ddd¦  «        |d<   t          |dd	t          j        ¦  «        |d<   t          |d
dt	          t
          ¦  «        ¦  «        |d
<   |S )Nr   ÚAZUREML_ENDPOINT_API_KEYr   ÚAZUREML_ENDPOINT_URLr   ÚAZUREML_DEPLOYMENT_NAMEr   r´   ÚAZUREML_ENDPOINT_API_TYPEr   ÚAZUREML_TIMEOUT)r   r   rB   rC   r=   r<   )Úclsr»   s     r#   Úvalidate_environz$AzureMLBaseEndpoint.validate_environ‘  sÁ   € õ &;Ý  Ð);Ð=WÑXÔXñ&
ô &
ˆÐ!Ñ"õ "6Ø�NÐ$:ñ"
ô "
ˆˆ~Ñõ %9ØÐ%Ð'@À"ñ%
ô %
ˆÐ Ñ!õ ';ØØØ'Ý"Ô,ñ	'
ô '
ˆÐ"Ñ#õ 1ØØØÝ•Ñ Ô ñ	
ô 
ˆˆyÑð ˆr%   Úfield_valuec           	      ó˜   — |                      d¦  «        }||j        vr+t          dt          |¦  «        › d|j        › d|› d�¦  «        ‚|S )z>Validate that content formatter is supported by endpoint type.r´   zContent formatter fz8 is not supported by this endpoint. Supported types are z but endpoint is ú.)r0   r]   r!   Útype)rÂ   rÄ   r»   r´   s       r#   Úvalidate_content_formatterz.AzureMLBaseEndpoint.validate_content_formatter¬  sz   € ð
 #ŸJšJÐ':Ñ;Ô;ÐØ KÔ$CÐCÐCÝð8¥d¨;Ñ&7Ô&7ð 8ð 8Ø1<Ô1Pð8ð 8à#4ð8ð 8ð 8ñô ð ð
 Ðr%   ÚafterÚvaluec                 ó¤   — |                      d¦  «        r
|dd…         }t          |¦  «        }|j        r|j        dk    rt          d¦  «        ‚|S )z'Validate that endpoint url is complete.ú/NéÿÿÿÿzÁ`endpoint_url` should contain the full invocation URL including `/score` for `endpoint_api_type='dedicated'` or `/completions` or `/models/chat/completions` for `endpoint_api_type='serverless'`)Úendswithr
   Úpathr!   )rÂ   rÊ   Úurls      r#   Úvalidate_endpoint_urlz)AzureMLBaseEndpoint.validate_endpoint_urlº  sb   € ð �>Š>˜#ÑÔð 	Ø˜#˜2˜#”JˆEÝ�u‰oŒoˆØŒxð 	˜3œ8 sš?˜?Ýð7ñô ð ð ˆr%   c                 ó  — t          |                     d¦  «        ¦  «        }|t          j        k    s|t          j        k    r|j        dk    st          d¦  «        ‚|t          j        k    r|j        dvrt          d¦  «        ‚|S )zBValidate that endpoint api type is compatible with the URL format.r   z/scorezõEndpoints of type `dedicated` should follow the format `https://<your-endpoint>.<your_region>.inference.ml.azure.com/score`. If your endpoint URL ends with `/completions` or`/models/chat/completions`,use `endpoint_api_type='serverless'` instead.)z/completionsz/models/chat/completionszÜEndpoints of type `serverless` should follow the format `https://<your-endpoint>.<your_region>.inference.ml.azure.com/completions` or `https://<your-endpoint>.<your_region>.inference.ml.azure.com/models/chat/completions`)r
   r0   rB   rC   rD   rÏ   r!   rE   )rÂ   rÄ   r»   r   s       r#   Úvalidate_endpoint_api_typez.AzureMLBaseEndpoint.validate_endpoint_api_typeÊ  s¡   € õ
   §
¢
¨>Ñ :Ô :Ñ;Ô;ˆàÕ1Ô;Ò;Ð;ØÕ4Ô=Ò=Ð=ØÔ# xÒ/Ð/Ýð@ñô ð ð Õ1Ô<Ò<Ð<ØÔ!Ð)UÐUÐUåðmñô ð ð Ðr%   T)Úalwaysc                 ó  — |                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      dt          ¦  «        }t          ||                     ¦   «         ||¦  «        }|S )z?Validate that api key and python package exists in environment.r   r   r   r   )r0   r<   r   Úget_secret_value)rÂ   rÄ   r»   r   Úendpoint_keyr   r   rµ   s           r#   Úvalidate_clientz#AzureMLBaseEndpoint.validate_clientç  s{   € ð —z’z .Ñ1Ô1ˆØ—z’zÐ"4Ñ5Ô5ˆØ Ÿ*š*Ð%6Ñ7Ô7ˆØ—*’*˜Y­Ñ8Ô8ˆå+ØØ×)Ò)Ñ+Ô+ØØñ	
ô 
ˆð Ðr%   )&r8   r9   r:   r;   r   r=   rf   rB   rC   r´   r   r   r   r   r<   r   r>   rµ   r   r·   r‰   r^   r	   r­   r   Úmodel_configr   Úclassmethodr   rÃ   r   rG   rÈ   r   rÑ   rÓ   r   rØ   r@   r%   r#   r³   r³   m  sZ  € € € € € € Ø*Ð*à€L�#ÐÐÑð+ð 1GÔ0PÐÐ-ÐPÐPÑPðCð #8Ð"7¸Ñ";Ô";Ð�iÐ;Ð;Ñ;ð/ð €O�SÐÐÑðMð #€GˆSÐ"Ð"Ñ"Ø3à€K�ÐÐÑà€K�ÐÐÑà!Ð�sÐ!Ð!Ñ!ðð $(€L�(˜4”.Ð'Ð'Ñ'Ø1à�:°2Ð6Ñ6Ô6€Là€_˜(Ð#Ñ#Ô#Øð dð ¨sð ð ð ñ „[ñ $Ô#ðð2 €YÐ"Ñ#Ô#ðØðØ'+ðà	ðð ð ñ $Ô#ðð €_�^¨'Ð2Ñ2Ô2Øð¨#ð °#ð ð ð ñ „[ñ 3Ô2ðð €YÐ"Ñ#Ô#ðØðØ'+ðà	ðð ð ñ $Ô#ðð8 €Yˆ} TÐ*Ñ*Ô*ð¨#ð °tð Ð@Uð ð ð ñ +Ô*ðð ð 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S )ÚAzureMLOnlineEndpointa¯  Azure ML Online Endpoint models.

    Example:
        .. code-block:: python
            azure_llm = AzureMLOnlineEndpoint(
                endpoint_url="https://<your-endpoint>.<your_region>.inference.ml.azure.com/score",
                endpoint_api_type=AzureMLApiType.dedicated,
                endpoint_api_key="my-api-key",
                timeout=120,
                content_formatter=content_formatter,
            )
    r   c                 ó2   — | j         pi }i d| j        i¥d|i¥S )zGet the identifying parameters.r   r^   )r^   r   )r"   Ú_model_kwargss     r#   Ú_identifying_paramsz)AzureMLOnlineEndpoint._identifying_params  s8   € ð Ô)Ð/¨Rˆð
Ø  $Ô"6Ð7ð
à˜}Ð-ð
ð 	
r%   c                 ó   — dS )zReturn type of llm.Úazureml_endpointr@   r\   s    r#   Ú	_llm_typezAzureMLOnlineEndpoint._llm_type  s
   € ð "Ð!r%   NÚpromptsÚstopr'   r(   c                 ó`  — | j         pi }|                     |¦  «         |r||d<   g }|D ]u}| j                             ||| j        ¦  «        }| j                             ||¬¦  «        }	| j                             |	| j        ¦  «        }
|                     |
g¦  «         Œvt          |¬¦  «        S )an  Run the LLM on the given prompts.

        Args:
            prompts: 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 = azureml_model.invoke("Tell me a joke.")
        rä   )r&   r'   )Úgenerations)
r^   Úupdater‰   rb   r´   rµ   r6   re   Úappendr   )r"   rã   rä   r'   r(   rÞ   ræ   rK   rw   Úresponse_payloadrš   s              r#   Ú	_generatezAzureMLOnlineEndpoint._generate  sá   € ð$ Ô)Ð/¨RˆØ×Ò˜VÑ$Ô$Ð$Øð 	)Ø$(ˆM˜&Ñ!Øˆàð 
	1ð 
	1ˆFØ"Ô4×KÒKØ˜ tÔ'=ñô ˆOð  $Ô/×4Ò4Ø$°+ð  5ñ  ô  Ðð "Ô3×KÒKØ  $Ô"8ñô ˆNð ×Ò Ð/Ñ0Ô0Ð0Ð0å [Ð1Ñ1Ô1Ð1r%   )NN)r8   r9   r:   r;   rh   r   r=   r   rß   râ   r   r	   r   r   rê   r@   r%   r#   rÜ   rÜ   ù  sÙ   € € € € € ðð ð ð
 W¨S°#¨XÔ%6ð 
ð 
ð 
ñ „Xð
ð ð"˜3ð "ð "ð "ñ „Xð"ð %)Ø:>ð	$2ð $2à�c”ð$2ð �t˜C”yÔ!ð$2ð Ð6Ô7ð	$2ð
 ð$2ð 
ð$2ð $2ð $2ð $2ð $2ð $2r%   rÜ   )/rs   Úurllib.requestr,   r�   Úabcr   Úenumr   Útypingr   r   r   r   r	   Úurllib.parser
   Ú langchain_core.callbacks.managerr   Ú#langchain_core.language_models.llmsr   Úlangchain_core.outputsr   r   Úlangchain_core.utilsr   r   Úpydanticr   r   r   r   r   r   r<   Úobjectr   r=   rB   rG   rj   rˆ   r–   rœ   r¢   r°   r³   rÜ   r@   r%   r#   ú<module>rö      s5  ðØ €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø !Ð !Ð !Ð !Ð !Ð !à EÐ EÐ EÐ EÐ EÐ EØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ Lðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð €ð,ð ,ð ,ð ,ð ,˜Fñ ,ô ,ð ,ð^	ð 	ð 	ð 	ð 	˜S $ñ 	ô 	ð 	ð]ð ]ð ]ð ]ð ]ñ ]ô ]ð ]ð@'ð 'ð 'ð 'ð 'Ð/ñ 'ô 'ð 'ð:
ð 
ð 
ð 
ð 
Ð.ñ 
ô 
ð 
ð 'ð 'ð 'ð 'ð 'Ð-ñ 'ô 'ð 'ð:'ð 'ð 'ð 'ð 'Ð0ñ 'ô 'ð 'ð:?Vð ?Vð ?Vð ?Vð ?VÐ#7ñ ?Vô ?Vð ?VðD
ð 
ð 
ð 
ð 
Ð8ñ 
ô 
ð 
ð Ið Ið Ið Ið I˜)ñ Iô Ið IðX@2ð @2ð @2ð @2ð @2˜GÐ%8ñ @2ô @2ð @2ð @2ð @2r%   