§
    æ˜ºhü  ã                   óÊ   — d dl 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mZmZmZmZ d dlmZmZ d dlmZmZ  e j        e¦  «        Z G d	„ d
e¦  «        ZdS )é    N)ÚAnyÚDictÚListÚMappingÚOptional)Úurlparse)ÚCallbackManagerForLLMRun)ÚBaseChatModel)Ú	AIMessageÚBaseMessageÚChatMessageÚFunctionMessageÚHumanMessageÚSystemMessage)ÚChatGenerationÚ
ChatResult)ÚFieldÚPrivateAttrc                   ó®  ‡ — e Zd ZU dZeed<   	 eed<   	 dZeed<   	 dZe	ed<   	 dZ
eee                  ed	<   	 dZee	         ed
<   	  ee¬¦  «        Zeed<   	  e¦   «         Zeed<   defˆ fd„Zedefd„¦   «         Zd!d„Zedeeef         fd„¦   «         Z	 	 d"dee         d	eee                  dee         dedef
d„Zedeeef         fd„¦   «         Z	 d#d	eee                  dedeeef         fˆ fd„Zedefd„¦   «         Z e!de"eef         defd„¦   «         Z#e!d!d„¦   «         Z$e!dedefd„¦   «         Z%e!de"eef         defd „¦   «         Z&ˆ xZ'S )$Ú
ChatMlflowaÙ  `MLflow` chat models API.

    To use, you should have the `mlflow[genai]` python package installed.
    For more information, see https://mlflow.org/docs/latest/llms/deployments/server.html.

    Example:
        .. code-block:: python

            from langchain_community.chat_models import ChatMlflow

            chat = ChatMlflow(
                target_uri="http://localhost:5000",
                endpoint="chat",
                temperature-0.1,
            )
    ÚendpointÚ
target_urig        Útemperatureé   ÚnNÚstopÚ
max_tokens)Údefault_factoryÚextra_paramsÚ_clientÚkwargsc                 óð   •—  t          ¦   «         j        di |¤Ž |                      ¦   «          	 ddlm}  || j        ¦  «        | _        d S # t          $ r}t          d| j        › d�¦  «        |‚d }~ww xY w)Nr   )Úget_deploy_clientz;Failed to create the client. Please run `pip install mlflowz#` to install required dependencies.© )	ÚsuperÚ__init__Ú_validate_uriÚmlflow.deploymentsr#   r   r    ÚImportErrorÚ_mlflow_extras)Úselfr!   r#   ÚeÚ	__class__s       €ún/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/chat_models/mlflow.pyr&   zChatMlflow.__init__<   s±   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø×ÒÑÔÐð		Ø<Ð<Ð<Ð<Ð<Ð<à,Ð,¨T¬_Ñ=Ô=ˆDŒLˆLˆLøÝð 	ð 	ð 	Ýð)Ø15Ô1Dð)ð )ð )ñô ð ð	øøøøð	øøøs   °A Á
A5ÁA0Á0A5Úreturnc                 ó   — dS )Nz[genai]r$   ©r+   s    r.   r*   zChatMlflow._mlflow_extrasJ   s   € àˆyó    c                 ó”   — | j         dk    rd S g d¢}t          | j         ¦  «        j        |vrt          d| j         › d|› d�¦  «        ‚d S )NÚ
databricks)ÚhttpÚhttpsr4   zInvalid target URI: z. The scheme must be one of ú.)r   r   ÚschemeÚ
ValueError)r+   Úalloweds     r.   r'   zChatMlflow._validate_uriN   sv   € ØŒ?˜lÒ*Ð*ØˆFØ1Ð1Ð1ˆÝ�D”OÑ$Ô$Ô+°7Ð:Ð:Ýð8 t¤ð 8ð 8Ø-4ð8ð 8ð 8ñô ð ð ;Ð:r2   c                 ó`   — | j         | j        | j        | j        | j        | j        | j        dœ}|S )N©r   r   r   r   r   r   r   r<   )r+   Úparamss     r.   Ú_default_paramszChatMlflow._default_paramsX   s<   € ð œ/ØœØÔ+Ø”Ø”IØœ/Ø Ô-ð"
ð "
ˆð ˆr2   ÚmessagesÚrun_managerc                 ó  — d„ |D ¦   «         }|| j         | j        dœ| j        ¥|¥}| j        p|x}r||d<   | j        �
| j        |d<   | j                             | j        |¬¦  «        }t           	                    |¦  «        S )Nc                 óB   — g | ]}t                                |¦  «        ‘ŒS r$   )r   Ú_convert_message_to_dict)Ú.0Úmessages     r.   ú
<listcomp>z(ChatMlflow._generate.<locals>.<listcomp>l   s3   € ð 
ð 
ð 
Ø=D�J×/Ò/°Ñ8Ô8ð
ð 
ð 
r2   )r?   r   r   r   r   )r   Úinputs)
r   r   r   r   r   r    Úpredictr   r   Ú_create_chat_result)r+   r?   r   r@   r!   Úmessage_dictsÚdataÚresps           r.   Ú	_generatezChatMlflow._generatee   s¶   € ð
ð 
ØHPð
ñ 
ô 
ˆð &ØÔ+Ø”ð 
ð  
ð Ôð	 
ð
 ð 
