Ë
    µŒj|"  ã                  ó  — d dl m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 d dlmZmZ d dlmZmZ d d	lmZ d d
lmZ 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Z e	dd¬«       G d„ dee«      «       Zy)é    )Úannotations)ÚAnyÚDictÚIteratorÚListÚOptional)Ú
deprecated)ÚCallbackManagerForLLMRun)ÚLanguageModelInput)Ú
GenerationÚGenerationChunkÚ	LLMResult)Úget_from_dict_or_envÚpre_init)Ú	BaseModelÚ	SecretStr)ÚBaseLLM)Úcreate_retry_decoratorNÚ
GooglePalmc                óv   ‡ — t        ‰ ‰ j                  |¬«      }|	 	 	 	 	 	 	 	 	 	 dˆ fd„«       } |d|||dœ|¤ŽS )z*Use tenacity to retry the completion call.)Úmax_retriesÚrun_managerc                ó¤   •— |j                  di «      }|r‰j                  j                  | ||¬«      S  ‰j                  j                  dd| i|¤ŽS )NÚgeneration_config)ÚcontentsÚstreamr   Úprompt© )ÚgetÚclientÚgenerate_contentÚgenerate_text)r   Ú	is_geminir   Úkwargsr   Úllms        €ún/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/google_palm.pyÚ_completion_with_retryz5completion_with_retry.<locals>._completion_with_retry   s_   ø€ ð #ŸJ™JÐ':¸BÓ?ÐÙØ—:‘:×.Ñ.Ø¨ÐBSð /ó ð ð (ˆs�z‰z×'Ñ'Ñ@¨vÐ@¸Ñ@Ð@ó    )r   r#   r   )
r   r   r#   Úboolr   r)   r$   r   Úreturnr   r   )r   r   )r%   r   r#   r   r   r$   Úretry_decoratorr'   s   `       r&   Úcompletion_with_retryr,      s€   ø€ ô -Ø˜Ÿ™°kô€Oð ðAØ"ðAØ/3ðAØ=AðAØMPðAà	ôAó ðAñ "ð Ø °6ñØ=Cñð r(   c                ó
   — d| v S )NÚgeminir   ©Ú
model_names    r&   Ú_is_gemini_modelr1   -   s   € Ø�zÐ!Ð!r(   c                óv   — t        d„ | j                  d«      dd D «       «      }|r| j                  dd«      S | S )z°Strip erroneous leading spaces from text.

    The PaLM API will sometimes erroneously return a single leading space in all
    lines > 1. This function strips that space.
    c              3  ó6   K  — | ]  }| xs |d    dk(  –— Œ y­w)r   Ú Nr   )Ú.0Úlines     r&   Ú	<genexpr>z2_strip_erroneous_leading_spaces.<locals>.<genexpr>7   s%   è ø€ ÐXÑCW¸4 ˜HÒ6¨¨Q©°3©Ó6ÑCWùs   ‚Ú
é   Nz
 )ÚallÚsplitÚreplace)ÚtextÚhas_leading_spaces     r&   Ú_strip_erroneous_leading_spacesr?   1   s@   € ô ÑXÀ4Ç:Á:ÈdÓCSÐTUÐTVÑCWÓXÓXÐÙØ�|‰|˜E 4Ó(Ð(àˆr(   z0.0.12z)langchain_google_genai.GoogleGenerativeAI)Úalternative_importc                  óJ  — e Zd ZU 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<   	 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	 	 d$	 	 	 	 	 	 	 	 	 d%d„Z	 	 d$	 	 	 	 	 	 	 	 	 d&d„Zed'd„«       Zd(d„Zy))r   zg
    DEPRECATED: Use `langchain_google_genai.GoogleGenerativeAI` instead.

    Google PaLM models.
    r   r    zOptional[SecretStr]Úgoogle_api_keyzmodels/text-bison-001Ústrr0   gffffffæ?ÚfloatÚtemperatureNzOptional[float]Útop_pzOptional[int]Útop_kÚmax_output_tokensr9   ÚintÚné   r   c                ó,   — t        | j                  «      S )z=Returns whether a model is belongs to a Gemini family or not.)r1   r0   ©Úselfs    r&   r#   zGooglePalm.is_gemini\   s   € ô   §¡Ó0Ð0r(   c                ó
   — ddiS )NrB   ÚGOOGLE_API_KEYr   rM   s    r&   Ú
