§
    æ˜ºh0K  ã                  óø  — 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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Z.dZ/dZ0d0d„Z1d0d„Z2	 	 	 d1d2d!„Z/	 	 d3d4d#„Z3 G d$„ d%e¦  «        Z4 G d&„ d'e4¦  «        Z5 ed(d)d*¬+¦  «         G d,„ de5e¦  «        ¦   «         Z6 ed(d)d-¬+¦  «         G d.„ d/e4e¦  «        ¦   «         Z7dS )5é    )Úannotations)ÚExecutorÚThreadPoolExecutor)ÚTYPE_CHECKINGÚAnyÚClassVarÚDictÚIteratorÚListÚOptionalÚUnion)Ú
deprecated)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚBaseLLM)Ú
GenerationÚGenerationChunkÚ	LLMResult)Ú	BaseModelÚFieldÚroot_validator)Ú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 )z0Returns True if the model name is a Codey model.Úcode© ©r%   s    úi/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/llms/vertexai.pyÚis_codey_modelr.   *   s   € à�ZÐÐó    c                ó   — | duod| v S )z1Returns True if the model name is a Gemini model.NÚgeminir+   r,   s    r-   Úis_gemini_modelr2   /   s   € à˜TÐ!Ð< h°*Ð&<Ð<r/   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.©r9   Fr5   r6   r8   r(   r;   r   r'   c                óª   •— |r‰j                              | ‰|¬¦  «        S ‰r ‰j         j        | d         fi |¤ŽS  ‰j         j        | d         fi |¤ŽS )N)r7   Úgeneration_configr   )ÚclientÚgenerate_contentÚpredict_streamingÚpredict)r5   r8   r;   r3   r7   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Ð:Ð:Ð:r/   ©F)r5   r6   r8   r(   r;   r   r'   r   ©r   )r3   r5   r7   r8   r9   r;   Úretry_decoratorrE   s   ` `     r-   Úcompletion_with_retryrI   4   sj   øø€ õ -¨S¸kÐJÑJÔJ€Oàà=Bð
;ð 
;ð 
;ð 
;ð 
;ð 
;ð 
;ñ „_ð
;ð "Ð! &¨)Ð>Ð>°vÐ>Ð>Ð>r/   ú'Optional[AsyncCallbackManagerForLLMRun]c              ‹  ój   ‡ K  — t          ‰ |¬¦  «        }|	 ddˆ fd
„¦   «         } |||fi |¤Žƒ d{V —†S )r=   r>   Fr5   r&   r8   r(   r;   r   r'   c              ›  ó‚   •K  — |r"‰j                              | |¬¦  «        ƒ d {V —†S  ‰j         j        | fi |¤Žƒ d {V —†S )N)r@   )rA   Úgenerate_content_asyncÚpredict_async)r5   r8   r;   r3   s      €r-   Ú_acompletion_with_retryz7acompletion_with_retry.<locals>._acompletion_with_retryY   s„   øè è € ð ð 	Øœ×:Ò:Ø¨&ð ;ñ ô ð ð ð ð ð ð ð ð .�S”ZÔ-¨fÐ?Ð?¸Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?r/   NrF   )r5   r&   r8   r(   r;   r   r'   r   rG   )r3   r5   r8   r9   r;   rH   rO   s   `      r-   Úacompletion_with_retryrP   O   s�   øè è € õ -¨S¸kÐJÑJÔJ€Oàà',ð@ð @ð @ð @ð @ð @ñ „_ð@ð )Ð(¨°ÐEÐE¸fÐEÐEÐEÐEÐEÐEÐEÐEÐEr/   c                  ó°   — e Zd ZU 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 )Ú_VertexAIBaseNú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   )ÚclsrX   s     r-   Ú_get_task_executorz _VertexAIBase._get_task_executorv   s(   € àÔÐ$Ý 2Ð?RÐ SÑ SÔ SˆCÔØÔ Ð r/   )rV   )rX   rW   r'   r   )Ú__name__Ú
__module__Ú__qualname__rT   Ú__annotations__rU   rX   rZ   r   r^   r`   r%   Úclassmethodrd   r+   r/   r-   rR   rR   f   sÕ   € € € € € € Ø!€GÐ!Ð!Ð!Ñ!ØBØ!€HÐ!Ð!Ð!Ñ!Ø8Ø ÐÐ Ð Ð Ñ ØPØØ€KÐÐÐÑØ@Ø27°%ÀÈdÐ2SÑ2SÔ2S€MÐSÐSÐSÑSØ $€DÐ$Ð$Ð$Ñ$Ø9Ø $€JÐ$Ð$Ð$Ñ$Øàð!ð !ð !ð !ñ „[ð!ð !ð !r/   rR   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'rA   Úclient_previewr&   r%   g        ÚfloatÚtemperatureé€   rW   Úmax_output_tokensgffffffî?Útop_pé(   Útop_kTr[   r   Úcredentialsé   ÚnFr(   Ú	streamingr'   c                ó   — dS )NÚvertexair+   ©Úselfs    r-   Ú	_llm_typez_VertexAICommon._llm_type•   s   € àˆzr/   c                ó*   — t          | j        ¦  «        S ©N)r.   r%   rz   s    r-   r.   z_VertexAICommon.is_codey_model™   s   € å˜dœoÑ.Ô.Ð.r/   c                ó*   — t          | j        ¦  «        S r~   )r2   r%   rz   s    r-   Ú_is_gemini_modelz _VertexAICommon._is_gemini_model�   s   € å˜tœÑ/Ô/Ð/r/   úDict[str, Any]c                ó&   — i d| j         i¥| j        ¥S )z Gets the identifying parameters.r%   )r%   Ú_default_paramsrz   s    r-   Ú_identifying_paramsz#_VertexAICommon._identifying_params¡   s   € ð K�< ¤Ð1ÐJ°TÔ5IÐJÐJr/   c                ó‚   — | j         | j        | j        dœ}| j        s"|                     | j        | j        dœ¦  «         |S )N)rn   rp   Úcandidate_count)rs   rq   )rn   rp   rv   r.   Úupdaters   rq   )r{   Úparamss     r-   rƒ   z_VertexAICommon._default_params¦   s_   € ð  Ô+Ø!%Ô!7Ø#œvð
ð 
ˆð
 Ô"ð 	Ø�MŠMà!œZØ!œZðð ñô ð ð ˆr/   Úvaluesr	   ÚNonec                óh   ‡— g d¢Šˆfd„|                      ¦   «         D ¦   «         }t          di |¤Ž d S )N)rT   rU   rt   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Ð5Hr/   r+   )Úitemsr   )rc   r‰   rˆ   r�   s      @r-   Ú_try_init_vertexaiz"_VertexAICommon._try_init_vertexai¶   sH   ø€ à?Ð?Ð?ˆØIÐIÐIÐI 6§<¢<¡>¤>ÐIÑIÔIˆÝÐÐ˜ÐÐÐØˆtr/   r`   r_   r7   r;   Údictc                ó¼   ‡— |p| j         }ddiŠˆfd„|                     ¦   «         D ¦   «         }i | j        ¥d|i¥|¥}|s| j        r|                     d¦  «         |S )Nrv   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ÐIr/   Ústop_sequences)r`   r’   rƒ   rw   Úpop)r{   r`   r7   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Ð(Ñ)Ô)Ð)Øˆr/   ©r'   r&   ©r'   r(   )r'   r�   )r‰   r	   r'   rŠ   )NF)r`   r_   r7   r(   r;   r   r'   r”   )re   rf   rg   rA   rh   rl   rn   rp   rq   rs   r   rt   rv   rw   Úpropertyr|   r.   r€   r„   rƒ   ri   r“   r›   r+   r/   r-   rk   rk   }   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ðð ðð ð ñ „[ðð %)Øðð ð ð ð ð ð r/   rk   z0.0.12z0.2.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 )1r4   z'Google Vertex AI large language models.z
text-bisonr&   r%   NrS   Útuned_model_namer'   r(   c                ó   — dS )NTr+   rz   s    r-   Úis_lc_serializablezVertexAI.is_lc_serializableÙ   s   € àˆtr/   ú	List[str]c                ó
   — g d¢S )z*Get the namespace of the langchain object.)Ú	langchainÚllmsry   r+   )rc   s    r-   Úget_lc_namespacezVertexAI.get_lc_namespaceÝ   s   € ð 1Ð0Ð0Ð0r/   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®   )ÚGenerativeModelrA   rl   r,   rw   rv   ru   z3Only one candidate can be generated with streaming!)r—   r2   r“   Úvertexai.language_modelsr­   r®   Ú vertexai.preview.language_modelsÚ"vertexai.preview.generative_modelsr¯   r.   Úget_tuned_modelÚfrom_pretrainedÚImportErrorr   Ú
