§
    æ˜ºhá8  ã                  óæ  — d Z ddlmZ ddlZddlZddlZddlmZmZ ddl	m
Z
mZmZmZmZmZmZmZ ddlmZ ddl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" ddl#m$Z$m%Z%m&Z& ddl'm(Z( ddl)m*Z*m+Z+m,Z, ddl-m.Z.m/Z/ e
rddl0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6  ej7        e8¦  «        Z9e G d„ d¦  «        ¦   «         Z:d+d„Z;d,d„Z<d-d„Z=d.d!„Z>d/d$„Z? ed%d&d'¬(¦  «         G d)„ d*e*e¦  «        ¦   «         Z@dS )0z1Wrapper around Google VertexAI chat-based models.é    )ÚannotationsN)Ú	dataclassÚfield)ÚTYPE_CHECKINGÚAnyÚDictÚIteratorÚListÚOptionalÚUnionÚcast)Úurlparse)Ú
deprecated)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚBaseChatModelÚgenerate_from_stream)Ú	AIMessageÚAIMessageChunkÚBaseMessageÚHumanMessageÚSystemMessage)ÚChatGenerationÚChatGenerationChunkÚ
ChatResult)Úroot_validator)Ú_VertexAICommonÚis_codey_modelÚis_gemini_model)Úload_image_from_gcsÚraise_vertex_import_error)ÚChatMessageÚChatSessionÚCodeChatSessionÚInputOutputTextPair)ÚContentc                  óD   — e Zd ZU dZ ee¬¦  «        Zded<   dZded<   dS )Ú_ChatHistoryz/Represents a context and a history of messages.)Údefault_factoryzList['ChatMessage']ÚhistoryNúOptional[str]Úcontext)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úlistr*   Ú__annotations__r,   © ó    úp/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/chat_models/vertexai.pyr(   r(   5   sG   € € € € € € à9Ð9à#( 5¸Ð#>Ñ#>Ô#>€GÐ>Ð>Ð>Ñ>Ø!€GÐ!Ð!Ð!Ñ!Ð!Ð!r4   r(   r*   úList[BaseMessage]Úreturnc                ó  — ddl m} g d}}t          | ¦  «        D ]Ù\  }}t          t          |j        ¦  «        }|dk    rt          |t          ¦  «        r|}Œ=t          |t          ¦  «        r( ||j        d¬¦  «        }| 	                    |¦  «         Œzt          |t          ¦  «        r( ||j        d¬¦  «        }| 	                    |¦  «         Œ·t          dt          |¦  «        › d|› d	�¦  «        ‚t          ||¬
¦  «        }|S )a  Parse a sequence of messages into history.

    Args:
        history: The list of messages to re-create the history of the chat.
    Returns:
        A parsed chat history.
    Raises:
        ValueError: If a sequence of message has a SystemMessage not at the
        first place.
    r   )r"   NÚbot)ÚcontentÚauthorÚuserúUnexpected message with type ú at the position ú.)r,   r*   )Úvertexai.language_modelsr"   Ú	enumerater   Ústrr:   Ú