lc_secretszGooglePalm.lc_secretsa   s   € à Ð"2Ð3Ð3r(   c                 ó   — y)NTr   rM   s    r&   Úis_lc_serializablezGooglePalm.is_lc_serializablee   s   € àr(   c                ó
   — g d¢S )z*Get the namespace of the langchain object.)Ú	langchainÚllmsÚgoogle_palmr   )Úclss    r&   Úget_lc_namespacezGooglePalm.get_lc_namespacei   s
   € ò 4Ð3r(   c                ó   — t        |dd«      }|d   }	 ddlm} t        |t        «      r|j                  «       }|j                  |¬«       t        |«      r|j                  |¬«      |d<   n||d<   |d
   �%d|d
   cxk  rdk  st        d«      ‚ t        d«      ‚|d   �%d|d   cxk  rdk  st        d«      ‚ t        d«      ‚|d   �|d   dk  rt        d«      ‚|d   �|d   dk  rt        d«      ‚|S # t        $ r t        d	«      ‚w xY w)z(Validate api key, python package exists.rB   rP   r0   r   N)Úapi_keyr/   r    znCould not import google-generativeai python package. Please install it with `pip install google-generativeai`.rE   r9   z+temperature must be in the range [0.0, 1.0]rF   z%top_p must be in the range [0.0, 1.0]rG   ztop_k must be positiverH   z+max_output_tokens must be greater than zero)r   Úgoogle.generativeaiÚgenerativeaiÚ
