§
    šŠtjr  ã                  ój  — d dl mZ d dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZ d dl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mZm Z  d dl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' d d	l(m)Z)  ej*        e+¦  «        Z,dd„Z-d d„Z.d!d"d„Z/d#d„Z0d#d„Z1 eddd¬¦  «         G d„ dee¦  «        ¦   «         Z2dS )$é    )ÚannotationsN)ÚAnyÚCallableÚDictÚListÚLiteralÚMappingÚOptionalÚSequenceÚSetÚTupleÚUnionÚcast)Ú
deprecated)Ú
Embeddings)Úget_from_dict_or_envÚget_pydantic_field_namesÚpre_init)Ú	BaseModelÚ
ConfigDictÚFieldÚmodel_validator)ÚAsyncRetryingÚbefore_sleep_logÚretryÚretry_if_exception_typeÚstop_after_attemptÚwait_exponential)Úis_openai_v1Ú
embeddingsÚOpenAIEmbeddingsÚreturnúCallable[[Any], Any]c           
     óÂ  — dd l }t          dt          | j        ¦  «        t	          d| j        | j        ¬¦  «        t          |j        j	        ¦  «        t          |j        j
        ¦  «        z  t          |j        j        ¦  «        z  t          |j        j        ¦  «        z  t          |j        j        ¦  «        z  t          t          t           j        ¦  «        ¬¦  «        S )Nr   Té   ©Ú
multiplierÚminÚmax©ÚreraiseÚstopÚwaitr   Úbefore_sleep)Úopenair   r   Úmax_retriesr   Úretry_min_secondsÚretry_max_secondsr   ÚerrorÚTimeoutÚAPIErrorÚAPIConnectionErrorÚRateLimitErrorÚServiceUnavailableErrorr   ÚloggerÚloggingÚWARNING)r    r/   s     úc/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/embeddings/openai.pyÚ_create_retry_decoratorr=   ,   sÔ   € Ø€M€M€Mõ ØÝ 
Ô 6Ñ7Ô7ÝØØÔ,ØÔ,ð
ñ 
ô 
õ $ F¤LÔ$8Ñ9Ô9Ý% f¤lÔ&;Ñ<Ô<ñ=å% f¤lÔ&EÑFÔFñGõ & f¤lÔ&AÑBÔBñCõ & f¤lÔ&JÑKÔKñ	Lõ &¥f­g¬oÑ>Ô>ðñ ô ð ó    r   c           
     óÔ  ‡— dd l }t          dt          | j        ¦  «        t	          d| j        | j        ¬¦  «        t          |j        j	        ¦  «        t          |j        j
        ¦  «        z  t          |j        j        ¦  «        z  t          |j        j        ¦  «        z  t          |j        j        ¦  «        z  t          t          t           j        ¦  «        ¬¦  «        Šd
ˆfd	„}|S )Nr   Tr%   r&   r*   Úfuncr   r"   c                ó   •‡ — dˆˆ fd„}|S )NÚargsr   Úkwargsr"   r   c               Ÿ  óZ   •K  — ‰2 3 d {V —†} ‰| i |¤Žƒ d {V —†c S 6 t          d¦  «        ‚)Nzthis is unreachable)ÚAssertionError)rB   rC   Ú_Úasync_retryingr@   s      €€r<   Ú	wrapped_fz7_async_retry_decorator.<locals>.wrap.<locals>.wrapped_fb   sp   øè è € Ø)ð 3ð 3ð 3ð 3ð 3ð 3ð 3�aØ!˜T 4Ð2¨6Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ð *å Ð!6Ñ7Ô7Ð7s   †)rB   r   rC   r   r"   r   © )r@   rH   rG   s   ` €r<   Úwrapz$_async_retry_decorator.<locals>.wrapa   s/   øø€ ð	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð
 Ðr>   )r@   r   r"   r   )r/   r   r   r0   r   r1   r2   r   r3   r4   r5   r6   r7   r8   r   r9   r:   r;   )r    r/   rJ   rG   s      @r<   Ú_async_retry_decoratorrK   G   s÷   ø€ Ø€M€M€Mõ #ØÝ 
