§
    šŠtjK  ã                  ó   — d dl m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mZmZ d dl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!m"Z"m#Z# er"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Z0dZ1d1d„Z2d1d„Z3	 	 	 d2d3d"„Z4	 	 d4d5d$„Z5 G d%„ d&e¦  «        Z6 G d'„ d(e6¦  «        Z7 ed)d*d+¬,¦  «         G d-„ de7e¦  «        ¦   «         Z8 ed)d*d.¬,¦  «         G d/„ d0e6e¦  «        ¦   «         Z9dS )6é    )Úannotations)ÚExecutorÚThreadPoolExecutor)ÚTYPE_CHECKINGÚAnyÚClassVarÚDictÚIteratorÚListÚOptionalÚUnion)Ú
deprecated)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚBaseLLM)Ú
GenerationÚGenerationChunkÚ	LLMResult)Úpre_init)Ú	BaseModelÚ
ConfigDictÚField)Úcreate_retry_decoratorÚget_client_infoÚinit_vertexaiÚraise_vertex_import_error©ÚPredictionServiceAsyncClientÚPredictionServiceClient)Ú
Prediction©ÚValue)ÚTextGenerationResponseÚ_LanguageModel)ÚImageNÚ
model_nameÚstrÚreturnÚboolc                ó
   — d| v S )z/Return True if the model name is a Codey model.Úcode© ©r&   s    ú_/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/vertexai.pyÚis_codey_modelr/   *   s   € à�ZÐÐó    c                ó   — | duod| v S )z0Return True if the model name is a Gemini model.NÚgeminir,   r-   s    r.   Úis_gemini_modelr3   /   s   € à˜TÐ!Ð< h°*Ð&<Ð<r0   FÚllmÚVertexAIÚpromptúList[Union[str, 'Image']]ÚstreamÚ	is_geminiÚrun_managerú"Optional[CallbackManagerForLLMRun]Úkwargsr   c                ó^   ‡ ‡— t          ‰ |¬¦  «        }|	 ddˆ ˆfd