isinstancer   Úget_secret_valueÚ	configurer1   ÚGenerativeModelÚImportErrorÚ
ValueError)rX   ÚvaluesrB   r0   Úgenais        r&   Úvalidate_environmentzGooglePalm.validate_environmentn   s`  € ô .ØÐ$Ð&6ó
ˆð ˜LÑ)ˆ
ð	Ý/ä˜.¬)Ô4Ø!/×!@Ñ!@Ó!B�à�O‰O NˆOÔ3ä 
Ô+Ø#(×#8Ñ#8ÀJÐ#8Ó#O��xÒ à#(��xÑ ð �-Ñ Ð,°Q¸&ÀÑ:OÔ5TÐSTÒ5TÜÐJÓKÐKð 6UÜÐJÓKÐKà�'‰?Ð&¨q°F¸7±OÔ/HÀqÒ/HÜÐDÓEÐEð 0IÜÐDÓEÐEà�'‰?Ð&¨6°'©?¸aÒ+?ÜÐ5Ó6Ð6àÐ%Ñ&Ð2°vÐ>QÑ7RÐVWÒ7WÜÐJÓKÐKàˆøô% ò 	ÜðLóð ð	ús   ”AC8 Ã8Dc                óÖ  — g }|| j                   | j                  | j                  | j                  | j                  dœ}|D �]  }| j
                  r‘t        | |dd||¬«      }|j                  D �	�
cg c]?  }	dj                  |	j                  j                  D �
cg c]  }
|
j                  ‘Œ c}
«      ‘ŒA }}	}
|j                  |D �	cg c]  }	t        |	¬«      ‘Œ c}	«       Œ¡t        | f| j                  |dd|dœ|¤Ž}g }|j                  D ]-  }|d   }t        |«      }|j                  t        |¬«      «       Œ/ |j                  |«       �Œ t!        |¬	«      S c c}
w c c}
}	w c c}	w )
N)Ústop_sequencesrE   rF   rG   rH   Úcandidate_countFT)r   r   r#   r   r   Ú ©r=   )Úmodelr   r   r#   r   Úoutput)Úgenerations)rE   rF   rG   rH   rJ   r#   r,   Ú
candidatesÚjoinÚcontentÚpartsr=   Úappendr   r0   r?   r   )rN   ÚpromptsÚstopr   r$   rn   r   r   ÚresÚcÚpro   Úprompt_generationsÚ	candidateÚraw_textÚstripped_texts                   r&   Ú	_generatezGooglePalm._generate•   sp  € ð /1ˆà"Ø×+Ñ+Ø—Z‘ZØ—Z‘ZØ!%×!7Ñ!7Ø#Ÿv™vñ
Ðô ˆFØ�~Š~Ü+ØØ!Ø Ø"Ø +Ø&7ô�ð ILÏÊôÙHVÀ1�B—G‘G¨Q¯Y©Y¯_ª_Ó=©_¨˜QŸV›V¨_Ñ=Õ>Èð ñ ð ×"Ñ"Á
Ó#KÁ
¸1¤J°AÖ$6À
Ñ#KÕLä+ØðàŸ/™/Ø!Ø Ø#Ø +ñð (ñ�ð &(Ð"Ø!$§¤�IØ(¨Ñ2�HÜ$CÀHÓ$M�MØ&×-Ñ-¬j¸mÔ.LÕMð "0ð ×"Ñ"Ð#5Ö6ð; ô>  [Ô1Ð1ùò) >ùóùò $Ls   Á0(E ÂEÂ+	E ÃE&
ÅE c              +  óô   K  — |j                  di «      }|r||d<   t        | |fdd||dœ|¤ŽD ]F  }t        |j                  ¬«      }|r(|j	                  |j                  || j
                  ¬«       |–— ŒH y ­w)Nr   rh   T)r   r#   r   r   rk   )ÚchunkÚverbose)r   r,   r   r=   Úon_llm_new_tokenr€   )rN   r   ru   r   r$   r   Ústream_respr   s           r&   Ú_streamzGooglePalm._streamÆ   s�   è ø€ ð #ŸJ™JÐ':¸BÓ?ÐÙØ26ÐÐ.Ñ/Ü0ØØð
ð ØØ#Ø/ñ
ð ô
ˆKô $¨×)9Ñ)9Ô:ˆEÙØ×,Ñ,Ø×$Ñ$ØØ ŸL™Lð -ô ð
 ‹Kñ!
ùs   ‚A6A8c                 ó   — y)zReturn type of llm.rW   r   rM   s    r&   Ú	_llm_typezGooglePalm._llm_typeâ   s   € ð r(   c                óˆ   — | j                   rt        d«      ‚| j                  j                  | j                  |¬«      }|d   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.
        z%Counting tokens is not yet supported!)rl   r   Útoken_count)r#   rc   r    Úcount_text_tokensr0   )rN   r=   Úresults      r&   Úget_num_tokenszGooglePalm.get_num_tokensç   s?   € ð �>Š>ÜÐDÓEÐEØ—‘×.Ñ.°T·_±_ÈTÐ.ÓRˆØ�mÑ$Ð$r(   )r*   r)   )r*   zDict[str, str])r*   ú	List[str])rd   r   r*   r   )NN)
rt   r‹   ru   úOptional[List[str]]r   ú"Optional[CallbackManagerForLLMRun]r$   r   r*   r   )
r   rC   ru   rŒ   r   r�   r$   r   r*   zIterator[GenerationChunk])r*   rC   )r=   rC   r*   rI   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r0   rE   rF   rG   rH   rJ   r   Úpropertyr#   rQ   ÚclassmethodrS   rY   r   rf   r}   rƒ   r…   rŠ   r   r(   r&   r   r   >   sr  … ñð ƒKØ'Ó'Ø-€J�Ó-ØØ€K�Óðà!€Eˆ?Ó!ðXà€Eˆ=Óðà'+Ð�}Ó+ð(à€A€sƒJðIà€K�ÓØ@àò1ó ð1ð ò4ó ð4ð òó ðð ò4ó ð4ð ò$ó ð$ðR %)Ø:>ð	/2àð/2ð "ð/2ð 8ð	/2ð
 ð/2ð 
ó/2ðh %)Ø:>ð	àðð "ðð 8ð	ð
 ðð 
#óð8 òó ðô%r(   )FFN)r%   r   r   r   r#   r)   r   r)   r   r�   r$   r   r*   r   )r0   rC   r*   r)   )r=   rC   r*   rC   ) Ú
__future__r   Útypingr   r   r   r   r   Úlangchain_core._api.deprecationr	   Úlangchain_core.callbacksr
   Úlangchain_core.language_modelsr   Úlangchain_core.outputsr   r   r   Úlangchain_core.utilsr   r   Úpydanticr   r   Úlangchain_community.llmsr   Ú&langchain_community.utilities.vertexair   r,   r1   r?   r   r   r(   r&   Ú<module>rŸ      s®   ðÝ "ç 6Õ 6å 6Ý =Ý =ß IÑ Iß ?ß )å ,Ý Ið ØØ6:ðØ	ðàðð ðð ð	ð
 4ðð ðð 	óó:"ó
ñ ˆHÐ)TÔUôv%�˜)ó v%ó Vñv%r(   