Ë
    µŒj¯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Z1d"d„Z2d"d„Z3	 	 	 d#	 	 	 	 	 	 	 	 	 	 	 	 	 d$d„Z4	 	 d%	 	 	 	 	 	 	 	 	 	 	 d&d„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 „ d!e6e«      «       Z9y)'é    )Ú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)ÚImageNc                ó
   — d| v S )z/Return True if the model name is a Codey model.Úcode© ©Ú
model_names    úk/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/vertexai.pyÚis_codey_modelr,   *   s   € à�ZÐÐó    c                ó   — | duxr d| v S )z0Return True if the model name is a Gemini model.NÚgeminir(   r)   s    r+   Úis_gemini_modelr0   /   s   € à˜TÐ!Ò< h°*Ð&<Ð<r-   ÚVertexAIc                ó^   ‡ ‡— t        ‰ |¬«      }|	 d	 	 	 	 	 	 	 dˆ ˆfd„«       } |||fi |¤ŽS )ú*Use tenacity to retry the completion call.©Úrun_managerc                óÈ   •— |r‰j                   j                  | ‰|¬«      S ‰r  ‰j                   j                  | d   fi |¤ŽS  ‰j                   j                  | d   fi |¤ŽS )N)ÚstreamÚgeneration_configr   )ÚclientÚgenerate_contentÚpredict_streamingÚpredict)ÚpromptÚ	is_geminiÚkwargsÚllmr7   s      €€r+   Ú_completion_with_retryz5completion_with_retry.<locals>._completion_with_retry?   sp   ø€ ñ Ø—:‘:×.Ñ.Ø˜v¸ð /ó ð ñ Ø3�s—z‘z×3Ñ3°F¸1±IÑHÀÑHÐHØ%�3—:‘:×%Ñ% f¨Q¡iÑ:°6Ñ:Ð:r-   ©F)r=   úList[Union[str, 'Image']]r>   Úboolr?   r   Úreturnr   ©r   )r@   r=   r7   r>   r5   r?   Úretry_decoratorrA   s   ` `     r+   Úcompletion_with_retryrH   4   sZ   ù€ ô -¨S¸kÔJ€Oàà=Bð
;Ø)ð
;Ø6:ð
;ØNQð
;à	õ
;ó ð
;ñ " &¨)Ñ>°vÑ>Ð>r-   c              ‹  óv   ‡ K  — t        ‰ |¬«      }|	 d	 	 	 	 	 	 	 dˆ fd„«       } |||fi |¤Žƒ d{  –—† S 7 Œ­w)r3   r4   c              ›  ó¬   •K  — |r%‰j                   j                  | |¬«      ƒ d {  –—† S  ‰j                   j                  | fi |¤Žƒ d {  –—† S 7 Œ)7 Œ­w)N)r8   )r9   Úgenerate_content_asyncÚpredict_async)r=   r>   r?   r@   s      €r+   Ú_acompletion_with_retryz7acompletion_with_retry.<locals>._acompletion_with_retryY   s_   øè ø€ ñ ØŸ™×:Ñ:Ø¨&ð ;ó ÷ ð ð .�S—Z‘Z×-Ñ-¨fÑ?¸Ñ?×?Ð?ðøð @ús!   ƒ#A¦A§$AÁAÁAÁANrB   )r=   Ústrr>   rD   r?   r   rE   r   rF   )r@   r=   r>   r5   r?   rG   rM   s   `      r+   Úacompletion_with_retryrO   O   sj   øè ø€ ô -¨S¸kÔJ€Oàà',ð@Øð@Ø $ð@Ø8;ð@à	ô@ó ð@ñ )¨°ÑE¸fÑE×EÐEÐEús   ƒ/9²7³9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y)Ú_VertexAIBaser(   )Úprotected_namespacesNúOptional[str]Úprojectzus-central1rN   Úlocationé   ÚintÚrequest_parallelismé   Úmax_retriesT©ÚdefaultÚexcludezClassVar[Optional[Executor]]Útask_executorúOptional[List[str]]Ústopr*   c                óT   — | j                   €t        |¬«      | _         | j                   S )N)Úmax_workers)r^   r   )ÚclsrX   s     r+   Ú_get_task_executorz _VertexAIBase._get_task_executorx   s(   € à×ÑÐ$Ü 2Ð?RÔ SˆCÔØ× Ñ Ð r-   )rV   )rX   rW   rE   r   )Ú__name__Ú
__module__Ú__qualname__r   Úmodel_configrT   Ú__annotations__rU   rX   rZ   r   r^   r`   r*   Úclassmethodrd   r(   r-   r+   rQ   rQ   f   sƒ   … Ù°2Ô6€Là!€Gˆ]Ó!ØBØ!€HˆcÓ!Ø8Ø Ð˜Ó ØPØØ€K�ÓØ@Ù27ÀÈdÔ2S€MÐ/ÓSØ $€DÐ
Ó$Ø9Ø $€J�Ó$Øàó!ó ñ!r-   rQ   c                  óF  — 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%	 	 	 	 	 	 	 d&d „Zy)'Ú_VertexAICommonNz'_LanguageModel'r9   Úclient_previewrN   r*   g        ÚfloatÚtemperatureé€   rW   Úmax_output_tokensgffffffî?Útop_pé(   Útop_kTr[   r   Úcredentialsé   ÚnFrD   Ú	streamingc                 ó   — y)NÚvertexair(   ©Úselfs    r+   Ú	_llm_typez_VertexAICommon._llm_type—   s   € àr-   c                ó,   — t        | j                  «      S ©N)r,   r*   r{   s    r+   r,   z_VertexAICommon.is_codey_model›   s   € ä˜dŸo™oÓ.Ð.r-   c                ó,   — t        | j                  «      S r   )r0   r*   r{   s    r+   Ú_is_gemini_modelz _VertexAICommon._is_gemini_modelŸ   s   € ä˜tŸ™Ó/Ð/r-   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Ñ5IÐJÐJr-   c                ó¶   — | j                   | j                  | j                  dœ}| j                  s(|j	                  | j
                  | j                  dœ«       |S )N)ro   rq   Úcandidate_count)rt   rr   )ro   rq   rw   r,   Úupdatert   rr   )r|   Úparamss     r+   rƒ   z_VertexAICommon._default_params¨   sU   € ð  ×+Ñ+Ø!%×!7Ñ!7Ø#Ÿv™vñ
ˆð
 ×"Ò"Ø�M‰Mà!ŸZ™ZØ!ŸZ™Zñôð ˆr-   c                ó~   — g d¢}|j                  «       D ��ci c]  \  }}||v sŒ||“Œ }}}t        di |¤Ž y c c}}w )N)rT   rU   ru   r(   )Úitemsr   )rc   ÚvaluesÚallowed_paramsÚkÚvrˆ   s         r+   Ú_try_init_vertexaiz"_VertexAICommon._try_init_vertexai¸   sD   € â?ˆØ#)§<¡<¤>ÔI¡>™4˜1˜a°Q¸.Ò5H�!�Q‘$ >ˆÑIÜÑ˜ÒØùó Js   ˜9¥9c                ó  — |xs | j                   }ddi}|j                  «       D ��ci c]  \  }}|j                  ||«      |“Œ }}}i | j                  ¥d|i¥|¥}|s| j                  r|j                  d«       |S c c}}w )Nrw   r†   Ústop_sequences)r`   rŠ   Úgetrƒ   rx   Úpop)	r|   r`   r7   r?   r‘   Úparams_mappingr�   rŽ   rˆ   s	            r+   Ú_prepare_paramsz_VertexAICommon._prepare_params¿   s‹   € ð Ò* §¡ˆØÐ0Ð1ˆØ:@¿,¹,¼.ÔI¹.±$°!°Q�.×$Ñ$ Q¨Ó*¨AÑ-¸.ˆÑIØU�D×(Ñ(ÐUÐ*:¸NÑUÈfÐUˆÙ�T—^’^Ø�J‰JÐ(Ô)Øˆùó	 Js   ¨A=©rE   rN   ©rE   rD   )rE   zDict[str, Any])r‹   r	   rE   ÚNone)NF)r`   r_   r7   rD   r?   r   rE   Údict)re   rf   rg   r9   ri   rm   ro   rq   rr   rt   r   ru   rw   rx   Úpropertyr}   r,   r�   r„   rƒ   rj   r�   r•   r(   r-   r+   rl   rl      s8  … Ø#€FÐÓ#Ø'+€NÐ$Ó+ØƒOØØ€K�ÓØTØ Ð�sÓ ØOØ€Eˆ5ÓØMØNØ€Eˆ3ƒOØOØNÙ T°4Ô8€K�Ó8ØRØSØØ€A€sƒJØ;Ø€IˆtÓØ/àòó ðð ò/ó ð/ð ò0ó ð0ð òKó ðKð òó ðð òó ðð %)Øðà!ðð ðð ð	ð
 
ôr-   rl   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	 	 	 	 	 	 	 	 	 dd„Zy)r1   z'Google Vertex AI large language models.z
text-bisonrN   r*   NrS   Útuned_model_namec                 ó   — y)NTr(   r{   s    r+   Úis_lc_serializablezVertexAI.is_lc_serializableÛ   s   € àr-   c                ó
   — g d¢S )z*Get the namespace of the langchain object.)Ú	langchainÚllmsrz   r(   )rc   s    r+   Úget_lc_namespacezVertexAI.get_lc_namespaceß   s
   € ò 1Ð0r-   c                ó  — |j                  d«      }|d   }t        |d   «      }| j                  |«       	 ddlm}m} ddlm} ddlm} |rddlm}	 t        |«      r|}