Ô 6Ñ7Ô7ÝØØÔ,ØÔ,ð
ñ 
ô 
õ $ F¤LÔ$8Ñ9Ô9Ý% f¤lÔ&;Ñ<Ô<ñ=å% f¤lÔ&EÑFÔFñGõ & f¤lÔ&AÑBÔBñCõ & f¤lÔ&JÑKÔKñ	Lõ &¥f­g¬oÑ>Ô>ðñ ô €Nð$ð ð ð ð ð ð €Kr>   FÚresponseÚdictÚ
skip_emptyÚboolc                ó„   — t          d„ | d         D ¦   «         ¦  «        r |sdd l}|j                             d¦  «        ‚| S )Nc              3  óH   K  — | ]}t          |d          ¦  «        dk    V — ŒdS )Ú	embeddingr%   N)Úlen)Ú.0Úds     r<   ú	<genexpr>z"_check_response.<locals>.<genexpr>n   s3   è è € Ð
>Ð
>¨�3ˆq�Œ~ÑÔ !Ò#Ð
>Ð
>Ð
>Ð
>Ð
>Ð
>r>   Údatar   z&OpenAI API returned an empty embedding)Úanyr/   r3   r5   )rL   rN   r/   s      r<   Ú_check_responserY   m   sT   € Ý
Ð
>Ð
>¨X°fÔ-=Ð
>Ñ
>Ô
>Ñ>Ô>ð NÀzð NØˆˆˆàŒl×#Ò#Ð$LÑMÔMÐMØ€Or>   rC   c                óŽ   ‡ — t          ¦   «         r ‰ j        j        di |¤ŽS t          ‰ ¦  «        }|dˆ fd„¦   «         } |di |¤ŽS )ú)Use tenacity to retry the embedding call.rC   r   r"   c                 óT   •—  ‰j         j        di | ¤Ž}t          |‰j        ¬¦  «        S ©N)rN   rI   )ÚclientÚcreaterY   rN   ©rC   rL   r    s     €r<   Ú_embed_with_retryz+embed_with_retry.<locals>._embed_with_retry{   s4   ø€ à+�:Ô$Ô+Ð5Ð5¨fÐ5Ð5ˆÝ˜x°JÔ4IÐJÑJÔJÐJr>   rI   ©rC   r   r"   r   )r   r^   r_   r=   )r    rC   Úretry_decoratorra   s   `   r<   Úembed_with_retryrd   u   s   ø€ å�~„~ð 2Ø'ˆzÔ Ô'Ð1Ð1¨&Ð1Ð1Ð1Ý-¨jÑ9Ô9€OàðKð Kð Kð Kð Kñ „_ðKð ÐÐ&Ð&˜vÐ&Ð&Ð&r>   c              ‹  ó¦   ‡ K  — t          ¦   «         r ‰ j        j        di |¤Žƒ d{V —†S t          ‰ ¦  «        dˆ fd„¦   «         } |di |¤Žƒ d{V —†S )r[   NrC   r   r"   c               ›  ód   •K  —  ‰j         j        di | ¤Žƒ d {V —†}t          |‰j        ¬¦  «        S r]   )r^   ÚacreaterY   rN   r`   s     €r<   Ú_async_embed_with_retryz7async_embed_with_retry.<locals>._async_embed_with_retry‰   sJ   øè è € à2˜Ô*Ô2Ð<Ð<°VÐ<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ˆÝ˜x°JÔ4IÐJÑJÔJÐJr>   rI   rb   )r   Úasync_clientr_   rK   )r    rC   rh   s   `  r<   Úasync_embed_with_retryrj   ƒ   s¥   øè è € õ �~„~ð >Ø3�ZÔ,Ô3Ð=Ð=°fÐ=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=å˜JÑ'Ô'ðKð Kð Kð Kð Kñ (Ô'ðKð )Ð(Ð2Ð2¨6Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2r>   z0.0.9z1.0z!langchain_openai.OpenAIEmbeddings)ÚsinceÚremovalÚalternative_importc                  ó8  — e Zd ZU dZ edd¬¦  «        Zded<    edd¬¦  «        Zded<   dZd	ed
<   eZ	de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<   dZded<   	  edd¬¦  «        Zded<   	  edd¬¦  «        Zded<   	  e¦   «         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)<   	 dZded*<   	 d+Zd(ed,<   	  ee¬-¦  «        Zd.ed/<   	 d+Zd(ed0<   	 dZd1ed2<   dZd3ed4<   d5Z ded6<   	 d7Z!ded8<   	 dZ"d9ed:<   	  e#dd;d<¬=¦  «        Z$ e%d>¬?¦  «        e&dUdB„¦   «         ¦   «         Z'e(dVdD„¦   «         Z)e*dWdE„¦   «         Z+ddFœdXdL„Z,ddFœdXdM„Z-	 dYdZdO„Z.	 dYdZdP„Z/d[dS„Z0d[dT„Z1dS )\r!   aj  OpenAI embedding models.

    To use, you should have the ``openai`` python package installed, and the
    environment variable ``OPENAI_API_KEY`` set with your API key or pass it
    as a named parameter to the constructor.

    Example:
        .. code-block:: python

            from langchain_community.embeddings import OpenAIEmbeddings
            openai = OpenAIEmbeddings(openai_api_key="my-api-key")

    In order to use the library with Microsoft Azure endpoints, you need to set
    the OPENAI_API_TYPE, OPENAI_API_BASE, OPENAI_API_KEY and OPENAI_API_VERSION.
    The OPENAI_API_TYPE must be set to 'azure' and the others correspond to
    the properties of your endpoint.
    In addition, the deployment name must be passed as the model parameter.

    Example:
        .. code-block:: python

            import os

            os.environ["OPENAI_API_TYPE"] = "azure"
            os.environ["OPENAI_API_BASE"] = "https://<your-endpoint.openai.azure.com/"
            os.environ["OPENAI_API_KEY"] = "your AzureOpenAI key"
            os.environ["OPENAI_API_VERSION"] = "2023-05-15"
            os.environ["OPENAI_PROXY"] = "http://your-corporate-proxy:8080"

            from langchain_community.embeddings.openai import OpenAIEmbeddings
            embeddings = OpenAIEmbeddings(
                deployment="your-embeddings-deployment-name",
                model="your-embeddings-model-name",
                openai_api_base="https://your-endpoint.openai.azure.com/",
                openai_api_type="azure",
            )
            text = "This is a test query."
            query_result = embeddings.embed_query(text)

    NT)ÚdefaultÚexcluder   r^   ri   ztext-embedding-ada-002ÚstrÚmodelzOptional[str]Ú
deploymentÚapi_version)ro   ÚaliasÚopenai_api_versionÚbase_urlÚopenai_api_baseÚopenai_api_typeÚopenai_proxyiÿ  ÚintÚembedding_ctx_lengthÚapi_keyÚopenai_api_keyÚorganizationÚopenai_organizationzUnion[Literal['all'], Set[str]]Úallowed_specialÚallz.Union[Literal['all'], Set[str], Sequence[str]]Údisallowed_specialiè  Ú
chunk_sizeé   r0   Útimeoutz0Optional[Union[float, Tuple[float, float], Any]]Úrequest_timeoutÚheadersrO   Útiktoken_enabledÚtiktoken_model_nameFÚshow_progress_bar)Údefault_factoryúDict[str, Any]Úmodel_kwargsrN   zUnion[Mapping[str, str], None]Údefault_headersz!Union[Mapping[str, object], None]Údefault_queryé   r1   é   r2   zUnion[Any, None]Úhttp_clientÚforbidrI   )Úpopulate_by_nameÚextraÚprotected_namespacesÚbefore)ÚmodeÚvaluesr"   c           
     ó˜  — t          | ¦  «        }|                     di ¦  «        }t          |¦  «        D ]S}||v rt          d|› d�¦  «        ‚||vr6t	          j        d|› d|› d|› d�¦  «         |                     |¦  «        ||<   ŒT|                     |                     ¦   «         ¦  «        }|rt          d|› d	�¦  «        ‚||d<   |S )