isinstancer   r   Úappendr   Ú
ValueErrorÚtyper(   )	r*   r"   Úvertex_messagesr,   ÚiÚmessager:   Úvertex_messageÚchat_historys	            r5   Ú_parse_chat_historyrL   =   s0  € ð 5Ð4Ð4Ð4Ð4Ð4à! 4�W€OÝ Ñ(Ô(ð ð ‰
ˆˆ7Ý•s˜GœOÑ,Ô,ˆØ�Š6ˆ6•j ­-Ñ8Ô8ˆ6ØˆGˆGÝ˜¥Ñ+Ô+ð 		Ø(˜[°´ÈÐOÑOÔOˆNØ×"Ò" >Ñ2Ô2Ð2Ð2Ý˜¥Ñ.Ô.ð 	Ø(˜[°´ÈÐPÑPÔPˆNØ×"Ò" >Ñ2Ô2Ð2Ð2åØTµ°W±´ÐTÐTÐPQÐTÐTÐTñô ð õ  ¨¸ÐIÑIÔI€LØÐr4   ÚsrB   Úboolc                óÂ   — 	 t          | ¦  «        }t          |j        |j        g¦  «        S # t          $ r(}t
                               d|› �¦  «         Y d }~dS d }~ww xY w)NzUnable to parse URL: F)r   ÚallÚschemeÚnetlocÚ	ExceptionÚloggerÚdebug)rM   ÚresultÚes      r5   Ú_is_urlrX   ]   sp   € ðÝ˜!‘”ˆÝ�F”M 6¤=Ð1Ñ2Ô2Ð2øÝð ð ð Ý�ŠÐ0¨QÐ0Ð0Ñ1Ô1Ð1Øˆuˆuˆuˆuˆuøøøøðøøøs   ‚), ¬
A¶AÁAÚprojectr+   úList['Content']c                óø  ‡‡
‡‡— ddl m}mŠ
mŠ dˆ
ˆˆfd„Šg }t	          | ¦  «        D ]Ñ\  }}|dk    r$t          |t          ¦  «        rt          d¦  «        ‚t          |t          ¦  «        rd	}n;t          |t          ¦  «        rd
}n#t          dt          |¦  «        › d|› d�¦  «        ‚|j        }t          |t          ¦  «        r|g}ˆfd„|D ¦   «         } |||¬¦  «        }	|                     |	¦  «         ŒÒ|S )Nr   )r&   ÚImageÚPartÚpartúUnion[str, Dict]r7   r]   c                ó´  •— t          | t          ¦  «        r‰                     | ¦  «        S t          | t          ¦  «        s t	          dt          | ¦  «        › d�¦  «        ‚| d         dk    r‰                     | d         ¦  «        S | d         dk    �r!| d         d         }|                     d¦  «        rt          |‰¬¦  «        }nû|                     d	¦  «        ro	 t          j	        d
|¦  «         
                    d¦  «        }n# t          $ r t	          d¦  «        ‚w xY w‰                     t          j        |¦  «        ¦  «        }nwt          |¦  «        rCt!          j        |¦  «        }|                     ¦   «          ‰                     |j        ¦  «        }n%‰                     |¦  «        }nt	          d¦  «        ‚‰                     |¦  «        S )Nz0Message's content is expected to be a dict, got ú!rF   ÚtextÚ	image_urlÚurlzgs://)ÚpathrY   zdata:image/zdata:image/\w{2,4};base64,(.*)é   zdInvalid image uri. It should be in the format data:image/<image_type>;base64,<base64_encoded_image>.z,Only text and image_url types are supported!)rC   rB   Ú	from_textr   rE   rF   Ú