ValueError)rc   r‰   r£   r%   r8   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$ÚtextrW   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.
        )rl   Ú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   ‚ ’! !Úpromptsr`   r_   r9   r:   r7   ú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©r`   r7   Ú ©r¼   )r`   r9   ©r7   r8   r9   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r+   ©rÉ   ©r�   Úrr{   s     €r-   ú
<listcomp>z&VertexAI._generate.<locals>.<listcomp>V  s'   ø€ ÐMÐMÐM¸�T×1Ò1°!Ñ4Ô4ÐMÐMÐMr/   ©Úgenerationsr+   )	rw   r›   r   Ú_streamÚappendrI   r€   Ú
candidatesr   )r{   rÊ   r`   r9   r7   r;   Úshould_streamrˆ   r×   r5   Ú
generationÚchunkÚress   `            r-   Ú	_generatezVertexAI._generate9  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Ð1r/   rJ   c              ‹  óØ   ‡ K  —  ‰ j         dd|i|¤Ž}g }|D ]D}t          ‰ |f‰ j        |dœ|¤Žƒ d {V —†}|                     ˆ fd„|j        D ¦   «         ¦  «         ŒEt          |¬¦  «        S )Nr`   )r8   r9   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r+   rÒ   rÓ   s     €r-   rÕ   z'VertexAI._agenerate.<locals>.<listcomp>l  s'   ø€ ÐIÐIÐI°Q�×-Ò-¨aÑ0Ô0ÐIÐIÐIr/   rÖ   r+   )r›   rP   r€   rÙ   rÚ   r   )	r{   rÊ   r`   r9   r;   rˆ   r×   r5   rÞ   s	   `        r-   Ú
_ageneratezVertexAI._agenerateZ  s×   øè è € ð &�Ô%Ð:Ð:¨4Ð:°6Ð:Ð:ˆØˆØð 
	ð 
	ˆFÝ.ØØðð Ô/Ø'ð	ð ð
 ðð ð ð ð ð ð ð ˆCð ×ÒØIÐIÐIÐI¸#¼.ÐIÑIÔIñô ð ð õ  [Ð1Ñ1Ô1Ð1r/   r5   úIterator[GenerationChunk]c              +  óÚ   K  —  | j         d|ddœ|¤Ž}t          | |gfd| j        |dœ|¤ŽD ]?}|                      |¦  «        }|V — |r"|                     |j        || j        ¬¦  «         Œ@d S )NTrÍ   rÐ   )rÝ   Úverboser+   )r›   rI   r€   rÉ   Úon_llm_new_tokenr¼   rå   )r{   r5   r`   r9   r;   rˆ   Ústream_resprÝ   s           r-   rØ   zVertexAI._streamp  sÅ   è è € ð &�Ô%ÐG¨4¸ÐGÐGÀÐGÐGˆÝ0ØØˆHð
ð ØÔ+Ø#ð
ð 
ð ð
ð 
ð 	ð 	ˆKð ×0Ò0°Ñ=Ô=ˆEØˆKˆKˆKØð Ø×,Ò,Ø”JØØ œLð -ñ ô ð øð	ð 	r/   r�   )r'   r¦   ©r‰   r	   r'   r	   )r¼   r&   r'   rW   )rÃ   r"   r'   r   )NNN)rÊ   r¦   r`   r_   r9   r:   r7   rË   r;   r   r'   r   ©NN©
rÊ   r¦   r`   r_   r9   rJ   r;   r   r'   r   )
r5   r&   r`   r_   r9   r:   r;   r   r'   rã   )re   rf   rg   Ú__doc__r%   rh   r£   ri   r¥   rª   r   r»   rÂ   rÉ   rß   râ   rØ   r+   r/   r-   r4   r4   Ì   sB  € € € € € € ð 2Ð1à"€JÐ"Ð"Ð"Ñ"Ø5Ø&*ÐÐ*Ð*Ð*Ñ*ØDàðð ð ñ „[ðð ð1ð 1ð 1ñ „[ð1ð €^ÑÔð5ð 5ð 5ñ Ôð5ðn#ð #ð #ð #ð$Tð Tð Tð Tð  %)Ø:>Ø!%ð2ð 2ð 2ð 2ð 2ðH %)Ø?Cð	2ð 2ð 2ð 2ð 2ð2 %)Ø:>ð	ð ð ð ð ð ð r/   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ÚVertexAIModelGardenz9Large language models served from Vertex AI Model Garden.Nz'PredictionServiceClient'rA   z'PredictionServiceAsyncClient'Úasync_clientr&   Úendpoint_idr_   Úallowed_model_argsr5   Ú
prompt_argÚgenerated_textrS   Ú
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   rT   zBA GCP project should be provided to run inference on Model Garden!rU   z-aiplatform.googleapis.com)Úapi_endpointzvertex-ai-model-garden)Úmodule)Úclient_optionsÚclient_inforA   rî   )	Úgoogle.api_core.client_optionsrõ   Úgoogle.cloud.aiplatform.gapicr   r   rµ   r   r¶   r   )rc   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)rT   rU   Úendpoint)rA   Úendpoint_pathrT   rU   rï   rz   s    r-   rþ   z!VertexAIModelGarden.endpoint_pathº  s1   € àŒ{×(Ò(Ø”LØ”]ØÔ%ð )ñ 
ô 
ð 	
r/   c                ó   — dS )NÚvertexai_model_gardenr+   rz   s    r-   r|   zVertexAIModelGarden._llm_typeÂ  s   € à&Ð&r/   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Ð7Sr/   c                óL   •— g | ] }‰                      | ‰¦   «         ¦  «        ‘Œ!S r+   )Ú	ParseDict)r�   Úinstance_dictr!   r  s     €€r-   rÕ   z8VertexAIModelGarden._prepare_request.<locals>.<listcomp>Ú  s<   ø€ ð 
ð 
ð 
Ø>KˆK×!Ò! -°°±´Ñ9Ô9ð
ð 
ð 
r/   )	Úgoogle.protobufr  Úgoogle.protobuf.struct_pb2r!   rµ   rð   r’   rñ   rÙ   )	r{   rÊ   r;   Ú	instancesr5   Ú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   … ’,r`   r9   r:   r   c                óŠ   —  | j         |fi |¤Ž}| j                             | j        |¬¦  «        }|                      |¦  «        S )ú*Run the LLM on the given prompt and input.©rý   r
  )r  rA   rD   rþ   Ú_parse_response©r{   rÊ   r`   r9   r;   r
  rÃ   s          r-   rß   zVertexAIModelGarden._generateß  sO   € ð *�DÔ)¨'Ð<Ð<°VÐ<Ð<ˆ	Ø”;×&Ò&°Ô0BÈiÐ&ÑXÔXˆØ×#Ò# HÑ-Ô-Ð-r/   Ú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ðð ð r/   rÖ   )r  rÙ   r   )r{   r  r×   rÁ   s   `   r-   r  z#VertexAIModelGarden._parse_responseë  sp   ø€ Ø.0ˆØ!Ô-ð 	ð 	ˆFØ×Òðð ð ð à&,ðñ ô ñô ð ð õ  [Ð1Ñ1Ô1Ð1r/   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rJ   c              ‹  óš   K  —  | j         |fi |¤Ž}| j                             | j        |¬¦  «        ƒ d{V —†}|                      |¦  «        S )r  r  N)r  rî   rD   rþ   r  r  s          r-   râ   zVertexAIModelGarden._agenerate  s{   è è € ð *�DÔ)¨'Ð<Ð<°VÐ<Ð<ˆ	ØÔ*×2Ò2ØÔ'°9ð 3ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆð ×#Ò# HÑ-Ô-Ð-r/   rè   rœ   )rÊ   r¦   r;   r   r'   r  ré   )
rÊ   r¦   r`   r_   r9   r:   r;   r   r'   r   )r  r  r'   r   )r  r   r'   r&   rê   )re   rf   rg   rë   rA   rh   rî   rð   rñ   ró   r   r»   rž   rþ   r|   r  rß   r  r  râ   r+   r/   r-   rí   rí   Š  sr  € € € € € € ð DÐCà(,€FÐ,Ð,Ð,Ñ,Ø37€LÐ7Ð7Ð7Ñ7ØÐÐÑØ>Ø.2ÐÐ2Ð2Ð2Ñ2Ø6Ø€JÐÐÐÑØ 0€JÐ0Ð0Ð0Ñ0ØOØOà€^ÑÔðð ð ñ Ôðð8 ð
ð 
ð 
ñ „Xð
ð ð'ð 'ð 'ñ „Xð'ð!ð !ð !ð !ð8 %)Ø:>ð	
.ð 
.ð 
.ð 
.ð 
.ð	2ð 	2ð 	2ð 	2ðð ð ð ð2 %)Ø?Cð	.ð .ð .ð .ð .ð .ð .r/   rí   )r%   r&   r'   r(   )FFN)r3   r4   r5   r6   r7   r(   r8   r(   r9   r:   r;   r   r'   r   )FN)r3   r4   r5   r&   r8   r(   r9   rJ   r;   r   r'   r   )8Ú
__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.pydantic_v1r   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É   rI   Ústream_completion_with_retryr.   r2   rP   rR   rk   r4   rí   r+   r/   r-   ú<module>r+     so  ðØ "Ð "Ð "Ð "Ð "Ð "à ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 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Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ Gðð ð ð ð ð ð ð ð ð ð ð ð ð 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ñ !ô !ð !ð.Lð 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.r/   