z>Build extra kwargs from additional params that were passed in.rŽ   zFound z supplied twice.z	WARNING! z/ is not default parameter.
                    zJ was transferred to model_kwargs.
                    Please confirm that z is what you intended.zParameters za should be specified explicitly. Instead they were passed in as part of `model_kwargs` parameter.)	r   ÚgetÚlistÚ
ValueErrorÚwarningsÚwarnÚpopÚintersectionÚkeys)Úclsrš   Úall_required_field_namesr–   Ú
field_nameÚinvalid_model_kwargss         r<   Úbuild_extrazOpenAIEmbeddings.build_extra  s2  € õ $<¸CÑ#@Ô#@Ð Ø—
’
˜>¨2Ñ.Ô.ˆÝ˜v™,œ,ð 		;ð 		;ˆJØ˜UÐ"Ð"Ý Ð!F¨*Ð!FÐ!FÐ!FÑGÔGÐGØÐ!9Ð9Ð9Ý”ðN *ð Nð NØðNð Nà)3ðNð Nð Nñô ð ð
 %+§J¢J¨zÑ$:Ô$:��jÑ!øà7×DÒDÀUÇZÂZÁ\Ä\ÑRÔRÐØð 	ÝðTÐ2ð Tð Tð Tñô ð ð
 "'ˆˆ~ÑØˆr>   r   c           	     ó¤  — t          |dd¦  «        |d<   |d         pt          j        d¦  «        |d<   t          |ddd¬¦  «        |d<   t          |d	d
d¬¦  «        |d	<   |d         dv rd}t          |d         d¦  «        |d<   nd}t          |dd|¬¦  «        |d<   |d         p't          j        d¦  «        pt          j        d¦  «        |d<   	 ddl}t          ¦   «         r®|d         dv rt          j        d¦  «         |d         |d         |d         |d         |d         |d         |d         |d         dœ}|                     d¦  «        s |j	        d i |¤Žj
        |d<   |                     d¦  «        s |j        d i |¤Žj
        |d<   n>|                     d¦  «        s|j        |d<   nn# t          $ r t          d¦  «        ‚w xY w|S )!z?Validate that api key and python package exists in environment.r~   ÚOPENAI_API_KEYrx   ÚOPENAI_API_BASEry   ÚOPENAI_API_TYPEÚ )ro   rz   ÚOPENAI_PROXY©ÚazureÚazure_adÚazureadz
2023-05-15r„   i   rv   ÚOPENAI_API_VERSIONr€   ÚOPENAI_ORG_IDÚOPENAI_ORGANIZATIONr   NzfIf you have openai>=1.0.0 installed and are using Azure, please use the `AzureOpenAIEmbeddings` class.r‡   r0   r�   r�   r“   )r}   r   rw   r†   r0   r�   r�   r“   r^   ri   úTCould not import openai python package. Please install it with `pip install openai`.rI   )r   ÚosÚgetenvr(   r/   r   rŸ   r    rœ   ÚOpenAIr    ÚAsyncOpenAIÚ	EmbeddingÚImportError)r¤   rš   Údefault_api_versionr/   Úclient_paramss        r<   Úvalidate_environmentz%OpenAIEmbeddings.validate_environment   s²  € õ $8ØÐ$Ð&6ñ$
ô $
ˆÐÑ ð %+Ð+<Ô$=ð %
ÅÄØñB
ô B
ˆÐ Ñ!õ %9ØØØØð	%
ñ %
ô %
ˆÐ Ñ!õ "6ØØØØð	"
ñ "
ô "
ˆˆ~Ñð Ð#Ô$Ð(HÐHÐHØ".Ðõ $' v¨lÔ';¸TÑ#BÔ#BˆF�<Ñ Ð à"$ÐÝ';ØØ Ø Ø'ð	(
ñ (
ô (
ˆÐ#Ñ$ð Ð(Ô)ð 0ÝŒy˜Ñ)Ô)ð0åŒyÐ.Ñ/Ô/ð 	Ð$Ñ%ð
!	ØˆMˆMˆMõ ‰~Œ~ð ØÐ+Ô,Ð0PÐPÐPÝ”MðHñô ð ð
  &Ð&6Ô7Ø$*Ð+@Ô$AØ &Ð'8Ô 9Ø%Ð&7Ô8Ø#)¨-Ô#8Ø'-Ð.?Ô'@Ø%+¨OÔ%<Ø#)¨-Ô#8ð	!ð 	!�ð —z’z (Ñ+Ô+ð QØ'4 v¤}Ð'EÐ'E°}Ð'EÐ'EÔ'P�F˜8Ñ$Ø—z’z .Ñ1Ô1ð !Ø-?¨VÔ-?ð .ð .Ø'ð.ð .ä ð ˜>Ñ*øð —Z’Z Ñ)Ô)ð Ø#)Ô#3��xÑ Ð àøõ? ð 	ð 	ð 	Ýð?ñô ð ð	øøøð@ ˆs   ÃF3 Æ3Gc           	     óZ  — t          ¦   «         rd| j        i| j        ¥}n‹| j        | j        | j        | j        | j        | j        | j        | j	        dœ| j        ¥}| j        dv r