|}n|r	}
|	}n|}
|}|r)|
j                  |«      |d<   |j                  |«      |d	<   nC|r |
|¬
«      |d<    ||¬
«      |d	<   n(|
j                  |«      |d<   |j                  |«      |d	<   |d   r|d   dkD  rt        d«      ‚|S # t        $ r t        «        Y Œ/w xY w)ú7Validate that the python package exists in environment.rŸ   r*   r   )ÚCodeGenerationModelÚTextGenerationModel)r¨   )r©   )ÚGenerativeModelr9   rm   r)   rx   rw   rv   z3Only one candidate can be generated with streaming!)r’   r0   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*   r>   r¨   r©   ÚPreviewCodeGenerationModelÚPreviewTextGenerationModelrª   Ú	model_clsÚpreview_model_clss               r+   Úvalidate_environmentzVertexAI.validate_environmentä   sG  € ð "Ÿ:™:Ð&8Ó9ÐØ˜LÑ)ˆ
Ü# F¨<Ñ$8Ó9ˆ	Ø×Ñ˜vÔ&ð+	(÷õõñ õô ˜jÔ)Ø/�	Ø$>Ñ!ÙØ+�	Ø$3Ñ!à/�	Ø$>Ð!áØ#,×#<Ñ#<Ð=MÓ#N��xÑ Ø+<×+LÑ+LØ$ó,�Ð'Ò(ñ Ù'0¸JÔ'G�F˜8Ñ$Ù/@ÈJÔ/W�FÐ+Ò,à'0×'@Ñ'@ÀÓ'L�F˜8Ñ$Ø/@×/PÑ/PØ"ó0�FÐ+Ñ,ð �+Ò 6¨#¡;°¢?ÜÐRÓSÐSØˆøô ò 	(Ü%Ö'ð	(ús   ·B%C6 Ã6DÄDc                óœ   — 	 | j                   j                  |g«      }|j                  S # t        $ r t        «        Y j                  S w xY w)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.
        )rm   Úcount_tokensÚAttributeErrorr   Útotal_tokens)r|   ÚtextÚresults      r+   Úget_num_tokenszVertexAI.get_num_tokens  sP   € ð	(Ø×(Ñ(×5Ñ5°t°fÓ=ˆFð ×"Ñ"Ð"øô ò 	(Ü%Õ'à×"Ñ"Ð"ð	(ús   ‚* ªAÁ
Ac                ó†   — 	 |j                   |j                  dœ}t        |j                  |¬«      S # t        $ r d}Y Œ$w xY w)z1Converts a stream response to a generation chunk.)Ú
is_blockedÚsafety_attributesN)r»   Úgeneration_info)r¿   rÀ   Ú	Exceptionr   r»   )r|   ÚresponserÁ   s      r+   Ú_response_to_generationz VertexAI._response_to_generation.  sI   € ð	#à&×1Ñ1Ø%-×%?Ñ%?ñˆOô  H§M¡MÀ?ÔSÐSøô ò 	#Ø"ŠOð	#ús   ‚2 ²A ¿A c           	     óª  — |�|n| j                   } | j                  d||dœ|¤Ž}g }|D ]—  }	|r?t        d¬«      }
 | j                  |	f||dœ|¤ŽD ]  }|