startswithr    ÚreÚsearchÚgroupÚAttributeErrorÚ
from_bytesÚbase64Ú	b64decoderX   ÚrequestsÚgetÚraise_for_statusr:   Úload_from_fileÚ
from_image)r^   re   ÚimageÚencodedÚresponser\   r]   rY   s        €€€r5   Ú_convert_to_promptz6_parse_chat_history_gemini.<locals>._convert_to_promptk   sà  ø€ Ý�d�CÑ Ô ð 	(Ø—>’> $Ñ'Ô'Ð'å˜$¥Ñ%Ô%ð 	ÝØPÅ4ÈÁ:Ä:ÐPÐPÐPñô ð ð �Œ<˜6Ò!Ð!Ø—>’> $ v¤,Ñ/Ô/Ð/Ø�&Œ\˜[Ò(Ñ(Ø˜Ô$ UÔ+ˆDØ�Š˜wÑ'Ô'ð 3Ý+°¸wÐGÑGÔG��Ø—’ Ñ/Ô/ð 3ðÝ œiÐ(IÈ4ÑPÔP×VÒVØñô �G�Gøõ &ð ð ð Ý$ðQñô ð ðøøøð
 ×(Ò(­Ô)9¸'Ñ)BÔ)BÑCÔC��Ý˜‘”ð 3Ý#œ<¨Ñ-Ô-�Ø×)Ò)Ñ+Ô+Ð+Ø×(Ò(¨Ô)9Ñ:Ô:��à×,Ò,¨TÑ2Ô2��åÐKÑLÔLÐLØ�Š˜uÑ%Ô%Ð%s   Ã (D	 Ä	D#z%SystemMessages are not yet supported!Úmodelr<   r=   r>   r?   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS r3   r3   )Ú.0r^   rx   s     €r5   ú
<listcomp>z._parse_chat_history_gemini.<locals>.<listcomp>Ÿ   s%   ø€ ÐBÐBÐB¨dÐ#Ð# DÑ)Ô)ÐBÐBÐBr4   )ÚroleÚparts)r^   r_   r7   r]   )Ú"vertexai.preview.generative_modelsr&   r\   r]   rA   rC   r   rE   r   r   rF   r:   rB   rD   )r*   rY   r&   rG   rH   rI   r}   Úraw_contentr~   rJ   r\   r]   rx   s    `        @@@r5   Ú_parse_chat_history_geminir�   f   se  øøøø€ ð HÐGÐGÐGÐGÐGÐGÐGÐGÐGð"&ð "&ð "&ð "&ð "&ð "&ð "&ð "&ðH €OÝ Ñ(Ô(ð /ð /‰
ˆˆ7Ø�Š6ˆ6•j ­-Ñ8Ô8ˆ6ÝÐDÑEÔEÐEÝ˜¥Ñ+Ô+ð 	ØˆDˆDÝ˜¥Ñ.Ô.ð 	ØˆDˆDåØTµ°W±´ÐTÐTÐPQÐTÐTÐTñô ð ð ”oˆÝ�k¥3Ñ'Ô'ð 	(Ø&˜-ˆKØBÐBÐBÐB°kÐBÑBÔBˆØ ˜ d°%Ð8Ñ8Ô8ˆØ×Ò˜~Ñ.Ô.Ð.Ð.ØÐr4   ÚexamplesúList['InputOutputTextPair']c                ó  — ddl m} t          | ¦  «        dz  dk    r t          dt          | ¦  «        › d�¦  «        ‚g }d }t	          | ¦  «        D ]µ\  }}|dz  dk    r?t          |t          ¦  «        s#t          dt          |¦  «        › d|› d�¦  «        ‚|j        }|dz  d	k    r_t          |t          ¦  «        s#t          d
t          |¦  «        › d|› d�¦  «        ‚ |||j        ¬¦  «        }| 
                    |¦  «         Œ¶|S )Nr   )r%   é   z8Expect examples to have an even amount of messages, got r?   z;Expected the first message in a part to be from human, got z	 for the zth message.rf   z9Expected the second message in a part to be from AI, got )Ú