ˆð ”9Ð$ Ð$ˆ4ð 	 ØˆD�‰LØŒ?Ð&Ø!%¤ˆD�ÑØŒ|×#Ò#¨T¬]À4Ð#ÑHÔHˆÝ×-Ò-¨dÑ3Ô3Ð3r2   c                 ó   — | j         S ©N)r>   r1   s    r.   Ú_identifying_paramszChatMlflow._identifying_params}   s   € àÔ#Ð#r2   c                 óL   •— i | j         ¥ t          ¦   «         j        dd|i|¤Ž¥S )z>Get the parameters used to invoke the model FOR THE CALLBACKS.r   r$   )r>   r%   Ú_get_invocation_params)r+   r   r!   r-   s      €r.   rR   z!ChatMlflow._get_invocation_params�   s<   ø€ ð
ØÔ"ð
à,�e‰gŒgÔ,ÐAÐA°$ÐA¸&ÐAÐAð
ð 	
r2   c                 ó   — dS )zReturn type of chat model.zmlflow-chatr$   r1   s    r.   Ú	_llm_typezChatMlflow._llm_typeŠ   s	   € ð ˆ}r2   Ú_dictc                 óÈ   — | d         }| d         }|dk    rt          |¬¦  «        S |dk    rt          |¬¦  «        S |dk    rt          |¬¦  «        S t          ||¬¦  «        S )NÚroleÚcontentÚuser)rX   Ú	assistantÚsystem)rX   rW   )r   r   r   r   )rU   rW   rX   s      r.   Ú_convert_dict_to_messagez#ChatMlflow._convert_dict_to_message�   sz   € à�VŒ}ˆØ˜	Ô"ˆØ�6Š>ˆ>Ý¨Ð0Ñ0Ô0Ð0Ø�[Ò Ð Ý WÐ-Ñ-Ô-Ð-Ø�XÒÐÝ ¨Ð1Ñ1Ô1Ð1å w°TÐ:Ñ:Ô:Ð:r2   c                  ó    — t          d¦  «        ‚)Nú~Function messages are not supported by Databricks. Please create a feature request at https://github.com/mlflow/mlflow/issues.)r9   r$   r2   r.   Ú_raise_functions_not_supportedz)ChatMlflow._raise_functions_not_supportedœ   s   € åðTñ
ô 
ð 	
r2   rE   c                 ó  — t          | t          ¦  «        r| j        | j        dœ}n–t          | t          ¦  «        rd| j        dœ}nvt          | t
          ¦  «        rd| j        dœ}nVt          | t          ¦  «        rd| j        dœ}n6t          | t          ¦  «        rt          d¦  «        ‚t          d| › �¦  «        ‚d| j	        v rt                               ¦   «          | j	        r t                               d| j	        ¦  «         |S )	N)rW   rX   rY   rZ   r[   r^   zGot unknown message type: Úfunction_callzRAdditional message arguments are unsupported by Databricks and will be ignored: %s)Ú
