§
    é˜ºh•  ã                  ó  — U d dl mZ d dlZd dlmZmZmZ d dlZd dlmZm	Z	m
Z
mZmZ d dlmc mZ d dlmZ d dlmZ d dlmZ d dlmZ d	Zd
Zej        Zeeeef         Zi ej        ej        “d ej        “dej        “dej        “ej        ej        “dej        “dej        “dej        “ej        ej        “dej        “dej        “dej        “ej         ej         “dej         “dej         “dej         “ej!        ej!        “dej!        dej!        ej"        ej"        dej"        dej"        i¥Z#de$d<   d;d „Z%	 ej&        Z'n# e($ r  e
d!¦  «        Z)d<d'„Z'Y nw xY we		 	 	 d=d>d3„¦   «         Z*e		 	 	 d=d?d6„¦   «         Z*	 	 	 d=d@d:„Z*dS )Aé    )ÚannotationsN)ÚIterableÚSequenceÚMapping)r   ÚoverloadÚTypeVarÚUnionr   )Úget_default_generative_client)Ú
text_types)Úmodel_types)Úcontent_typeszmodels/embedding-001éd   Útask_type_unspecifiedÚunspecifiedé   Úretrieval_queryÚqueryé   Úretrieval_documentÚdocumenté   Úsemantic_similarityÚ
similarityé   Úclassificationé   Ú
clusteringz1dict[EmbeddingTaskTypeOptions, EmbeddingTaskType]Ú_EMBEDDING_TASK_TYPEÚxÚEmbeddingTaskTypeOptionsÚreturnÚEmbeddingTaskTypec                ón   — t          | t          ¦  «        r|                      ¦   «         } t          |          S ©N)Ú
isinstanceÚstrÚlowerr   )r   s    úe/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/google/generativeai/embedding.pyÚto_task_typer)   ?   s,   € Ý�!•SÑÔð Ø�GŠG‰IŒIˆÝ Ô"Ð"ó    ÚTÚiterableúIterable[T]ÚnÚintúIterable[list[T]]c              #  ó´   K  — |dk     rt          d|› �¦  «        ‚g }| D ]0}|                     |¦  «         t          |¦  «        |k    r|V — g }Œ1|r|V — d S d S )Nr   z Batch size `n` must be >0, got: )Ú
ValueErrorÚappendÚlen)r,   r.   ÚbatchÚitems       r(   Ú_batchedr7   K   s‰   è è € ØˆqŠ5ˆ5ÝÐCÀÐCÐCÑDÔDÐDØˆØð 	ð 	ˆDØ�LŠL˜ÑÔÐÝ�5‰zŒz˜QŠˆØ���Ø�øàð 	ØˆKˆKˆKˆKˆKð	ð 	r*   Úmodelú model_types.BaseModelNameOptionsÚcontentúcontent_types.ContentTypeÚ	task_typeúEmbeddingTaskTypeOptions | NoneÚtitleú
str | NoneÚclientú"glm.GenerativeServiceClient | Noneútext_types.EmbeddingDictc                ó   — d S r$   © ©r8   r:   r<   r>   r@   s        r(   Úembed_contentrF   Y   ó	   € ð €Cr*   ú#Iterable[content_types.ContentType]útext_types.BatchEmbeddingDictc                ó   — d S r$   rD   rE   s        r(   rF   rF   d   rG   r*   ú?content_types.ContentType | Iterable[content_types.ContentType]úglm.GenerativeServiceClientú8text_types.EmbeddingDict | text_types.BatchEmbeddingDictc                ó`  ‡ ‡‡— t          j        ‰ ¦  «        Š |€t          ¦   «         }‰r*t          ‰¦  «        t          j        urt          d¦  «        ‚‰rt          ‰¦  «        Št          |t          ¦  «        rÂt          |t          t          f¦  «        s¦dg i}ˆ ˆˆfd„|D ¦   «         }t          |t          ¦  «        D ]z}t          j        ‰ |¬¦  «        }|                     |¦  «        }	t!          |	¦  «                             |	¦  «        }
|d                              d„ |
d         D ¦   «         ¦  «         Œ{|S t          j        ‰ t)          j        |¦  «        ‰‰¬¦  «        }|                     |¦  «        }	t!          |	¦  «                             |	¦  «        }
|
d         d	         |
d<   |
S )
aÿ  
    Calls the API to create embeddings for content passed in.

    Args:
        model: Which model to call, as a string or a `types.Model`.

        content: Content to embed.

        task_type: Optional task type for which the embeddings will be used. Can only be set for `models/embedding-001`.

        title: An optional title for the text. Only applicable when task_type is `RETRIEVAL_DOCUMENT`.

    Return:
        Dictionary containing the embedding (list of float values) for the input content.
    NzIIf a title is specified, the task must be a retrieval document type task.Ú	embeddingc              3  ól   •K  — | ].}t          j        ‰t          j        |¦  «        ‰‰¬ ¦  «        V — Œ/dS )©r8   r:   r<   r>   N)ÚglmÚEmbedContentRequestr   Ú