input_textÚoutput_text)r@   r%   ÚlenrE   rA   rC   r   rF   r:   r   rD   )r‚   r%   Úexample_pairsr†   rH   ÚexampleÚpairs          r5   Ú_parse_examplesrŒ   ¥   ss  € Ø<Ð<Ð<Ð<Ð<Ð<å
ˆ8�}„}�qÑ˜AÒÐÝØWÅsÈ8Á}Ä}ÐWÐWÐWñ
ô 
ð 	
ð €MØ€JÝ Ñ)Ô)ð 'ð '‰
ˆˆ7Øˆq‰5�AŠ:ˆ:Ý˜g¥|Ñ4Ô4ð Ý ð>Ý˜G‘}”}ð>ð >Ø/0ð>ð >ð >ñô ð ð !œˆJØˆq‰5�AŠ:ˆ:Ý˜g¥yÑ1Ô1ð Ý ð>Ý˜G‘}”}ð>ð >Ø/0ð>ð >ð >ñô ð ð 'Ð&Ø%°7´?ðñ ô ˆDð × Ò  Ñ&Ô&Ð&øØÐr4   Úmessagesr   c                ó’   — | st          d¦  «        ‚| d         }t          |t          ¦  «        st          d|j        › d�¦  «        ‚|S )zMGet the human message at the end of a list of input messages to a chat model.z:You should provide at least one message to start the chat!éÿÿÿÿz3Last message in the list should be from human, got r?   )rE   rC   r   rF   )r�   Úquestions     r5   Ú_get_questionr‘   Ã   s^   € àð WÝÐUÑVÔVÐVØ˜Œ|€HÝ�h¥Ñ-Ô-ð 
ÝØRÀ(Ä-ÐRÐRÐRñ
ô 
ð 	
ð €Or4   z0.0.12z0.2.0z&langchain_google_vertexai.ChatVertexAI)ÚsinceÚremovalÚalternative_importc                  ó¾   — e Zd ZU dZdZded<   	 dZded<   ed$d
„¦   «         Zed%d„¦   «         Z	 e
¦   «         d&d„¦   «         Z	 	 	 d'd(d„Z	 	 d)d*d„Z	 	 d)d+d„Zd,d#„ZdS )-ÚChatVertexAIz+`Vertex AI` Chat large language models API.z
chat-bisonrB   Ú
model_nameNzOptional[List[BaseMessage]]r‚   r7   rN   c                ó   — dS )NTr3   )Úselfs    r5   Úis_lc_serializablezChatVertexAI.is_lc_serializableÛ   s   € àˆtr4   ú	List[str]c                ó
   — g d¢S )z*Get the namespace of the langchain object.)Ú	langchainÚchat_modelsÚvertexair3   )Úclss    r5   Úget_lc_namespacezChatVertexAI.get_lc_namespaceß   s   € ð 8Ð7Ð7Ð7r4   Úvaluesr   c                óZ  — t          |d         ¦  «        }|                      |¦  «         	 ddlm}m} |rddlm} n# t          $ r t          ¦   «          Y nw xY w|r ||d         ¬¦  «        |d<   n8t          |d         ¦  «        r|}n|}| 
                    |d         ¦  «        |d<   |S )z7Validate that the python package exists in environment.r—   r   )Ú	ChatModelÚCodeChatModel)ÚGenerativeModel)r—   Úclient)r   Ú_try_init_vertexair@   r¤   r¥   r   r¦   ÚImportErrorr!   r   Úfrom_pretrained)r    r¢   Ú	is_geminir¤   r¥   r¦   Ú	model_clss          r5   Úvalidate_environmentz!ChatVertexAI.validate_environmentä   s  € õ $ F¨<Ô$8Ñ9Ô9ˆ	Ø×Ò˜vÑ&Ô&Ð&ð	(ØIÐIÐIÐIÐIÐIÐIÐIàð ðð ð ð ð ð øøõ ð 	(ð 	(ð 	(Ý%Ñ'Ô'Ð'Ð'Ð'ð	(øøøàð 	OØ.˜¸&ÀÔ:NÐOÑOÔOˆF�8ÑÐå˜f \Ô2Ñ3Ô3ð &Ø)�	�	à%�	Ø(×8Ò8¸ÀÔ9MÑNÔNˆF�8ÑØˆs   ¬= ½AÁAr�   r6   ÚstopúOptional[List[str]]Úrun_managerú"Optional[CallbackManagerForLLMRun]ÚstreamúOptional[bool]Úkwargsr   r   c                ó°  — |�|n| j         }|r  | j        |f||dœ|¤Ž}t          |¦  «        S t          |¦  «        } | j        d|ddœ|¤Ž}	i }
d|	v r|	                     d¦  «        |
d<   | j        r]t          || j        ¬¦  «        }|                     ¦   «         }| j	         
                    |¬¦  «        }|                     ||	¬¦  «        }nht          |dd	…         ¦  «        }|                     d