isinstancer   rW   rX   r   r   r   r   r9   Úadditional_kwargsr   r_   ÚloggerÚwarning)rE   Úmessage_dicts     r.   rC   z#ChatMlflow._convert_message_to_dict£   s,  € å�g�{Ñ+Ô+ð 	EØ$+¤L¸W¼_ÐMÐMˆLˆLÝ˜¥Ñ.Ô.ð 	EØ$*°w´ÐGÐGˆLˆLÝ˜¥Ñ+Ô+ð 
	EØ$/¸G¼OÐLÐLˆLˆLÝ˜¥Ñ/Ô/ð 	EØ$,¸¼ÐIÐIˆLˆLÝ˜¥Ñ1Ô1ð 	EÝðXñô ð õ
 ÐC¸'ÐCÐCÑDÔDÐDà˜gÔ7Ð7Ð7Ý×5Ò5Ñ7Ô7Ð7ØÔ$ð 	Ý�NŠNð+àÔ)ñô ð ð
 Ðr2   Úresponsec                 ó"  — g }| d         D ]^}t                                |d         ¦  «        }|                     di ¦  «        }t          ||¬¦  «        }|                     |¦  «         Œ_|                      di ¦  «        }t          ||¬¦  «        S )NÚchoicesrE   Úusage)rE   Úgeneration_info)ÚgenerationsÚ
llm_output)r   r\   Úgetr   Úappendr   )rg   rl   ÚchoicerE   rj   Úgens         r.   rI   zChatMlflow._create_chat_result¿   sŸ   € àˆØ˜yÔ)ð 	$ð 	$ˆFÝ ×9Ò9¸&ÀÔ:KÑLÔLˆGØ—J’J˜w¨Ñ+Ô+ˆEÝ ØØ %ðñ ô ˆCð ×Ò˜sÑ#Ô#Ð#Ð#à—’˜W bÑ)Ô)ˆÝ k¸eÐDÑDÔDÐDr2   )r/   N)NNrO   )(Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__r   Úfloatr   Úintr   r   r   r   r   Údictr   r   r    r   r&   Úpropertyr*   r'   r   r>   r   r	   r   rM   rP   rR   rT   Ústaticmethodr   r\   r_   rC   rI   Ú__classcell__)r-   s   @r.   r   r      s2  ø€ € € € € € ðð ð" €M€M�MØØ€O€O�OØ Ø€K�ÐÐÑØ#Ø€A€s€J€J�JØ7Ø $€Dˆ(�4˜”9Ô
Ð$Ð$Ñ$ØØ $€J�˜”Ð$Ð$Ñ$Ø3Ø˜¨tÐ4Ñ4Ô4€L�$Ð4Ð4Ñ4Ø7Ø�;‘=”=€GˆSÐ Ð Ñ ð ð ð ð ð ð ð ð ð ð ð ð ñ „Xððð ð ð ð ð
  c¨3 h¤ð 
ð 
ð 
ñ „Xð
ð %)Ø:>ð	4ð 4à�{Ô#ð4ð �t˜C”yÔ!ð4ð Ð6Ô7ð	4ð
 ð4ð 
ð4ð 4ð 4ð 4ð0 ð$ T¨#¨s¨(¤^ð $ð $ð $ñ „Xð$ð +/ð
ð 
Ø˜T #œYÔ'ð
Ø:=ð
à	ˆc�3ˆhŒð
ð 
ð 
ð 
ð 
ð 
ð ð˜3ð ð ð ñ „Xðð ð
;¨°°S°Ô(9ð 
;¸kð 
;ð 
;ð 
;ñ „\ð
;ð ð
ð 
ð 
ñ „\ð
ð ð¨+ð ¸$ð ð ð ñ „\ðð6 ðE g¨c°3¨hÔ&7ð E¸Jð Eð Eð Eñ „\ðEð Eð Eð Eð Er2   r   )ÚloggingÚtypingr   r   r   r   r   Úurllib.parser   Úlangchain_core.callbacksr	   Úlangchain_core.language_modelsr
   Úlangchain_core.messagesr   r   r   r   r   r   Úlangchain_core.outputsr   r   Úlangchain_core.pydantic_v1r   r   Ú	getLoggerrr   rd   r   r$   r2   r.   ú<module>r‡      sj  ðØ €€€Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø !Ð !Ð !Ð !Ð !Ð !ðð ð ð ð ð ð 9Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð >Ð =Ð =Ð =Ð =Ð =Ð =Ð =ðð ð ð ð ð ð ð ð
 
ˆÔ	˜8Ñ	$Ô	$€ðrEð rEð rEð rEð rE�ñ rEô rEð rEð rEð rEr2   