|z  }
Œ	 |j	                  |
g«       ŒDt        | |	gf|| j                  |dœ|¤Ž}|j	                  |j                  D �cg c]  }| j                  |«      ‘Œ c}«       Œ™ t        |¬«      S c c}w )N©r`   r7   Ú ©r»   )r`   r5   ©r7   r>   r5   ©Úgenerationsr(   )
rx   r•   r   Ú_streamÚappendrH   r�   Ú
candidatesrÄ   r   )r|   Úpromptsr`   r5   r7   r?   Úshould_streamrˆ   rË   r=   Ú
generationÚchunkÚresÚrs                 r+   Ú	_generatezVertexAI._generate;  s
  € ð #)Ð"4™¸$¿.¹.ˆØ%�×%Ñ%ÐP¨4¸ÑPÈÑPˆØ.0ˆÛˆFÙÜ,°"Ô5�
Ø)˜TŸ\™\ØðØ!%°;ñØBHô�Eð  %Ñ'‘Jðð ×"Ñ" J <Õ0ä+ØØ�Hðð )Ø"×3Ñ3Ø +ñð ñ�ð ×"Ñ"Ø>A¿nºnÓM¹n¸�T×1Ñ1°!Õ4¸nÑMõð# ô(  [Ô1Ð1ùò Ns   Â#C
c           	   ‹  ó  K  —  | j                   dd|i|¤Ž}g }|D ]\  }t        | |f| j                  |dœ|¤Žƒ d {  –—† }|j                  |j                  D �	cg c]  }	| j                  |	«      ‘Œ c}	«       Œ^ t        |¬«      S 7 ŒJc c}	w ­w)Nr`   )r>   r5   rÊ   r(   )r•   rO   r�   rÍ   rÎ   rÄ   r   )
r|   rÏ   r`   r5   r?   rˆ   rË   r=   rÓ   rÔ   s
             r+   Ú
_ageneratezVertexAI._agenerate\  s¬   è ø€ ð &�×%Ñ%Ñ:¨4Ð:°6Ñ:ˆØˆÛˆFÜ.ØØðð ×/Ñ/Ø'ñ	ð
 ñ÷ ˆCð ×ÑØ:=¿.º.ÓI¹.°Q�×-Ñ-¨aÕ0¸.ÑIõð ô  [Ô1Ð1ðúò Jùs!   ‚9B»B¼BÁB
Á1BÂBc              +  óö   K  —  | j                   d|ddœ|¤Ž}t        | |gfd| j                  |dœ|¤ŽD ]A  }| j                  |«      }|r(|j	                  |j
                  || j                  ¬«       |–— ŒC y ­w)NTrÆ   rÉ   )rÒ   Úverboser(   )r•   rH   r�   rÄ   Úon_llm_new_tokenr»   rÙ   )r|   r=   r`   r5   r?   rˆ   Ústream_resprÒ   s           r+   rÌ   zVertexAI._streamr  s›   è ø€ ð &�×%Ñ%ÐG¨4¸ÑGÀÑGˆÜ0ØØˆHð