to_content)Ú.0Úcr8   r<   r>   s     €€€r(   ú	<genexpr>z embed_content.<locals>.<genexpr>”   s`   øè è € ð 
ð 
ð õ Ô#Ø¥]Ô%=¸aÑ%@Ô%@ÈIÐ]bðñ ô ð
ð 
ð 
ð 
ð 
ð 
r*   )r8   Úrequestsc              3  ó&   K  — | ]}|d          V — ŒdS )ÚvaluesNrD   )rU   Úes     r(   rW   z embed_content.<locals>.<genexpr>ž   s&   è è € Ð&YÐ&Y°q q¨¤{Ð&YÐ&YÐ&YÐ&YÐ&YÐ&Yr*   Ú
embeddingsrQ   rZ   )r   Úmake_model_namer
   r)   r"   ÚRETRIEVAL_DOCUMENTr2   r%   r   r&   r   r7   ÚEMBEDDING_MAX_BATCH_SIZErR   ÚBatchEmbedContentsRequestÚbatch_embed_contentsÚtypeÚto_dictÚextendrS   r   rT   rF   )r8   r:   r<   r>   r@   ÚresultrX   r5   Úembedding_requestÚembedding_responseÚembedding_dicts   ` ``       r(   rF   rF   o   sí  øøø€ õ, Ô'¨Ñ.Ô.€Eà€~Ý.Ñ0Ô0ˆàð 
•˜iÑ(Ô(Õ0AÔ0TÐTÐTÝØWñ
ô 
ð 	
ð ð ,Ý  Ñ+Ô+ˆ	å�'�8Ñ$Ô$ð ­Z¸Å#ÅwÀÑ-PÔ-Pð Ø˜rÐ"ˆð
ð 
ð 
ð 
ð 
ð 
ð ð	
ñ 
ô 
ˆõ ˜hÕ(@ÑAÔAð 	Zð 	ZˆEÝ #Ô =ÀEÐTYÐ ZÑ ZÔ ZÐØ!'×!<Ò!<Ð=NÑ!OÔ!OÐÝ!Ð"4Ñ5Ô5×=Ò=Ð>PÑQÔQˆNØ�;Ô×&Ò&Ð&YÐ&Y¸NÈ<Ô<XÐ&YÑ&YÔ&YÑYÔYÐYÐYØˆåÔ3Ø¥Ô!9¸'Ñ!BÔ!BÈiÐ_dð
ñ 
ô 
Ðð $×1Ò1Ð2CÑDÔDÐÝÐ0Ñ1Ô1×9Ò9Ð:LÑMÔMˆØ&4°[Ô&AÀ(Ô&Kˆ�{Ñ#ØÐr*   )r   r    r!   r"   )r,   r-   r.   r/   r!   r0   )NNN)r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   r!   rB   )r8   r9   r:   rH   r<   r=   r>   r?   r@   rA   r!   rI   )r8   r9   r:   rK   r<   r=   r>   r?   r@   rL   r!   rM   )+Ú
__future__r   ÚdataclassesÚcollections.abcr   r   r   Ú	itertoolsÚtypingr   r   r	   Úgoogle.ai.generativelanguageÚaiÚgenerativelanguagerR   Úgoogle.generativeai.clientr
   Úgoogle.generativeai.typesr   r   r   ÚDEFAULT_EMB_MODELr_   ÚTaskTyper"   r/   r&   r    ÚTASK_TYPE_UNSPECIFIEDÚRETRIEVAL_QUERYr^   ÚSEMANTIC_SIMILARITYÚCLASSIFICATIONÚ
CLUSTERINGr   Ú__annotations__r)   Úbatchedr7   ÚAttributeErrorr+   rF   rD   r*   r(   ú<module>r}      s„  ðð #Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø Ð Ð Ð Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >à *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à DÐ DÐ DÐ DÐ DÐ Dà 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3à*Ð ØÐ à”LÐ à   cÐ+<Ð!<Ô=Ð ðKØÔ+Ð->Ô-TðKàÐÔ.ðKð Ð.ÔDðKð Ð$Ô:ð	Kð
 Ô%Ð'8Ô'HðKð ÐÔ(ðKð Ð(Ô8ðKð ÐÔ.ðKð Ô(Ð*;Ô*NðKð ÐÔ+ðKð Ð+Ô>ðKð Ð!Ô4ðKð Ô)Ð+<Ô+PðKð ÐÔ,ðKð Ð,Ô@ðKð  Ð#Ô7ð!Kð" Ô$Ð&7Ô&Fð#Kð$ ÐÔ'ØÐ'Ô6ØÔ Ð"3Ô">ØÐÔ#ØÐ#Ô.ð-Kð KÐ ð ð ð ñ ð4#ð #ð #ð #ðàÔ €H€HøØð ð ð Øˆ�‰Œ€Aðð ð ð ð ð ðøøøð" 
ð 26ØØ15ðð ð ð ñ 
„ðð 
ð 26ØØ15ðð ð ð ñ 
„ðð 26ØØ*.ð8ð 8ð 8ð 8ð 8ð 8ð 8s   Ä6D> Ä>EÅE