¦  «        p| j        }|rt          |¦  «        |	d
<    | j        |fi |	¤Ž} |j        |j        fi |
¤Ž}d„ |j        D ¦   «         }t'          |¬¦  «        S )a>  Generate next turn in the conversation.

        Args:
            messages: The history of the conversation as a list of messages. Code chat
                does not support context.
            stop: The list of stop words (optional).
            run_manager: The CallbackManager for LLM run, it's not used at the moment.
            stream: Whether to use the streaming endpoint.

        Returns:
            The ChatResult that contains outputs generated by the model.

        Raises:
            ValueError: if the last message in the list is not from human.
        N)r®   r°   F©r®   r²   Úcandidate_count©rY   ©r*   ©Úgeneration_configr�   r‚   c                óT   — g | ]%}t          t          |j        ¬ ¦  «        ¬¦  «        ‘Œ&S ©©r:   ©rI   ©r   r   rb   ©r{   Úrs     r5   r|   z*ChatVertexAI._generate.<locals>.<listcomp>,  ó@   € ð 
ð 
ð 
àõ ¥9°Q´VÐ#<Ñ#<Ô#<Ð=Ñ=Ô=ð
ð 
ð 
r4   ©Úgenerationsr3   )Ú	streamingÚ_streamr   r‘   Ú_prepare_paramsÚpopÚ_is_gemini_modelr�   rY   r§   Ú
start_chatÚsend_messagerL   rq   r‚   rŒ   Ú_start_chatr:   Ú
candidatesr   )r™   r�   r®   r°   r²   r´   Úshould_streamÚstream_iterr�   ÚparamsÚ
msg_paramsÚhistory_geminirI   Úchatrw   r*   r‚   rÅ   s                     r5   Ú	_generatezChatVertexAI._generateü   sÂ  € ð. #)Ð"4˜˜¸$¼.ˆØð 	5Ø&˜$œ,ØðØ#°ðð Ø@Fðð ˆKõ (¨Ñ4Ô4Ð4å  Ñ*Ô*ˆØ%�Ô%ÐH¨4¸ÐHÐHÀÐHÐHˆØˆ
Ø Ð&Ð&Ø,2¯JªJÐ7HÑ,IÔ,IˆJÐ(Ñ)àÔ ð 	IÝ7¸È$Ì,ÐWÑWÔWˆNØ$×(Ò(Ñ*Ô*ˆGØ”;×)Ò)°.Ð)ÑAÔAˆDØ×(Ò(¨ÀFÐ(ÑKÔKˆHˆHå)¨(°3°B°3¬-Ñ8Ô8ˆGØ—z’z *Ñ-Ô-Ð>°´ˆHØð ?Ý%4°XÑ%>Ô%>��zÑ"Ø#�4Ô# GÐ6Ð6¨vÐ6Ð6ˆDØ(�tÔ(¨Ô)9ÐHÐH¸ZÐHÐHˆHð
ð 
àÔ(ð
ñ 
ô 
ˆõ  kÐ2Ñ2Ô2Ð2r4   ú'Optional[AsyncCallbackManagerForLLMRun]c              ‹  óÊ  K  — d|v r/|                      d¦  «         t                               d¦  «          | j        dd|i|¤Ž}i }d|v r|                      d¦  «        |d<   | j        rct          || j        ¬¦  «        }|                      ¦   «         }| j                             |¬¦  «        }	|	 	                    ||¬¦  «        ƒ d{V —†}
nwt          |¦  «        }t          |dd	…         ¦  «        }|                     d
d¦  «        }|rt          |¦  «        |d
<    | j        |fi |¤Ž}	 |	j	        |j        fi |¤Žƒ d{V —†}
d„ |
j        D ¦   «         }t#          |¬¦  «        S )a  Asynchronously generate next turn in the conversation.

        Args:
            messages: The history of the conversation as a list of messages. Code chat
                does not support context.
            stop: The list of stop words (optional).
            run_manager: The CallbackManager for LLM run, it's not used at the moment.

        Returns:
            The ChatResult that contains outputs generated by the model.

        Raises:
            ValueError: if the last message in the list is not from human.
        r²   z8ChatVertexAI does not currently support async streaming.r®   r·   r¸   r¹   rº   Nr�   r‚   c                óT   — g | ]%}t          t          |j        ¬ ¦  «        ¬¦  «        ‘Œ&S r½   rÀ   rÁ   s     r5   r|   z+ChatVertexAI._agenerate.<locals>.<listcomp>^  rÃ   r4   rÄ   r3   )rÉ   rT   ÚwarningrÈ   rÊ   r�   rY   r§   rË   Úsend_message_asyncr‘   rL   rq   rŒ   rÍ   r:   rÎ   r   )r™   r�   r®   r°   r´   rÑ   rÒ   rÓ   rI   rÔ   rw   r�   r*   r‚   rÅ   s                  r5   Ú
