§
    é˜ºho  ã                   ó€   — d dl mZmZmZ d dlmZ d dlmZ d dl	m
Z
mZmZmZ d dlmZ d dlmZ  G d„ de
e¦  «        ZdS )	é    )ÚDictÚListÚOptionalN)Ú
Embeddings)Ú	BaseModelÚFieldÚ	SecretStrÚroot_validator)Úget_from_dict_or_env)ÚGoogleGenerativeAIErrorc                   óÌ  — e Zd ZU dZ edd¬¦  «        Zeed<    edd¬¦  «        Ze	e         ed<    edd	¬¦  «        Z
e	e         ed
<    edd¬¦  «        Ze	e         ed<    edd¬¦  «        Ze	e         ed<    e¦   «         dedefd„¦   «         Z	 ddee         dede	e         deee                  fd„Z	 ddee         dedeee                  fd„Zdedee         fd„ZdS )ÚGoogleGenerativeAIEmbeddingsa  `Google Generative AI Embeddings`.

    To use, you must have either:

        1. The ``GOOGLE_API_KEY``` environment variable set with your API key, or
        2. Pass your API key using the google_api_key kwarg to the ChatGoogle
           constructor.

    Example:
        .. code-block:: python

            from langchain_google_genai import GoogleGenerativeAIEmbeddings

            embeddings = GoogleGenerativeAIEmbeddings(model="models/embedding-001")
            embeddings.embed_query("What's our Q1 revenue?")
    .zEThe name of the embedding model to use. Example: models/embedding-001)ÚdescriptionÚmodelNz•The task type. Valid options include: task_type_unspecified, retrieval_query, retrieval_document, semantic_similarity, classification, and clusteringÚ	task_typezaThe Google API key to use. If not provided, the GOOGLE_API_KEY environment variable will be used.Úgoogle_api_keyzXA dictionary of client options to pass to the Google API client, such as `api_endpoint`.Úclient_optionsz3A string, one of: [`rest`, `grpc`, `grpc_asyncio`].Ú	transportÚvaluesÚreturnc                 óô   — t          |dd¦  «        }t          |t          ¦  «        r|                     ¦   «         }t	          j        ||                     d¦  «        |                     d¦  «        ¬¦  «         |S )z@Validates params and passes them to google-generativeai package.r   ÚGOOGLE_API_KEYr   r   )Úapi_keyr   r   )r   Ú
isinstancer	   Úget_secret_valueÚgenaiÚ	configureÚget)Úclsr   r   s      úi/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_google_genai/embeddings.pyÚvalidate_environmentz1GoogleGenerativeAIEmbeddings.validate_environment:   sƒ   € õ .ØÐ$Ð&6ñ
ô 
ˆõ �n¥iÑ0Ô0ð 	?Ø+×<Ò<Ñ>Ô>ˆNåŒØ"Ø—j’j Ñ-Ô-Ø!Ÿ:š:Ð&6Ñ7Ô7ð	
ñ 	
ô 	
ð 	
ð
 ˆó    ÚtextsÚtitlec                 ó¬   — | j         pd}	 t          j        | j        |||¬¦  «        }n%# t          $ r}t          d|› �¦  «        |‚d }~ww xY w|d         S )NÚretrieval_document)r   Úcontentr   r$   zError embedding content: Ú	embedding)r   r   Úembed_contentr   Ú	Exceptionr   )Úselfr#   r   r$   ÚresultÚes         r    Ú_embedz#GoogleGenerativeAIEmbeddings._embedJ   sˆ   € ð ”NÐ:Ð&:ˆ	ð	RÝÔ(Ø”jØØ#Øð	ñ ô ˆFˆFøõ ð 	Rð 	Rð 	RÝ)Ð*IÀaÐ*IÐ*IÑJÔJÐPQÐQøøøøð	Røøøà�kÔ"Ð"s   ‹) ©
A³AÁAé   Ú
batch_sizec                 óB   — | j         pd}|                      ||¬¦  «        S )a@  Embed a list of strings. Vertex AI currently
        sets a max batch size of 5 strings.

        Args:
            texts: List[str] The list of strings to embed.
            batch_size: [int] The batch size of embeddings to send to the model

        Returns:
            List of embeddings, one for each text.
        r&   ©r   ©r   r.   )r+   r#   r0   r   s       r    Úembed_documentsz,GoogleGenerativeAIEmbeddings.embed_documentsY   s'   € ð ”NÐ:Ð&:ˆ	Ø�{Š{˜5¨Iˆ{Ñ6Ô6Ð6r"   Útextc                 óP   — | j         pd}|                      |g|¬¦  «        d         S )z€Embed a text.

        Args:
            text: The text to embed.

        Returns:
            Embedding for the text.
        Úretrieval_queryr2   r   r3   )r+   r5   r   s      r    Úembed_queryz(GoogleGenerativeAIEmbeddings.embed_queryi   s.   € ð ”NÐ7Ð&7ˆ	Ø�{Š{˜D˜6¨Yˆ{Ñ7Ô7¸Ô:Ð:r"   )N)r/   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚstrÚ__annotations__r   r   r   r	   r   r   r   r
   r!   r   Úfloatr.   Úintr4   r8   © r"   r    r   r      s  € € € € € € ðð ð" �Øð(ðñ ô €Eˆ3ð ð ñ ð
  %˜uØð>ð ñ  ô  €Iˆx˜Œ}ð ð ñ ð +0¨%Øð@ð+ñ +ô +€N�H˜YÔ'ð ð ñ ð
 &+ UØð&ð&ñ &ô &€N�H˜T”Nð ð ñ ð  %˜uØØIð ñ  ô  €Iˆx˜Œ}ð ð ñ ð
 €^ÑÔð¨$ð °4ð ð ð ñ Ôðð  HLð#ð #Ø˜#”Yð#Ø+.ð#Ø7?À´}ð#à	ˆd�5ŒkÔ	ð#ð #ð #ð #ð  34ð7ð 7Ø˜#”Yð7Ø,/ð7à	ˆd�5ŒkÔ	ð7ð 7ð 7ð 7ð 
; ð 
;¨¨U¬ð 
;ð 
;ð 
;ð 
;ð 
;ð 
;r"   r   )Útypingr   r   r   Úgoogle.generativeaiÚgenerativeair   Úlangchain_core.embeddingsr   Úlangchain_core.pydantic_v1r   r   r	   r
   Úlangchain_core.utilsr   Úlangchain_google_genai._commonr   r   rA   r"   r    ú<module>rI      sÑ   ðØ 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'ð $Ð #Ð #Ð #Ð #Ð #Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ 5Ð 5Ð 5Ð 5Ð 5Ð 5à BÐ BÐ BÐ BÐ BÐ Bðg;ð g;ð g;ð g;ð g; 9¨jñ g;ô g;ð g;ð g;ð g;r"   