„¦   «         } |||fi |¤ŽS )ú*Use tenacity to retry the completion call.©r:   Fr6   r7   r9   r)   r<   r   r(   c                óª   •— |r‰j                              | ‰|¬¦  «        S ‰r ‰j         j        | d         fi |¤ŽS  ‰j         j        | d         fi |¤ŽS )N)r8   Úgeneration_configr   )ÚclientÚgenerate_contentÚpredict_streamingÚpredict)r6   r9   r<   r4   r8   s      €€r.   Ú_completion_with_retryz5completion_with_retry.<locals>._completion_with_retry?   s€   ø€ ð ð 	;Ø”:×.Ò.Ø˜v¸ð /ñ ô ð ð ð IØ3�s”zÔ3°F¸1´IÐHÐHÀÐHÐHÐHØ%�3”:Ô% f¨Q¤iÐ:Ð:°6Ð:Ð:Ð:r0   ©F)r6   r7   r9   r)   r<   r   r(   r   ©r   )r4   r6   r8   r9   r:   r<   Úretry_decoratorrF   s   ` `     r.   Úcompletion_with_retryrJ   4   sj   øø€ õ -¨S¸kÐJÑJÔJ€Oàà=Bð
;ð 
;ð 
;ð 
;ð 
;ð 
;ð 
;ñ „_ð
;ð "Ð! &¨)Ð>Ð>°vÐ>Ð>Ð>r0   ú'Optional[AsyncCallbackManagerForLLMRun]c              ‹  ój   ‡ K  — t          ‰ |¬¦  «        }|	 ddˆ fd
„¦   «         } |||fi |¤Žƒ d{V —†S )r>   r?   Fr6   r'   r9   r)   r<   r   r(   c              ›  ó‚   •K  — |r"‰j                              | |¬¦  «        ƒ d {V —†S  ‰j         j        | fi |¤Žƒ d {V —†S )N)rA   )rB   Úgenerate_content_asyncÚpredict_async)r6   r9   r<   r4   s      €r.   Ú_acompletion_with_retryz7acompletion_with_retry.<locals>._acompletion_with_retryY   s„   øè è € ð ð 	Øœ×:Ò:Ø¨&ð ;ñ ô ð ð ð ð ð ð ð ð .�S”ZÔ-¨fÐ?Ð?¸Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?r0   NrG   )r6   r'   r9   r)   r<   r   r(   r   rH   )r4   r6   r9   r:   r<   rI   rP   s   `      r.   Úacompletion_with_retryrQ   O   s�   øè è € õ -¨S¸kÐJÑJÔJ€Oàà',ð@ð @ð @ð @ð @ð @ñ „_ð@ð )Ð(¨°ÐEÐE¸fÐEÐEÐEÐEÐEÐEÐEÐEÐEr0   c                  óÈ   — e Zd ZU  ed¬¦  «        ZdZded<   	 dZded<   	 d	Zd
ed<   	 	 dZ	d
ed<   	  e
dd¬¦  «        Zded<   dZded<   	 dZded<   	 eddd„¦   «         ZdS )Ú_VertexAIBaser,   )Úprotected_namespacesNúOptional[str]Úprojectzus-central1r'   Úlocationé   ÚintÚrequest_parallelismé   Úmax_retriesT©ÚdefaultÚexcludezClassVar[Optional[Executor]]Útask_executorúOptional[List[str]]Ústopr&   r(   r   c                óH   — | j         €t          |¬¦  «        | _         | j         S )N)Úmax_workers)r`   r   )ÚclsrZ   s     r.   Ú_get_task_executorz _VertexAIBase._get_task_executorx   s(   € àÔÐ$Ý 2Ð?RÐ SÑ SÔ SˆCÔØÔ Ð r0   )rX   )rZ   rY   r(   r   )Ú__name__Ú
__module__Ú__qualname__r   Úmodel_configrV   Ú__annotations__rW   rZ   r\   r   r`   rb   r&   Úclassmethodrf   r,   r0   r.   rS   rS   f   sç   € € € € € € Ø�:°2Ð6Ñ6Ô6€Là!€GÐ!Ð!Ð!Ñ!ØBØ!€HÐ!Ð!Ð!Ñ!Ø8Ø ÐÐ Ð Ð Ñ ØPØØ€KÐÐÐÑØ@Ø27°%ÀÈdÐ2SÑ2SÔ2S€MÐSÐSÐSÑSØ $€DÐ$Ð$Ð$Ñ$Ø9Ø $€JÐ$Ð$Ð$Ñ$Øàð!ð !ð !ð !ñ „[ð!ð !ð !r0   rS   c                  ód  — e Zd ZU dZded<   dZded<   ded<   	 dZded	<   	 d
Zded<   	 dZded<   	 	 dZ	ded<   	 	  e
dd¬¦  «        Zded<   	 	 	 dZded<   	 dZded<   	 ed+d„¦   «         Zed,d„¦   «         Zed,d„¦   «         Zed-d„¦   «         Zed-d „¦   «         Zed.d$„¦   «         Z	 	 d/d0d*„ZdS )1Ú_VertexAICommonNz'_LanguageModel'rB   Úclient_previewr'   r&   g        ÚfloatÚtemperatureé€   rY   Úmax_output_tokensgffffffî?Útop_pé(   Útop_kTr]   r   Úcredentialsé   ÚnFr)   Ú	streamingr(   c                ó   — dS )NÚvertexair,   ©Úselfs    r.   Ú	_llm_typez_VertexAICommon._llm_type—   s   € àˆzr0   c                ó*   — t          | j        ¦  «        S ©N)r/   r&   r}   s    r.   r/   z_VertexAICommon.is_codey_model›   s   € å˜dœoÑ.Ô.Ð.r0   c                ó*   — t          | j        ¦  «        S r�   )r3   r&   r}   s    r.   Ú_is_gemini_modelz _VertexAICommon._is_gemini_modelŸ   s   € å˜tœÑ/Ô/Ð/r0   úDict[str, Any]c                ó&   — i d| j         i¥| j        ¥S )z Gets the identifying parameters.r&   )r&   Ú_default_paramsr}   s    r.   Ú_identifying_paramsz#_VertexAICommon._identifying_params£   s   € ð K�< ¤Ð1ÐJ°TÔ5IÐJÐJr0   c                ó‚   — | j         | j        | j        dœ}| j        s"|                     | j        | j        dœ¦  «         |S )N)rq   rs   Úcandidate_count)rv   rt   )rq   rs   ry   r/   Úupdaterv   rt   )r~   Úparamss     r.   r†   z_VertexAICommon._default_params¨   s_   € ð  Ô+Ø!%Ô!7Ø#œvð
ð 
ˆð
 Ô"ð 	Ø�MŠMà!œZØ!œZðð ñô ð ð ˆr0   Úvaluesr	   ÚNonec                óh   ‡— g d¢Šˆfd„|                      ¦   «         D ¦   «         }t          di |¤Ž d S )N)rV   rW   rw   c                ó$   •— i | ]\  }}|‰v ¯	||“ŒS r,   r,   )Ú.0ÚkÚvÚallowed_paramss      €r.   ú
<dictcomp>z6_VertexAICommon._try_init_vertexai.<locals>.<dictcomp>»   s)   ø€ ÐIÐIÐI™4˜1˜a°Q¸.Ð5HÐ5H�!�QÐ5HÐ5HÐ5Hr0   r,   )Úitemsr   )re   rŒ   r‹   r“   s      @r.   Ú_try_init_vertexaiz"_VertexAICommon._try_init_vertexai¸   sH   ø€ à?Ð?Ð?ˆØIÐIÐIÐI 6§<¢<¡>¤>ÐIÑIÔIˆÝÐÐ˜ÐÐÐØˆtr0   rb   ra   r8   r<   Údictc                ó¼   ‡— |p| j         }ddiŠˆfd„|                     ¦   «         D ¦   «         }i | j        ¥d|i¥|¥}|s| j        r|                     d¦  «         |S )Nry   r‰   c                óD   •— i | ]\  }}‰                      ||¦  «        |“ŒS r,   )Úget)r�   r‘   r’   Úparams_mappings      €r.   r”   z3_VertexAICommon._prepare_params.<locals>.<dictcomp>Ç   s/   ø€ ÐIÐIÐI±$°!°Q�.×$Ò$ Q¨Ñ*Ô*¨AÐIÐIÐIr0   Ústop_sequences)rb   r•   r†   rz   Úpop)r~   rb   r8   r<   rœ   r‹   r›   s         @r.   Ú_prepare_paramsz_VertexAICommon._prepare_params¿   sƒ   ø€ ð Ð* ¤ˆØÐ0Ð1ˆØIÐIÐIÐI¸&¿,º,¹.¼.ÐIÑIÔIˆØU�DÔ(ÐUÐ*:¸NÐUÐUÈfÐUˆØð 	*�T”^ð 	*Ø�JŠJÐ(Ñ)Ô)Ð)Øˆr0   ©r(   r'   ©r(   r)   )r(   r„   )rŒ   r	   r(   r�   )NF)rb   ra   r8   r)   r<   r   r(   r—   )rg   rh   ri   rB   rk   ro   rq   rs   rt   rv   r   rw   ry   rz   Úpropertyr   r/   rƒ   r‡   r†   rl   r–   rž   r,   r0   r.   rn   rn      sÇ  € € € € € € Ø#€FÐ#Ð#Ð#Ñ#Ø'+€NÐ+Ð+Ð+Ñ+Ø€O€O�OØØ€KÐÐÐÑØTØ ÐÐ Ð Ð Ñ ØOØ€EÐÐÐÑØMØNØ€E€O€O€O�OØOØNØ�u T°4Ð8Ñ8Ô8€KÐ8Ð8Ð8Ñ8ØRØSØØ€A€J€J€J�JØ;Ø€IÐÐÐÑØ/àðð ð ñ „Xðð ð/ð /ð /ñ „Xð/ð ð0ð 0ð 0ñ „Xð0ð ðKð Kð Kñ „XðKð ðð ð ñ „Xðð ðð ð ñ „[ðð %)Øðð ð ð ð ð ð r0   rn   z0.0.12z1.0z"langchain_google_vertexai.VertexAI)Ú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„Zd+d„Z	 	 	 d,d-d!„Z	 	 d.d/d#„Z	 	 d.d0d&„ZdS )1r5   z'Google Vertex AI large language models.z
text-bisonr'   r&   NrU   Útuned_model_namer(   r)   c                ó   — dS )NTr,   r}   s    r.   Úis_lc_serializablezVertexAI.is_lc_serializableÛ   s   € àˆtr0   ú	List[str]c                ó
   — g d¢S )z*Get the namespace of the langchain object.)Ú	langchainÚllmsr|   r,   )re   s    r.   Úget_lc_namespacezVertexAI.get_lc_namespaceß   s   € ð 1Ð0Ð0Ð0r0   rŒ   r	   c                ó˜  — |                      d¦  «        }|d         }t          |d         ¦  «        }|                      |¦  «         	 ddlm}m} ddlm} ddlm} |rddlm}	 t          |¦  «        r|}
|}n|r|	}
|	}n|}
|}|r1|
 
                    |¦  «        |d<   | 
                    |¦  «        |d	<   nQ|r |
|¬
¦  «        |d<    ||¬
¦  «        |d	<   n0|
                     |¦  «        |d<   |                     |¦  «        |d	<   n# t          $ r t          ¦   «          Y nw xY w|d         r|d         dk    rt          d¦  «        ‚|S )ú7Validate that the python package exists in environment.r¦   r&   r   )ÚCodeGenerationModelÚTextGenerationModel)r°   )r±   )ÚGenerativeModelrB   ro   r-   rz   ry   rx   z3Only one candidate can be generated with streaming!)rš   r3   r–   Úvertexai.language_modelsr°   r±   Ú vertexai.preview.language_modelsÚ"vertexai.preview.generative_modelsr²   r/   Úget_tuned_modelÚfrom_pretrainedÚImportErrorr   Ú
ValueError)re   rŒ   r¦   r&   r9   r°   r±   ÚPreviewCodeGenerationModelÚPreviewTextGenerationModelr²   Ú	model_clsÚpreview_model_clss               r.   Úvalidate_environmentzVertexAI.validate_environmentä   s.  € ð "Ÿ:š:Ð&8Ñ9Ô9ÐØ˜LÔ)ˆ
Ý# F¨<Ô$8Ñ9Ô9ˆ	Ø×Ò˜vÑ&Ô&Ð&ð+	(ðð ð ð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ð ð ðð ð ð ð ð õ ˜jÑ)Ô)ð ?Ø/�	Ø$>Ð!Ð!Øð ?Ø+�	Ø$3Ð!Ð!à/�	Ø$>Ð!àð Ø#,×#<Ò#<Ð=MÑ#NÔ#N��xÑ Ø+<×+LÒ+LØ$ñ,ô ,�Ð'Ñ(Ð(ð ð Ø'0 y¸JÐ'GÑ'GÔ'G�F˜8Ñ$Ø/@Ð/@ÈJÐ/WÑ/WÔ/W�FÐ+Ñ,Ð,à'0×'@Ò'@ÀÑ'LÔ'L�F˜8Ñ$Ø/@×/PÒ/PØ"ñ0ô 0�FÐ+Ñ,øøõ ð 	(ð 	(ð 	(Ý%Ñ'Ô'Ð'Ð'Ð'ð	(øøøð �+Ôð 	T 6¨#¤;°¢? ?ÝÐRÑSÔSÐSØˆs   Á	B?D	 Ä	D$Ä#D$ÚtextrY   c                ó†   — 	 | j                              |g¦  «        }n# t          $ r t          ¦   «          Y nw xY w|j        S )a  Get the number of tokens present in the text.

        Useful for checking if an input will fit in a model's context window.

        Args:
            text: The string input to tokenize.

        Returns:
            The integer number of tokens in the text.
        )ro   Úcount_tokensÚAttributeErrorr   Útotal_tokens)r~   r¿   Úresults      r.   Úget_num_tokenszVertexAI.get_num_tokens  sY   € ð	(ØÔ(×5Ò5°t°fÑ=Ô=ˆFˆFøÝð 	(ð 	(ð 	(Ý%Ñ'Ô'Ð'Ð'Ð'ð	(øøøð Ô"Ð"s   ‚ ž9¸9Úresponser#   r   c                ót   — 	 |j         |j        dœ}n# t          $ r d}Y nw xY wt          |j        |¬¦  «        S )z1Converts a stream response to a generation chunk.)Ú
is_blockedÚsafety_attributesN)r¿   Úgeneration_info)rÈ   rÉ   Ú	Exceptionr   r¿   )r~   rÆ   rÊ   s      r.   Ú_response_to_generationz VertexAI._response_to_generation.  s\   € ð	#à&Ô1Ø%-Ô%?ðð ˆOˆOøõ ð 	#ð 	#ð 	#Ø"ˆOˆOˆOð	#øøøå H¤MÀ?ÐSÑSÔSÐSs   ‚ ’! !Úpromptsrb   ra   r:   r;   r8   úOptional[bool]r<   r   r   c                óh  ‡ — |�|n‰ j         } ‰ j        d||dœ|¤Ž}g }|D ]‚}	|r@t          d¬¦  «        }
 ‰ j        |	f||dœ|¤ŽD ]}|
|z  }
Œ|                     |
g¦  «         ŒDt          ‰ |	gf|‰ j        |dœ|¤Ž}|                     ˆ fd„|j        D ¦   «         ¦  «         Œƒt          |¬¦  «        S )	N©rb   r8   Ú ©r¿   )rb   r:   ©r8   r9   r:   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r,   ©rÌ   ©r�   Úrr~   s     €r.   ú
<listcomp>z&VertexAI._generate.<locals>.<listcomp>X  s'   ø€ ÐMÐMÐM¸�T×1Ò1°!Ñ4Ô4ÐMÐMÐMr0   ©Úgenerationsr,   )	rz   rž   r   Ú_streamÚappendrJ   rƒ   Ú
candidatesr   )r~   rÍ   rb   r:   r8   r<   Úshould_streamr‹   rÚ   r6   Ú
generationÚchunkÚress   `            r.   Ú	_generatezVertexAI._generate;  sB  ø€ ð #)Ð"4˜˜¸$¼.ˆØ%�Ô%ÐP¨4¸ÐPÐPÈÐPÐPˆØ.0ˆØð 	ð 	ˆFØð Ý,°"Ð5Ñ5Ô5�
Ø)˜Tœ\ØðØ!%°;ðð ØBHðð ð (ð (�Eð  %Ñ'�J�JØ×"Ò" J <Ñ0Ô0Ð0Ð0å+ØØ�Hðð )Ø"Ô3Ø +ðð ð ðð �ð ×"Ò"ØMÐMÐMÐM¸c¼nÐMÑMÔMñô ð ð õ  [Ð1Ñ1Ô1Ð1r0   rK   c              ‹  óØ   ‡ K  —  ‰ j         dd|i|¤Ž}g }|D ]D}t          ‰ |f‰ j        |dœ|¤Žƒ d {V —†}|                     ˆ fd„|j        D ¦   «         ¦  «         ŒEt          |¬¦  «        S )Nrb   )r9   r:   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r,   rÕ   rÖ   s     €r.   rØ   z'VertexAI._agenerate.<locals>.<listcomp>n  s'   ø€ ÐIÐIÐI°Q�×-Ò-¨aÑ0Ô0ÐIÐIÐIr0   rÙ   r,   )rž   rQ   rƒ   rÜ   rÝ   r   )	r~   rÍ   rb   r:   r<   r‹   rÚ   r6   rá   s	   `        r.   Ú
_ageneratezVertexAI._agenerate\  s×   øè è € ð &�Ô%Ð:Ð:¨4Ð:°6Ð:Ð:ˆØˆØð 
	ð 
	ˆFÝ.ØØðð Ô/Ø'ð	ð ð
 ðð ð ð ð ð ð ð ˆCð ×ÒØIÐIÐIÐI¸#¼.ÐIÑIÔIñô ð ð õ  [Ð1Ñ1Ô1Ð1r0   r6   úIterator[GenerationChunk]c              +  óÚ   K  —  | j         d|ddœ|¤Ž}t          | |gfd| j        |dœ|¤ŽD ]?}|                      |¦  «        }|r"|                     |j        || j        ¬¦  «         |V — Œ@d S )NTrÐ   rÓ   )rà   Úverboser,   )rž   rJ   rƒ   rÌ   Úon_llm_new_tokenr¿   rè   )r~   r6   rb   r:   r<   r‹   Ústream_resprà   s           r.   rÛ   zVertexAI._streamr  sÈ   è è € ð &�Ô%ÐG¨4¸ÐGÐGÀÐGÐGˆÝ0ØØˆHð
ð ØÔ+Ø#ð
ð 
ð ð
ð 
ð 	ð 	ˆKð ×0Ò0°Ñ=Ô=ˆEØð Ø×,Ò,Ø”JØØ œLð -ñ ô ð ð
 ˆKˆKˆKˆKð	ð 	r0   r    )r(   r©   ©rŒ   r	   r(   r	   )r¿   r'   r(   rY   )rÆ   r#   r(   r   )NNN)rÍ   r©   rb   ra   r:   r;   r8   rÎ   r<   r   r(   r   ©NN©
rÍ   r©   rb   ra   r:   rK   r<   r   r(   r   )
r6   r'   rb   ra   r:   r;   r<   r   r(   ræ   )rg   rh   ri   Ú__doc__r&   rk   r¦   rl   r¨   r­   r   r¾   rÅ   rÌ   râ   rå   rÛ   r,   r0   r.   r5   r5   Î   s9  € € € € € € ð 2Ð1à"€JÐ"Ð"Ð"Ñ"Ø5Ø&*ÐÐ*Ð*Ð*Ñ*ØDàðð ð ñ „[ðð ð1ð 1ð 1ñ „[ð1ð ð5ð 5ð 5ñ „Xð5ðn#ð #ð #ð #ð$Tð Tð Tð Tð  %)Ø:>Ø!%ð2ð 2ð 2ð 2ð 2ðH %)Ø?Cð	2ð 2ð 2ð 2ð 2ð2 %)Ø:>ð	ð ð ð ð ð ð r0   z-langchain_google_vertexai.VertexAIModelGardenc                  óè   — e Zd ZU dZdZded<   dZded<   ded<   	 dZd	ed
<   	 dZded<   dZ	ded<   	 	 e
d(d„¦   «         Zed)d„¦   «         Zed)d„¦   «         Zd*d„Z	 	 d+d,d „Zd-d#„Zd.d%„Z	 	 d+d/d'„ZdS )0ÚVertexAIModelGardenz-Vertex AI Model Garden large language models.Nz'PredictionServiceClient'rB   z'PredictionServiceAsyncClient'Úasync_clientr'   Úendpoint_idra   Úallowed_model_argsr6   Ú
prompt_argÚgenerated_textrU   Ú
result_argrŒ   r	   r(   c                ó  — 	 ddl m} ddlm}m} n# t
          $ r t          ¦   «          Y nw xY w|d         st          d¦  «        ‚ ||d         › d�¬¦  «        }t          d	¬