_ageneratezChatVertexAI._agenerate2  s¿  è è € ð* �vÐÐØ�JŠJ�xÑ Ô Ð Ý�NŠNÐUÑVÔVÐVà%�Ô%Ð:Ð:¨4Ð:°6Ð:Ð:ˆØˆ
Ø Ð&Ð&Ø,2¯JªJÐ7HÑ,IÔ,IˆJÐ(Ñ)àÔ ð 	UÝ7¸È$Ì,ÐWÑWÔWˆNØ$×(Ò(Ñ*Ô*ˆGØ”;×)Ò)°.Ð)ÑAÔAˆDØ!×4Ò4°WÐPVÐ4ÑWÔWÐWÐWÐWÐWÐWÐWˆHˆHå$ XÑ.Ô.ˆHÝ)¨(°3°B°3¬-Ñ8Ô8ˆGØ—z’z *¨dÑ3Ô3ˆHØð ?Ý%4°XÑ%>Ô%>��zÑ"Ø#�4Ô# GÐ6Ð6¨vÐ6Ð6ˆDØ4˜TÔ4°XÔ5EÐTÐTÈÐTÐTÐTÐTÐTÐTÐTÐTˆHð
ð 
àÔ(ð
ñ 
ô 
ˆõ  kÐ2Ñ2Ô2Ð2r4   úIterator[ChatGenerationChunk]c              +  ób  K  —  | j         d
|ddœ|¤Ž}| j        r^t          || j        ¬¦  «        }|                     ¦   «         }| j                             |¬¦  «        }|                     |d|¬¦  «        }	nqt          |¦  «        }
t          |d d…         ¦  «        }| 
                    dd ¦  «        }|rt          |¦  «        |d<    | j        |fi |¤Ž} |j        |