| j
        |d<   | j        r7	 dd l}n# t          $ r t          d¦  «        ‚w xY w| j        | j        dœ|_        |S )Nrr   )rr   r‡   rˆ   r}   r   Úapi_baseÚapi_typert   r¯   Úenginer   r¶   )ÚhttpÚhttps)r   rr   rŽ   r‡   rˆ   r~   r€   rx   ry   rv   rs   rz   r/   r¼   Úproxy)ÚselfÚopenai_argsr/   s      r<   Ú_invocation_paramsz#OpenAIEmbeddings._invocation_paramsm  sü   € å‰>Œ>ð 	Ø!(¨$¬*Ð J¸Ô8IÐ JˆKˆKð œØ#'Ô#7Øœ<ØÔ.Ø $Ô 8Ø Ô0Ø Ô0Ø#Ô6ð
ð 
ð Ô#ð
ˆKð Ô#Ð'GÐGÐGØ(,¬�˜HÑ%àÔ ð ðØ!�M�M�M�MøÝ"ð ð ð Ý%ðGñô ð ðøøøð !Ô-Ø!Ô.ð ð  �”ð Ðs   Á5A: Á:B)r„   Útextsú	List[str]rÃ   úOptional[int]úList[List[float]]c          	     óT
  — g }g }| j         p| j        }|p| j        }| j        sà	 ddlm} n# t          $ r t          d¦  «        ‚w xY w|                     |¬¦  «        }	t          |¦  «        D ]“\  }
}|	 	                    |d¬¦  «        }t          dt          |¦  «        | j        ¦  «        D ]S}|||| j        z   …         }|	                     |¦  «        }|                     |¦  «         |                     |
¦  «         ŒTŒ”�nB	 ddl}n# t          $ r t          d¦  «        ‚w xY w	 |                     |¦  «        }nA# t"          $ r4 t$                               d	¦  «         d
}|                     |¦  «        }Y nw xY wt          |¦  «        D ]·\  }
}| j                             d¦  «        r|                     dd¦  «        }| 	                    || j        | j        ¬¦  «        }t          dt          |¦  «        | j        ¦  «        D ]<}|                     |||| j        z   …         ¦  «         |                     |
¦  «         Œ=Œ¸| j        r]	 ddlm}  |t          dt          |¦  «        |¦  «        ¦  «        }nL# t          $ r! t          dt          |¦  «        |¦  «        }Y n"w xY wt          dt          |¦  «        |¦  «        }g }|D ]o}
t9          | fd||
|
|z   …         i| j        ¤Ž}t=          |t>          ¦  «        s|                     ¦   «         }|                      d„ |d         D ¦   «         ¦  «         Œpd„ t          t          |¦  «        ¦  «        D ¦   «         }d„ t          t          |¦  «        ¦  «        D ¦   «         }t          t          |¦  «        ¦  «        D ]~}
| j!        rt          ||
         ¦  «        dk    rŒ#|||
                                       ||
         ¦  «         |||
                                       t          ||
         ¦  «        ¦  «         Œd„ t          t          |¦  «        ¦  «        D ¦   «         }t          t          |¦  «        ¦  «        D ]Ã}
||
         }t          |¦  «        dk    rRt9          | fddi| j        ¤Ž}t=          |t>          ¦  «        s|                     ¦   «         }|d         d         d         }ntE          j#        |d||
         ¬¦  «        }|tD          j$         %                    |¦  «        z   &                    ¦   «         ||
<   ŒÄ|S )al  
        Generate length-safe embeddings for a list of texts.

        This method handles tokenization and embedding generation, respecting the
        set embedding context length and chunk size. It supports both tiktoken
        and HuggingFace tokenizer based on the tiktoken_enabled flag.

        Args:
            texts (List[str]): A list of texts to embed.
            engine (str): The engine or model to use for embeddings.
            chunk_size (Optional[int]): The size of chunks for processing embeddings.

        Returns:
            List[List[float]]: A list of embeddings for each input text.
        r   ©ÚAutoTokenizerz¥Could not import transformers python package. This is needed in order to for OpenAIEmbeddings without `tiktoken`. Please install it with `pip install transformers`. ©Úpretrained_model_name_or_pathF©Úadd_special_tokensNú‰Could not import tiktoken python package. This is needed in order to for OpenAIEmbeddings. Please install it with `pip install tiktoken`.ú5Warning: model not found. Using cl100k_base encoding.Úcl100k_baseÚ001ú