ð Ø×+Ñ+Ø#ñ
ð ô
ˆKð ×0Ñ0°Ó=ˆEÙØ×,Ñ,Ø—J‘JØØ ŸL™Lð -ô ð
 ‹Kñ
ùs   ‚A7A9r—   )rE   ú	List[str]©r‹   r	   rE   r	   )r»   rN   rE   rW   )rÃ   r#   rE   r   )NNN)rÏ   rÜ   r`   r_   r5   ú"Optional[CallbackManagerForLLMRun]r7   zOptional[bool]r?   r   rE   r   ©NN©
rÏ   rÜ   r`   r_   r5   ú'Optional[AsyncCallbackManagerForLLMRun]r?   r   rE   r   )
r=   rN   r`   r_   r5   rÞ   r?   r   rE   zIterator[GenerationChunk])re   rf   rg   Ú__doc__r*   ri   rŸ   rj   r¡   r¥   r   r¶   r½   rÄ   rÕ   r×   rÌ   r(   r-   r+   r1   r1   Î   s?  … ñ 2à"€J�Ó"Ø5Ø&*Ð�mÓ*ØDàòó ðð ò1ó ð1ð ò5ó ð5ón#ð$TØ.ðTà	óTð  %)Ø:>Ø!%ð2àð2ð "ð2ð 8ð	2ð
 ð2ð ð2ð 
ó2ðH %)Ø?Cð	2àð2ð "ð2ð =ð	2ð
 ð2ð 