j        fi |¤Ž}	|	D ]C}|r|                     |j        ¦  «         t#          t%          |j        ¬¦  «        ¬	¦  «        V — ŒDd S )NTr¶   r¸   r¹   )r²   r»   r�   r‚   r¾   r¿   r3   )rÈ   rÊ   r�   rY   rÉ   r§   rË   rÌ   r‘   rL   rq   rŒ   rÍ   Úsend_message_streamingr:   Úon_llm_new_tokenrb   r   r   )r™   r�   r®   r°   r´   rÑ   rÓ   rI   rÔ   Ú	responsesr�   r*   r‚   rw   s                 r5   rÇ   zChatVertexAI._streamd  s}  è è € ð &�Ô%ÐG¨4¸ÐGÐGÀÐGÐGˆØÔ ð 	PÝ7¸È$Ì,ÐWÑWÔWˆNØ$×(Ò(Ñ*Ô*ˆGØ”;×)Ò)°.Ð)ÑAÔAˆDØ×)Ò)Ø ¸ð *ñ ô ˆIˆIõ % XÑ.Ô.ˆHÝ)¨(°3°B°3¬-Ñ8Ô8ˆGØ—z’z *¨dÑ3Ô3ˆHØð ?Ý%4°XÑ%>Ô%>��zÑ"Ø#�4Ô# GÐ6Ð6¨vÐ6Ð6ˆDØ3˜Ô3°HÔ4DÐOÐOÈÐOÐOˆIØ!ð 	Uð 	UˆHØð <Ø×,Ò,¨X¬]Ñ;Ô;Ð;Ý%­nÀXÄ]Ð.SÑ.SÔ.SÐTÑTÔTÐTÐTÐTÐTð	Uð 	Ur4   r*   r(   ú#Union[ChatSession, CodeChatSession]c                ó€   — | j         s | j        j        d|j        |j        dœ|¤ŽS  | j        j        dd|j        i|¤ŽS )N)r,   Úmessage_historyrã   r3   )r   r§   rË   r,   r*   )r™   r*   r´   s      r5   rÍ   zChatVertexAI._start_chat€  sh   € ð Ô"ð 	UØ)�4”;Ô)ð Øœ¸¼ðð ØLRðð ð ð *�4”;Ô)ÐTÐT¸'¼/ÐTÈVÐTÐTÐTr4   )r7   rN   )r7   r›   )r¢   r   r7   r   )NNN)r�   r6   r®   r¯   r°   r±   r²   r³   r´   r   r7   r   )NN)
r�   r6   r®   r¯   r°   rÖ   r´   r   r7   r   )
r�   r6   r®   r¯   r°   r±   r´   r   r7   rÜ   )r*   r(   r´   r   r7   rá   )r-   r.   r/   r0   r—   r2   r‚   Úclassmethodrš   r¡   r   r­   rÕ   rÛ   rÇ   rÍ   r3   r4   r5   r–   r–   Ï   s1  € € € € € € ð 6Ð5à"€JÐ"Ð"Ð"Ñ"ØØ,0€HÐ0Ð0Ð0Ñ0àðð ð ñ „[ðð ð8ð 8ð 8ñ „[ð8ð €^ÑÔðð ð ñ Ôðð4 %)Ø:>Ø!%ð43ð 43ð 43ð 43ð 43ðr %)Ø?Cð	03ð 03ð 03ð 03ð 03ðj %)Ø:>ð	Uð Uð Uð Uð Uð8Uð Uð Uð Uð Uð Ur4   r–   )r*   r6   r7   r(   )rM   rB   r7   rN   )r*   r6   rY   r+   r7   rZ   )r‚   r6   r7   rƒ   )r�   r6   r7   r   )Ar0   Ú
__future__r   rn   Úloggingri   Údataclassesr   r   Útypingr   r   r   r	   r
   r   r   r   Úurllib.parser   rp   Úlangchain_core._api.deprecationr   Úlangchain_core.callbacksr   r   Ú*langchain_core.language_models.chat_modelsr   r   Úlangchain_core.messagesr   r   r   r   r   Úlangchain_core.outputsr   r   r   Úlangchain_core.pydantic_v1r   Ú!langchain_community.llms.vertexair   r   r   Ú&langchain_community.utilities.vertexair    r!   r@   r"   r#   r$   r%   r   r&   Ú	getLoggerr-   rT   r(   rL   rX   r�   rŒ   r‘   r–   r3   r4   r5   ú<module>ró      sU  ðØ 7Ð 7Ø "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø 	€	€	€	Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ !Ð !Ð !Ð !Ð !Ð !à €€€Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð SÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð
 ð ;ðð ð ð ð ð ð ð ð ð ð ð ð ;Ð:Ð:Ð:Ð:Ð:à	ˆÔ	˜8Ñ	$Ô	$€ð ð"ð "ð "ð "ð "ñ "ô "ñ „ð"ðð ð ð ð@ð ð ð ð<ð <ð <ð <ð~ð ð ð ð<	ð 	ð 	ð 	ð €Ø
ØØ?ðñ ô ð
tUð tUð tUð tUð tU�? Mñ tUô tUñô ð
tUð tUð tUr4   