ú ©Útextr�   rƒ   )ÚtqdmÚinputc              3  ó&   K  — | ]}|d          V — ŒdS ©rR   NrI   ©rT   Úrs     r<   rV   z<OpenAIEmbeddings._get_len_safe_embeddings.<locals>.<genexpr>ø  ó&   è è € Ð%OÐ%O¸ a¨¤nÐ%OÐ%OÐ%OÐ%OÐ%OÐ%Or>   rW   c                ó   — g | ]}g ‘ŒS rI   rI   ©rT   rF   s     r<   ú
<listcomp>z=OpenAIEmbeddings._get_len_safe_embeddings.<locals>.<listcomp>ú  ó   € Ð+JÐ+JÐ+J°1¨BÐ+JÐ+JÐ+Jr>   c                ó   — g | ]}g ‘ŒS rI   rI   rå   s     r<   ræ   z=OpenAIEmbeddings._get_len_safe_embeddings.<locals>.<listcomp>û  ó   € Ð/NÐ/NÐ/N°q°Ð/NÐ/NÐ/Nr>   r%   c                ó   — g | ]}g ‘ŒS rI   rI   rå   s     r<   ræ   z=OpenAIEmbeddings._get_len_safe_embeddings.<locals>.<listcomp>  ó   € Ð(GÐ(GÐ(G°¨Ð(GÐ(GÐ(Gr>   r­   rR   ©ÚaxisÚweights)'rŠ   rr   r„   r‰   ÚtransformersrÐ   r¼   Úfrom_pretrainedÚ	enumerateÚencodeÚrangerS   r|   ÚdecodeÚappendÚtiktokenÚencoding_for_modelÚKeyErrorr9   ÚwarningÚget_encodingÚendswithÚreplacer�   rƒ   r‹   Ú	tqdm.autorÝ   rd   rÉ   Ú
isinstancerM   ÚextendrN   ÚnpÚaverageÚlinalgÚnormÚtolist)rÇ   rÊ   rÃ   r„   ÚtokensÚindicesÚ
model_nameÚ_chunk_sizerÐ   Ú	tokenizerÚirÜ   Ú	tokenizedÚjÚtoken_chunkÚ
chunk_textrö   Úencodingrr   ÚtokenrÝ   Ú_iterÚbatched_embeddingsrL   ÚresultsÚnum_tokens_in_batchr    Ú_resultÚaverage_embeddedr  s                                 r<   Ú_get_len_safe_embeddingsz)OpenAIEmbeddings._get_len_safe_embeddings‘  sî  € ð& ˆØˆØÔ-Ð;°´ˆ
Ø Ð3 D¤Oˆð Ô$ð 9	&ðØ6Ð6Ð6Ð6Ð6Ð6Ð6øÝð ð ð Ý!ðVñô ð ðøøøð &×5Ò5Ø.8ð 6ñ ô ˆIõ % UÑ+Ô+ð &ð &‘��4à%×,Ò,¨TÀeÐ,ÑLÔL�	õ ˜q¥# i¡.¤.°$Ô2KÑLÔLð &ð &�AØ"+¨A°°DÔ4MÑ0MÐ,MÔ"N�Kð "+×!1Ò!1°+Ñ!>Ô!>�JØ—M’M *Ñ-Ô-Ð-Ø—N’N 1Ñ%Ô%Ð%Ð%ð&ñ&ðØ����øÝð ð ð Ý!ðEñô ð ðøøøð8Ø#×6Ò6°zÑBÔB��øÝð 8ð 8ð 8Ý—’ÐVÑWÔWÐWØ%�Ø#×0Ò0°Ñ7Ô7���ð8øøøõ % UÑ+Ô+ð &ð &‘��4Ø”:×&Ò& uÑ-Ô-ð 3ð  Ÿ<š<¨¨cÑ2Ô2�Dà ŸšØØ$(Ô$8Ø'+Ô'>ð (ñ ô �õ ˜q¥# e¡*¤*¨dÔ.GÑHÔHð &ð &�AØ—M’M %¨¨A°Ô0IÑ,IÐ(IÔ"JÑKÔKÐKØ—N’N 1Ñ%Ô%Ð%Ð%ð&ð Ô!ð 	7ð;Ø*Ð*Ð*Ð*Ð*Ð*à˜�U 1¥c¨&¡k¤k°;Ñ?Ô?Ñ@Ô@��øÝð ;ð ;ð ;Ý˜a¥ V¡¤¨kÑ:Ô:���ð;øøøõ ˜!�S ™[œ[¨+Ñ6Ô6ˆEà02ÐØð 	Pð 	PˆAÝ'Øðð à˜Q  [¡Ð0Ô1ðð Ô)ðð ˆHõ
 ˜h­Ñ-Ô-ð +Ø#Ÿ=š=™?œ?�Ø×%Ò%Ð%OÐ%O¸hÀvÔ>NÐ%OÑ%OÔ%OÑOÔOÐOÐOà+JÐ+J½½cÀ%¹j¼jÑ8IÔ8IÐ+JÑ+JÔ+JˆØ/NÐ/N½EÅ#ÀeÁ*Ä*Ñ<MÔ<MÐ/NÑ/NÔ/NÐÝ•s˜7‘|”|Ñ$Ô$ð 	Cð 	CˆAØŒð ¥3Ð'9¸!Ô'<Ñ#=Ô#=ÀÒ#BÐ#BØØ�G˜A”JÔ×&Ò&Ð'9¸!Ô'<Ñ=Ô=Ð=Ø ¨¤
Ô+×2Ò2µ3°v¸a´y±>´>ÑBÔBÐBÐBà(GÐ(GµU½3¸u¹:¼:Ñ5FÔ5FÐ(GÑ(GÔ(Gˆ
Ý•s˜5‘z”zÑ"Ô"ð 	Ið 	IˆAØ˜a”jˆGÝ�7‰|Œ|˜qÒ Ð Ý#3Øð$ð $àð$ð Ô-ð$ð $Ð õ
 "Ð"2µDÑ9Ô9ð ?Ø'7×'<Ò'<Ñ'>Ô'>Ð$Ø*¨6Ô2°1Ô5°kÔB��åœ* W°1Ð>QÐRSÔ>TÐUÑUÔU�Ø$¥r¤y§~¢~°gÑ'>Ô'>Ñ>×FÒFÑHÔHˆJ�q‰MˆMàÐs9   ¤+ «AÄD	 Ä	D#Ä'D= Ä=;E;Å:E;É-I; É;(J&Ê%J&c          	   ƒ  ót	  K  — g }g }| j         p| j        }|p| j        }| j        sà	 ddlm} n# t          $ r t          d¦  «        ‚w xY w|                     |¬¦  «        }	t          |¦  «        D ]“\  }
}|	 	                    |d¬¦  «        }t          dt          |¦  «        | j        ¦  «        D ]S}|||| j        z   …         }|	                     |¦  «        }|                     |¦  «         |                     |
¦  «         ŒTŒ”�nB	 ddl}n# t          $ r t          d¦  «        ‚w xY w	 |                     |¦  «        }nA# t"          $ r4 t$                               d	¦  «         d
}|                     |¦  «        }Y nw xY wt          |¦  «        D ]·\  }
}| j                             d¦  «        r|                     dd¦  «        }| 	                    || j        | j        ¬¦  «        }t          dt          |¦  «        | j        ¦  «        D ]<}|                     |||| j        z   …         ¦  «         |                     |
¦  «         Œ=Œ¸g }|p| j        }t          dt          |¦  «        |¦  «        D ]u}
t3          | fd||
|
|z   …         i| j        ¤Žƒ d{V —†}t7          |t8          ¦  «        s|                     ¦   «         }|                     d„ |d         D ¦   «         ¦  «         Œvd„ t          t          |¦  «        ¦  «        D ¦   «         }d„ t          t          |¦  «        ¦  «        D ¦   «         }t          t          |¦  «        ¦  «        D ]]}
|||
                                       ||
         ¦  «         |||
                                       t          ||
         ¦  «        ¦  «         Œ^d„ t          t          |¦  «        ¦  «        D ¦   «         }t          t          |¦  «        ¦  «        D ]É}