¦  «        } |||¬¦  «        |d<    |||¬¦  «        |d<   |S )r¯   r   )ÚClientOptionsr   rV   zBA GCP project should be provided to run inference on Model Garden!rW   z-aiplatform.googleapis.com)Úapi_endpointzvertex-ai-model-garden)Úmodule)Úclient_optionsÚclient_inforB   rñ   )	Úgoogle.api_core.client_optionsrø   Úgoogle.cloud.aiplatform.gapicr   r   r¸   r   r¹   r   )re   rŒ   rø   r   r   rû   rü   s          r.   r¾   z(VertexAIModelGarden.validate_environmentŸ  s   € ð	(ØDÐDÐDÐDÐDÐDðð ð ð ð ð ð ð ð øõ ð 	(ð 	(ð 	(Ý%Ñ'Ô'Ð'Ð'Ð'ð	(øøøð �iÔ ð 	ÝØTñô ð ð '˜Ø" :Ô.ÐJÐJÐJð
ñ 
ô 
ˆõ &Ð-EÐFÑFÔFˆØ2Ð2Ø)°{ð
ñ 
ô 
ˆˆxÑð ">Ð!=Ø)°{ð"
ñ "
ô "
ˆˆ~Ñð ˆs   ‚ ‘,«,c                óZ   — | j                              | j        | j        | j        ¬¦  «        S )N)rV   rW   Úendpoint)rB   Úendpoint_pathrV   rW   rò   r}   s    r.   r  z!VertexAIModelGarden.endpoint_path¼  s1   € àŒ{×(Ò(Ø”LØ”]ØÔ%ð )ñ 
ô 
ð 	
r0   c                ó   — dS )NÚvertexai_model_gardenr,   r}   s    r.   r   zVertexAIModelGarden._llm_typeÄ  s   € à&Ð&r0   rÍ   r©   r<   r   úList['Value']c                ó   ‡ ‡‡— 	 ddl mŠ ddlmŠ n# t          $ r t	          d¦  «        ‚w xY wg }|D ]K}‰ j        r!ˆ fd„|                     ¦   «         D ¦   «         }ni }||‰ j        <   |                     |¦  «         ŒLˆˆfd„|D ¦   «         }|S )Nr   )Újson_formatr!   zIprotobuf package not found, please install it with `pip install protobuf`c                ó.   •— i | ]\  }}|‰j         v ¯||“ŒS r,   )ró   )r�   r‘   r’   r~   s      €r.   r”   z8VertexAIModelGarden._prepare_request.<locals>.<dictcomp>Ô  s3   ø€ ð ð ð Ù!˜Q °q¸DÔ<SÐ7SÐ7S�A�qÐ7SÐ7SÐ7Sr0   c                óL   •— g | ] }‰                      | ‰¦   «         ¦  «        ‘Œ!S r,   )Ú	ParseDict)r�   Úinstance_dictr"   r  s     €€r.   rØ   z8VertexAIModelGarden._prepare_request.<locals>.<listcomp>Ü  s<   ø€ ð 
ð 
ð 
Ø>KˆK×!Ò! -°°±´Ñ9Ô9ð
ð 
ð 
r0   )	Úgoogle.protobufr  Úgoogle.protobuf.struct_pb2r"   r¸   ró   r•   rô   rÜ   )	r~   rÍ   r<   Ú	instancesr6   ÚinstanceÚpredict_instancesr"   r  s	   `      @@r.   Ú_prepare_requestz$VertexAIModelGarden._prepare_requestÈ  s  øøø€ ð	Ø3Ð3Ð3Ð3Ð3Ð3Ø8Ð8Ð8Ð8Ð8Ð8Ð8øÝð 	ð 	ð 	Ýð*ñô ð ð	øøøð
 ˆ	Øð 	'ð 	'ˆFØÔ&ð ðð ð ð Ø%+§\¢\¡^¤^ðñ ô ��ð �Ø(.ˆH�T”_Ñ%Ø×Ò˜XÑ&Ô&Ð&Ð&ð
ð 
ð 
ð 
ð 
ØOXð
ñ 
ô 
Ðð !Ð s   … ’,rb   r:   r;   r   c                óŠ   —  | j         |fi |¤Ž}| j                             | j        |¬¦  «        }|                      |¦  «        S )ú*Run the LLM on the given prompt and input.©r   r  )r  rB   rE   r  Ú_parse_response©r~   rÍ   rb   r:   r<   r  rÆ   s          r.   râ   zVertexAIModelGarden._generateá  sO   € ð *�DÔ)¨'Ð<Ð<°VÐ<Ð<ˆ	Ø”;×&Ò&°Ô0BÈiÐ&ÑXÔXˆØ×#Ò# HÑ-Ô-Ð-r0   Úpredictionsú'Prediction'c                ó~   ‡ — g }|j         D ]#}|                     ˆ fd„|D ¦   «         ¦  «         Œ$t          |¬¦  «        S )Nc                óV   •— g | ]%}t          ‰                     |¦  «        ¬ ¦  «        ‘Œ&S )rÒ   )r   Ú_parse_prediction)r�   Ú
predictionr~   s     €r.   rØ   z7VertexAIModelGarden._parse_response.<locals>.<listcomp>ñ  sB   ø€ ð ð ð à"õ  D×$:Ò$:¸:Ñ$FÔ$FÐGÑGÔGðð ð r0   rÙ   )r  rÜ   r   )r~   r  rÚ   rÄ   s   `   r.   r  z#VertexAIModelGarden._parse_responseí  sp   ø€ Ø.0ˆØ!Ô-ð 	ð 	ˆFØ×Òðð ð ð à&,ðñ ô ñô ð ð õ  [Ð1Ñ1Ô1Ð1r0   r  c                ó&  — t          |t          ¦  «        r|S | j        rr	 || j                 S # t          $ rW t          |t          ¦  «        r*d| j        › dt	          |¦  «        › d�}t          |¦  «        ‚t          | j        › d�¦  «        ‚w xY w|S )Nz+Provided non-None `result_arg` (result_arg=z). But got prediction of type zl instead of dict. Most probably, youneed to set `result_arg=None` during VertexAIModelGarden initialization.z key not found in prediction!)Ú
isinstancer'   rö   ÚKeyErrorÚtyper¹   )r~   r  Ú
error_descs      r.   r  z%VertexAIModelGarden._parse_predictionø  sÎ   € Ý�j¥#Ñ&Ô&ð 	ØÐàŒ?ð 	XðXØ! $¤/Ô2Ð2øÝð Xð Xð XÝ˜j­#Ñ.Ô.ð 
Xð*Øœ?ð*ð *å 
Ñ+Ô+ð*ð *ð *ð õ % ZÑ0Ô0Ð0å$¨¬Ð%VÐ%VÐ%VÑWÔWÐWðXøøøð Ðs
    - ­A!BrK   c              ‹  óš   K  —  | j         |fi |¤Ž}| j                             | j        |¬¦  «        ƒ d{V —†}|                      |¦  «        S )r  r  N)r  rñ   rE   r  r  r  s          r.   rå   zVertexAIModelGarden._agenerate  s{   è è € ð *�DÔ)¨'Ð<Ð<°VÐ<Ð<ˆ	ØÔ*×2Ò2ØÔ'°9ð 3ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆð ×#Ò# HÑ-Ô-Ð-r0   rë   rŸ   )rÍ   r©   r<   r   r(   r  rì   )
