
    Ng                        d dl mZ d dlZd dl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mZ d dlmZmZmZmZmZ  ej        e          Zdd
ZddZ G d dee
          ZdS )    )annotationsN)AnyCallableDictListOptional)
Embeddings)get_from_dict_or_envpre_init)	BaseModel
ConfigDict)before_sleep_logretryretry_if_exception_typestop_after_attemptwait_exponentialreturnCallable[[Any], Any]c            
     j   ddl } d}d}d}d}t          dt          |          t          |||          t	          | j        j        j                  t	          | j        j        j                  z  t	          | j        j        j	                  z  t          t          t          j                  	          S )
zKReturns a tenacity retry decorator, preconfigured to handle PaLM exceptionsr   N      <   
   T)
multiplierminmax)reraisestopwaitr   before_sleep)google.api_core.exceptionsr   r   r   r   api_core
exceptionsResourceExhaustedServiceUnavailableGoogleAPIErrorr   loggerloggingWARNING)googler   min_secondsmax_secondsmax_retriess        f/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/embeddings/google_palm.py_create_retry_decoratorr/      s    %%%%JKKK,,+VVV#FO$>$PQQ%fo&@&STTU%fo&@&OPPQ &fgo>>
 
 
 
    
embeddingsGooglePalmEmbeddingsargsr   kwargsc                L     t                      }|d fd            } ||i |S )z*Use tenacity to retry the completion call.r3   r   r4   r   c                 (     j         j        | i |S )N)clientgenerate_embeddings)r3   r4   r1   s     r.   _embed_with_retryz+embed_with_retry.<locals>._embed_with_retry0   s    4z 4dEfEEEr0   )r3   r   r4   r   r   r   )r/   )r1   r3   r4   retry_decoratorr9   s   `    r.   embed_with_retryr;   *   sV     .//OF F F F F _F d-f---r0   c                      e Zd ZU dZded<   ded<   dZded<   	 d	Zd
ed<   	  ed          Ze	dd            Z
ddZddZdS )r2   zGoogle's PaLM Embeddings APIs.r   r7   zOptional[str]google_api_keyzmodels/embedding-gecko-001str
model_nameFboolshow_progress_bar )protected_namespacesvaluesr   r   c                    t          |dd          }	 ddlm} |                    |           n# t          $ r t	          d          w xY w||d<   |S )z(Validate api key, python package exists.r=   GOOGLE_API_KEYr   N)api_keyz4Could not import google.generativeai python package.r7   )r
   google.generativeaigenerativeai	configureImportError)clsrD   r=   genais       r.   validate_environmentz)GooglePalmEmbeddings.validate_environmentC   s     .$&6
 
	V//////OONO3333 	V 	V 	VTUUU	V !xs	   0 A
texts	List[str]List[List[float]]c                      j         rA	 ddlm}  ||d          }n.# t          $ r t                              d           |}Y nw xY w|} fd|D             S )Nr   )tqdmr2   )desczgUnable to show progress bar because tqdm could not be imported. Please install with `pip install tqdm`.c                :    g | ]}                     |          S rB   )embed_query).0textselfs     r.   
<listcomp>z8GooglePalmEmbeddings.embed_documents.<locals>.<listcomp>b   s'    9994  &&999r0   )rA   rS   rK   r'   warning)rY   rO   rS   iter_s   `   r.   embed_documentsz$GooglePalmEmbeddings.embed_documentsT   s    ! 		%%%%%%U)?@@@   >    E999959999s    &AArX   List[float]c                >    t          | | j        |          }|d         S )zEmbed query text.	embedding)r;   r?   )rY   rX   r`   s      r.   rV   z GooglePalmEmbeddings.embed_queryd   s     $T4?DAA	%%r0   N)rD   r   r   r   )rO   rP   r   rQ   )rX   r>   r   r^   )__name__
__module____qualname____doc____annotations__r?   rA   r   model_configr   rN   r]   rV   rB   r0   r.   r2   r2   7   s         ((KKK!!!!2J2222#####J:2666L   X : : : : & & & & & &r0   )r   r   )r1   r2   r3   r   r4   r   r   r   )
__future__r   r(   typingr   r   r   r   r   langchain_core.embeddingsr	   langchain_core.utilsr
   r   pydanticr   r   tenacityr   r   r   r   r   	getLoggerra   r'   r/   r;   r2   rB   r0   r.   <module>rn      sD   " " " " " "  6 6 6 6 6 6 6 6 6 6 6 6 6 6 0 0 0 0 0 0 ? ? ? ? ? ? ? ? * * * * * * * *              
	8	$	$   ,
. 
. 
. 
.0& 0& 0& 0& 0&9j 0& 0& 0& 0& 0&r0   