||
         }t          |¦  «        dk    rXt3          | fddi| j        ¤Žƒ d{V —†}t7          |t8          ¦  «        s|                     ¦   «         }|d         d         d         }nt=          j        |d||
         ¬¦  «        }|t<          j          !                    |¦  «        z   "                    ¦   «         ||
<   ŒÊ|S )aŒ  
        Asynchronously generate length-safe embeddings for a list of texts.

        This method handles tokenization and asynchronous embedding generation,
        respecting the set embedding context length and chunk size. It supports both
        `tiktoken` and HuggingFace `tokenizer` based on the tiktoken_enabled flag.

        Args:
            texts (List[str]): A list of texts to embed.
            engine (str): The engine or model to use for embeddings.
            chunk_size (Optional[int]): The size of chunks for processing embeddings.

        Returns:
            List[List[float]]: A list of embeddings for each input text.
        r   rÏ   z¥Could not import transformers python package. This is needed in order to for OpenAIEmbeddings without  `tiktoken`. Please install it with `pip install transformers`.rÑ   FrÓ   NrÕ   rÖ   r×   rØ   rÙ   rÚ   rÛ   rÞ   c              3  ó&   K  — | ]}|d          V — ŒdS rà   rI   rá   s     r<   rV   z=OpenAIEmbeddings._aget_len_safe_embeddings.<locals>.<genexpr>u  rã   r>   rW   c                ó   — g | ]}g ‘ŒS rI   rI   rå   s     r<   ræ   z>OpenAIEmbeddings._aget_len_safe_embeddings.<locals>.<listcomp>w  rç   r>   c                ó   — g | ]}g ‘ŒS rI   rI   rå   s     r<   ræ   z>OpenAIEmbeddings._aget_len_safe_embeddings.<locals>.<listcomp>x  ré   r>   c                ó   — g | ]}g ‘ŒS rI   rI   rå   s     r<   ræ   z>OpenAIEmbeddings._aget_len_safe_embeddings.<locals>.<listcomp>}  rë   r>   r­   rR   rì   )#rŠ   rr   r„   r‰   rï   rÐ   r¼   rð   rñ   rò   ró   rS   r|   rô   rõ   rö   r÷   rø   r9   rù   rú   rû   rü   r�   rƒ   rj   rÉ   rþ   rM   rÿ   r   r  r  r  r  )rÇ   rÊ   rÃ   r„   r  r  r  r  rÐ   r	  r
  rÜ   r  r  r  r  rö   r  rr   r  r  rL   r  r  r    r  r  r  s                               r<   Ú_aget_len_safe_embeddingsz*OpenAIEmbeddings._aget_len_safe_embeddings  s“  è è € ð& ˆØˆØÔ-Ð;°´ˆ