rÍ   r©   rb   ra   r:   r;   r<   r   r(   r   )r  r  r(   r   )r  r   r(   r'   rí   )rg   rh   ri   rî   rB   rk   rñ   ró   rô   rö   r   r¾   r¡   r  r   r  râ   r  r  rå   r,   r0   r.   rð   rð   Œ  sh  € € € € € € ð 8Ð7à(,€FÐ,Ð,Ð,Ñ,Ø37€LÐ7Ð7Ð7Ñ7ØÐÐÑØ>Ø.2ÐÐ2Ð2Ð2Ñ2Ø6Ø€JÐÐÐÑØ 0€JÐ0Ð0Ð0Ñ0ØOØOàðð ð ñ „Xðð8 ð
ð 
ð 
ñ „Xð
ð ð'ð 'ð 'ñ „Xð'ð!ð !ð !ð !ð8 %)Ø:>ð	
.ð 
.ð 
.ð 
.ð 
.ð	2ð 	2ð 	2ð 	2ðð ð ð ð2 %)Ø?Cð	.ð .ð .ð .ð .ð .ð .r0   rð   )r&   r'   r(   r)   )FFN)r4   r5   r6   r7   r8   r)   r9   r)   r:   r;   r<   r   r(   r   )FN)r4   r5   r6   r'   r9   r)   r:   rK   r<   r   r(   r   ):Ú
__future__r   Úconcurrent.futuresr   r   Útypingr   r   r   r	   r
   r   r   r   Úlangchain_core._api.deprecationr   Ú langchain_core.callbacks.managerr   r   Ú#langchain_core.language_models.llmsr   Úlangchain_core.outputsr   r   r   Úlangchain_core.utilsr   Úpydanticr   r   r   Ú&langchain_community.utilities.vertexair   r   r   r   rþ   r   r   Úgoogle.cloud.aiplatform.modelsr    r  r"   Ú)vertexai.language_models._language_modelsr#   r$   rµ   r%   rÌ   Ústream_completion_with_retryr/   r3   rJ   rQ   rS   rn   r5   rð   r,   r0   r.   ú<module>r/     s{  ðØ "Ð "Ð "Ð "Ð "Ð "à ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ Và 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ )Ð )Ð )Ð )Ð )Ð )Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ð ð ð ð ð ð ð 9ðð ð ð ð ð ð ð ð :Ð9Ð9Ð9Ð9Ð9Ø0Ð0Ð0Ð0Ð0Ð0ðð ð ð ð ð ð ð ð 9Ð8Ð8Ð8Ð8Ð8ð Ð Ø#Ð ð ð  ð  ð  ð
=ð =ð =ð =ð ØØ6:ð?ð ?ð ?ð ?ð ?ð< Ø;?ð	Fð Fð Fð Fð Fð.!ð !ð !ð !ð !�Iñ !ô !ð !ð2Lð Lð Lð Lð L�mñ Lô Lð Lð^ €Ø
ØØ;ðñ ô ð
vð vð vð vð vˆ ñ vô vñô ð
vðr €Ø
ØØFðñ ô ð
I.ð I.ð I.ð I.ð I.˜-¨ñ I.ô I.ñô ð
I.ð I.ð I.r0   