ó2ð2 %)Ø:>ð	àðð "ðð 8ð	ð
 ðð 
#ô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y) ÚVertexAIModelGardenz-Vertex AI Model Garden large language models.Nz'PredictionServiceClient'r9   z'PredictionServiceAsyncClient'Úasync_clientrN   Úendpoint_idr_   Úallowed_model_argsr=   Ú
prompt_argÚgenerated_textrS   Ú
result_argc                óà   — 	 ddl m} ddlm}m} |d   st        d«      ‚ |d   › d�¬«      }t        d	¬
«      } ||¬«      |d<    ||¬«      |d<   |S # t
        $ r t        «        Y Œ\w xY w)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_infor9   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÷ð �iÒ ÜØTóð ñ 'Ø" :Ñ.Ð/Ð/IÐJô
ˆô &Ð-EÔFˆÙ2Ø)°{ô
ˆˆxÑñ ">Ø)°{ô"
ˆˆ~Ñð ˆøô% ò 	(Ü%Ö'ð	(ús   ‚A ÁA-Á,A-c                óz   — | j                   j                  | j                  | j                  | j                  ¬«      S )N)rT   rU   Úendpoint)r9   Úendpoint_pathrT   rU   ræ   r{   s    r+   rõ   z!VertexAIModelGarden.endpoint_pathÀ  s5   € à�{‰{×(Ñ(Ø—L‘LØ—]‘]Ø×%Ñ%ð )ó 
ð 	
r-   c                 ó   — y)NÚvertexai_model_gardenr(   r{   s    r+   r}   zVertexAIModelGarden._llm_typeÈ  s   € à&r-   c                ó‚  — 	 ddl m} ddlm} g }|D ]c  }| j
                  r3|j                  «       D ��ci c]  \  }}|| j
                  v sŒ||“Œ }	}}ni }	||	| j                  <   |j                  |	«       Œe |D �
cg c]  }
|j                  |
 |«       «      ‘Œ }}