Ø Ð3 D¤Oˆð Ô$ð 9	&ðØ6Ð6Ð6Ð6Ð6Ð6Ð6øÝð ð ð Ý!ðVñô ð ðøøøð &×5Ò5Ø.8ð 6ñ ô ˆIõ % UÑ+Ô+ð &ð &‘��4à%×,Ò,¨TÀeÐ,ÑLÔL�	õ ˜q¥# i¡.¤.°$Ô2KÑLÔLð &ð &�AØ"+¨A°°DÔ4MÑ0MÐ,MÔ"N�Kð "+×!1Ò!1°+Ñ!>Ô!>�JØ—M’M *Ñ-Ô-Ð-Ø—N’N 1Ñ%Ô%Ð%Ð%ð&ñ&ðØ����øÝð ð ð Ý!ðEñô ð ðøøøð8Ø#×6Ò6°zÑBÔB��øÝð 8ð 8ð 8Ý—’ÐVÑWÔWÐWØ%�Ø#×0Ò0°Ñ7Ô7���ð8øøøõ % UÑ+Ô+ð &ð &‘��4Ø”:×&Ò& uÑ-Ô-ð 3ð  Ÿ<š<¨¨cÑ2Ô2�Dà ŸšØØ$(Ô$8Ø'+Ô'>ð (ñ ô �õ ˜q¥# e¡*¤*¨dÔ.GÑHÔHð &ð &�AØ—M’M %¨¨A°Ô0IÑ,IÐ(IÔ"JÑKÔKÐKØ—N’N 1Ñ%Ô%Ð%Ð%ð&ð 13ÐØ Ð3 D¤OˆÝ�q�#˜f™+œ+ {Ñ3Ô3ð 		Pð 		PˆAÝ3Øðð à˜Q  [¡Ð0Ô1ðð Ô)ðð ð ð ð ð ð ð ˆHõ ˜h­Ñ-Ô-ð +Ø#Ÿ=š=™?œ?�Ø×%Ò%Ð%OÐ%O¸hÀvÔ>NÐ%OÑ%OÔ%OÑOÔOÐOÐOà+JÐ+J½½cÀ%¹j¼jÑ8IÔ8IÐ+JÑ+JÔ+JˆØ/NÐ/N½EÅ#ÀeÁ*Ä*Ñ<MÔ<MÐ/NÑ/NÔ/NÐÝ•s˜7‘|”|Ñ$Ô$ð 	Cð 	CˆAØ�G˜A”JÔ×&Ò&Ð'9¸!Ô'<Ñ=Ô=Ð=Ø ¨¤
Ô+×2Ò2µ3°v¸a´y±>´>ÑBÔBÐBÐBà(GÐ(GµU½3¸u¹:¼:Ñ5FÔ5FÐ(GÑ(GÔ(Gˆ
Ý•s˜5‘z”zÑ"Ô"ð 	Ið 	IˆAØ˜a”jˆGÝ�7‰|Œ|˜qÒ Ð Ý)?Øð*ð *àð*ð Ô-ð*ð *ð $ð $ð $ð $ð $ð $Ð õ
 "Ð"2µDÑ9Ô9ð ?Ø'7×'<Ò'<Ñ'>Ô'>Ð$Ø*¨6Ô2°1Ô5°kÔB��åœ* W°1Ð>QÐRSÔ>TÐUÑUÔU�Ø$¥r¤y§~¢~°gÑ'>Ô'>Ñ>×FÒFÑHÔHˆJ�q‰MˆMàÐs'   ¦- ­AÄD ÄD%Ä)D? Ä?;E=Å<E=r   c                óf   — t          t          | j        ¦  «        }|                      |||¬¦  «        S )aM  Call out to OpenAI's embedding endpoint for embedding search docs.

        Args:
            texts: The list of texts to embed.
            chunk_size: The chunk size of embeddings. If None, will use the chunk size
                specified by the class.

        Returns:
            List of embeddings, one for each text.
        ©rÃ   r„   ©r   rq   rs   r  ©rÇ   rÊ   r„   rÃ   s       r<   Úembed_documentsz OpenAIEmbeddings.embed_documents�  s9   € õ •c˜4œ?Ñ+Ô+ˆØ×,Ò,Ø˜&¨Zð -ñ 
ô 
ð 	
r>   c              ƒ  ój   K  — t          t          | j        ¦  «        }|                      |||¬¦  «        S )aS  Call out to OpenAI's embedding endpoint async for embedding search docs.

        Args:
            texts: The list of texts to embed.
            chunk_size: The chunk size of embeddings. If None, will use the chunk size
                specified by the class.

        Returns:
            List of embeddings, one for each text.
        r  r   r!  s       r<   Úaembed_documentsz!OpenAIEmbeddings.aembed_documents£  s=   è è € õ •c˜4œ?Ñ+Ô+ˆØ×,Ò,Ø˜&¨Zð -ñ 
ô 
ð 	
r>   rÜ   úList[float]c                ó:   — |                       |g¦  «        d         S )z´Call out to OpenAI's embedding endpoint for embedding query text.

        Args:
            text: The text to embed.

        Returns:
            Embedding for the text.
        r   )r"  )rÇ   rÜ   s     r<   Úembed_queryzOpenAIEmbeddings.embed_query·  s   € ð ×#Ò# T FÑ+Ô+¨AÔ.Ð.r>   c              ƒ  óN   K  — |                       |g¦  «        ƒ d{V —†}|d         S )zºCall out to OpenAI's embedding endpoint async for embedding query text.

        Args:
            text: The text to embed.

        Returns:
            Embedding for the text.
        Nr   )r$  )rÇ   rÜ   r    s      r<   Úaembed_queryzOpenAIEmbeddings.aembed_queryÂ  s9   è è € ð  ×0Ò0°$°Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8ˆ
Ø˜!Œ}Ðr>   )rš   r�   r"   r   )rš   r   r"   r   )r"   r�   )rÊ   rË   rÃ   rq   r„   rÌ   r"   rÍ   )r   )rÊ   rË   r„   rÌ   r"   rÍ   )rÜ   rq   r"   r%  )2Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r^   Ú__annotations__ri   rr   rs   rv   rx   ry   rz   r|   r~   r€   Úsetr�   rƒ   r„   r0   r‡   rˆ   r‰   rŠ   r‹   rM   rŽ   rN   r�   r�   r1   r2   r“   r   Úmodel_configr   Úclassmethodr¨   r   r¿   ÚpropertyrÉ   r  r  r"  r$  r'  r)  rI   r>   r<   r!   r!   ‘   s  € € € € € € ð'ð 'ðR �% ¨dÐ3Ñ3Ô3€FÐ3Ð3Ð3Ñ3Ø˜ d°DÐ9Ñ9Ô9€LÐ9Ð9Ð9Ñ9Ø)€EÐ)Ð)Ð)Ñ)à %€JÐ%Ð%Ð%Ñ%à(-¨°dÀ-Ð(PÑ(PÔ(PÐÐPÐPÐPÑPØSà%* U°4¸zÐ%JÑ%JÔ%J€OÐJÐJÐJÑJðð &*€OÐ)Ð)Ð)Ñ)à"&€LÐ&Ð&Ð&Ñ&Ø $ÐÐ$Ð$Ð$Ñ$Ø8Ø$) E°$¸iÐ$HÑ$HÔ$H€NÐHÐHÐHÑHØOØ).¨°tÀ>Ð)RÑ)RÔ)RÐÐRÐRÐRÑRØNØ7:°s±u´u€OÐ<Ð<Ð<Ñ<ØINÐÐNÐNÐNÑNØ€JÐÐÐÑØ8Ø€KÐÐÐÑØ<ØHMÈØ˜IðIñ Iô I€Oð ð ð ñ ðà€GÐÐÐÑØ!ÐÐ!Ð!Ð!Ñ!ðGà)-ÐÐ-Ð-Ð-Ñ-ðJð $ÐÐ#Ð#Ð#Ñ#Ø8Ø#( 5¸Ð#>Ñ#>Ô#>€LÐ>Ð>Ð>Ñ>ØVØ€JÐÐÐÑð!à6:€OÐ:Ð:Ð:Ñ:Ø7;€MÐ;Ð;Ð;Ñ;ð ÐÐÐÐÑØ7ØÐÐÐÐÑØ7Ø$(€KÐ(Ð(Ð(Ñ(Ø à�:Ø XÀBðñ ô €Lð €_˜(Ð#Ñ#Ô#Øðð ð ñ „[ñ $Ô#ðð2 ðJð Jð Jñ „XðJðX ðð ð ñ „XððH MQðAð Að Að Að Að AðL MQðwð wð wð wð wð wðt =>ð
ð 
ð 
ð 
ð 
ð* =>ð
ð 
ð 
ð 
ð 
ð(	/ð 	/ð 	/ð 	/ð
ð 
ð 
ð 
ð 
ð 
r>   )r    r!   r"   r#   )r    r!   r"   r   )F)rL   rM   rN   rO   r"   rM   )r    r!   rC   r   r"   r   )3Ú
__future__r   r:   r·   rŸ   Útypingr   r   r   r   r   r	   r
   r   r   r   r   r   Únumpyr   Úlangchain_core._api.deprecationr   Úlangchain_core.embeddingsr   Úlangchain_core.utilsr   r   r   Úpydanticr   r   r   r   Útenacityr   r   r   r   r   r   Ú langchain_community.utils.openair   Ú	getLoggerr*  r9   r=   rK   rY   rd   rj   r!   rI   r>   r<   ú<module>r=     s’  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0ðð ð ð ð ð ð ð ð ð ð
 CÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð :Ð 9Ð 9Ð 9Ð 9Ð 9à	ˆÔ	˜8Ñ	$Ô	$€ðð ð ð ð6"ð "ð "ð "ðLð ð ð ð ð'ð 'ð 'ð 'ð3ð 3ð 3ð 3ð €Ø
ØØ:ðñ ô ð
vð vð vð vð v�y *ñ vô vñô ð
vð vð vr>   