|S # t        $ r t	        d«      ‚w xY wc c}}w c c}
w )Nr   )Újson_formatr!   zIprotobuf package not found, please install it with `pip install protobuf`)
Úgoogle.protobufrù   Úgoogle.protobuf.struct_pb2r"   r°   rç   rŠ   rè   rÍ   Ú	ParseDict)r|   rÏ   r?   rù   r"   Ú	instancesr=   r�   rŽ   ÚinstanceÚinstance_dictÚpredict_instancess               r+   Ú_prepare_requestz$VertexAIModelGarden._prepare_requestÌ  sä   € ð	Ý3Ý8ð ˆ	ÛˆFØ×&Ò&à%+§\¡\¤^ôÙ%3™T˜Q °q¸D×<SÑ<SÒ7S�A�q‘D ^ð ò ð �Ø(.ˆH�T—_‘_Ñ%Ø×Ñ˜XÕ&ð ñ PYó
ÙOX¸mˆK×!Ñ! -±³Õ9Èyð 	ð 
ð !Ð øô' ò 	Üð*óð ð	üóùò
s   ‚B ´B6ÁB6Á<B<ÂB3c                ó˜   —  | j                   |fi |¤Ž}| j                  j                  | j                  |¬«      }| j	                  |«      S )ú*Run the LLM on the given prompt and input.©rô   rý   )r  r9   r<   rõ   Ú_parse_response©r|   rÏ   r`   r5   r?   rý   rÃ   s          r+   rÕ   zVertexAIModelGarden._generateå  sK   € ð *�D×)Ñ)¨'Ñ<°VÑ<ˆ	Ø—;‘;×&Ñ&°×0BÑ0BÈiÐ&ÓXˆØ×#Ñ# HÓ-Ð-r-   c                óº   — g }|j                   D ]:  }|j                  |D �cg c]  }t        | j                  |«      ¬«      ‘Œ c}«       Œ< t	        |¬«      S c c}w )NrÈ   rÊ   )ÚpredictionsrÍ   r   Ú_parse_predictionr   )r|   r  rË   r¼   Ú
predictions        r+   r  z#VertexAIModelGarden._parse_responseñ  sd   € Ø.0ˆØ!×-Ô-ˆFØ×Ññ '-óá&,˜
ô  D×$:Ñ$:¸:Ó$FÖGØ&,ñõð .ô  [Ô1Ð1ùòs   ¡"A
c                ó  — t        |t        «      r|S | j                  r	 || j                     S |S # t        $ rP t        |t        «      r'd| j                  › dt	        |«      › d�}t        |«      ‚t        | j                  › d�«      ‚w xY w)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!)Ú
isinstancerN   rê   ÚKeyErrorÚtyper±   )r|   r
  Ú
error_descs      r+   r	  z%VertexAIModelGarden._parse_predictionü  s¢   € Ü�j¤#Ô&ØÐà�?Š?ðXØ! $§/¡/Ñ2Ð2ð Ðøô ò XÜ˜j¬#Ô.àEØŸ?™?Ð+Ð+IÜ 
Ó+Ð,ð -*ð*ð ô % ZÓ0Ð0ä$¨¯©Ð'8Ð8UÐ%VÓWÐWðXús
    1 ±AB
c              ‹  ó´   K  —  | j                   |fi |¤Ž}| j                  j                  | j                  |¬«      ƒ d{  –—† }| j	                  |«      S 7 Œ­w)r  r  N)r  rå   r<   rõ   r  r  s          r+   r×   zVertexAIModelGarden._agenerate  sb   è ø€ ð *�D×)Ñ)¨'Ñ<°VÑ<ˆ	Ø×*Ñ*×2Ñ2Ø×'Ñ'°9ð 3ó 
÷ 
ˆð ×#Ñ# HÓ-Ð-ð
ús   ‚>AÁ AÁArÝ   r–   )rÏ   rÜ   r?   r   rE   zList['Value']rß   )
rÏ   rÜ   r`   r_   r5   rÞ   r?   r   rE   r   )r  z'Prediction'rE   r   )r
  r   rE   rN   rà   )re   rf   rg   râ   r9   ri   rå   rç   rè   rê   r   r¶   rš   rõ   r}   r  rÕ   r  r	  r×   r(   r-   r+   rä   rä   Œ  s"  … ñ 8ð 	ð Ð%ó ð 	ð Ð0ó ð ÓØ>Ø.2ÐÐ+Ó2Ø6Ø€J�ÓØ 0€J�Ó0ØOØOàòó ðð8 ò
ó ð
ð ò'ó ð'ó!ð8 %)Ø:>ð	
.àð
.ð "ð
.ð 8ð	
.ð
 ð
.ð 
ó
.ó	2óð2 %)Ø?Cð	.àð.ð "ð.ð =ð	.ð
 ð.ð 
ô.r-   rä   )r*   rN   rE   rD   )FFN)r@   r1   r=   rC   r7   rD   r>   rD   r5   rÞ   r?   r   rE   r   )FN)r@   r1   r=   rN   r>   rD   r5   rá   r?   r   rE   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,   r0   rH   rO   rQ   rl   r1   rä   r(   r-   r+   Ú<module>r     s„  ðÝ "ç ;ß V× VÓ Vå 6÷õ 8ß IÑ IÝ )ß 1Ñ 1÷ó ñ ÷õ :Ý0÷õ 9ð Ð Ø#Ð ó ó
=ð ØØ6:ð?Ø	ð?à%ð?ð ð?ð ð	?ð
 4ð?ð ð?ð 	ó?ð< Ø;?ð	FØ	ðFàðFð ðFð 9ð	Fð
 ðFð 	óFô.!�Iô !ô2L�mô Lñ^ Ø
ØØ;ôô
vˆ ó vóð
vñr Ø
ØØFôô
M.˜-¨ó M.óñ
M.r-   