
    js
                         d dl mZmZ d dlmZmZmZ d dlZd dl	m
Z
 d dlmZmZ d dlmZ d dlmZ erd dlmZ e G d	 d
e                      Ze G d de                      ZdS )    )	dataclassfield)TYPE_CHECKINGListOptionalN)Element)BaseEmbeddingEncoderEmbeddingConfig)EmbeddingEncoderConnectionError)requires_dependenciesOpenAIEmbeddingsc                   (    e Zd ZU eed<   dZeed<   dS )OpenAiEmbeddingConfigapi_keyztext-embedding-ada-002
model_nameN)__name__
__module____qualname__str__annotations__r        c/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/unstructured/embed/openai.pyr   r      s+         LLL.J.....r   r   c                   j   e Zd ZU eed<    edd          Zed         ed<    edd          Zee	e
                  ed<   edd	            Zede	e
         fd
            Zd Zd Zd Zd Zde	e         de	e         fdZde	e         fdZej         eg dd          dd                        ZdS )OpenAIEmbeddingEncoderconfigFN)initdefaultr   _client_exemplary_embeddingreturnc                 P    | j         |                                 | _         | j         S N)r    create_clientselfs    r   clientzOpenAIEmbeddingEncoder.client   s%    <--//DL|r   c                 \    | j         | j                            d          | _         | j         S )NQ)r!   r(   embed_queryr&   s    r   exemplary_embeddingz*OpenAIEmbeddingEncoder.exemplary_embedding#   s,    $,(,(?(?(D(DD%((r   c                     d S r$   r   r&   s    r   
initializez!OpenAIEmbeddingEncoder.initialize)   s    r   c                 4    t          j        | j                  S r$   )npshaper,   r&   s    r   num_of_dimensionsz(OpenAIEmbeddingEncoder.num_of_dimensions,   s    x0111r   c                 p    t          j        t           j                            | j                  d          S )Ng      ?)r0   iscloselinalgnormr,   r&   s    r   is_unit_vectorz%OpenAIEmbeddingEncoder.is_unit_vector/   s%    z")..)ABBCHHHr   c                 P    | j                             t          |                    S r$   )r(   r+   r   )r'   querys     r   r+   z"OpenAIEmbeddingEncoder.embed_query2   s    {&&s5zz222r   elementsc                 z    | j                             d |D                       }|                     ||          }|S )Nc                 ,    g | ]}t          |          S r   )r   ).0es     r   
<listcomp>z:OpenAIEmbeddingEncoder.embed_documents.<locals>.<listcomp>6   s    1K1K1KQ#a&&1K1K1Kr   )r(   embed_documents_add_embeddings_to_elements)r'   r:   
embeddingselements_with_embeddingss       r   r@   z&OpenAIEmbeddingEncoder.embed_documents5   sB    [001K1K(1K1K1KLL
#'#C#CHj#Y#Y ''r   c                     t          |          t          |          k    sJ g }t          |          D ]'\  }}||         |_        |                    |           (|S r$   )len	enumeraterB   append)r'   r:   rB   elements_w_embeddingielements         r   rA   z2OpenAIEmbeddingEncoder._add_embeddings_to_elements:   sh    8}}J////!#H-- 	1 	1JAw!+AG ''0000r   )	langchainopenaitiktokenrL   )extrasc                 T    ddl m}  || j        j        | j        j                  }|S )z;Creates a langchain OpenAI python client to embed elements.r   r   )openai_api_keymodel)langchain.embeddings.openair   r   r   r   )r'   r   openai_clients      r   r%   z$OpenAIEmbeddingEncoder.create_clientB   sF     	A@@@@@((;.+(
 
 
 r   )r"   r   )r   r   r   r   r   r   r    r   r!   r   floatpropertyr(   r,   r.   r2   r7   r+   r   r@   rA   r   wrapr   r%   r   r   r   r   r      s        !!!!,1Eud,K,K,KGX()KKK27%UD2Q2Q2Q(4;/QQQ   X
 )T%[ ) ) ) X)
  2 2 2I I I3 3 3(W ($w- ( ( ( (
4=     %)+++    	  *)
  r   r   )dataclassesr   r   typingr   r   r   numpyr0   unstructured.documents.elementsr   unstructured.embed.interfacesr	   r
   unstructured.ingest.errorr   unstructured.utilsr   rR   r   r   r   r   r   r   <module>r^      s5   ( ( ( ( ( ( ( ( 0 0 0 0 0 0 0 0 0 0          P O O O O O O O E E E E E E 4 4 4 4 4 4 =<<<<<< / / / / /O / / /
 7 7 7 7 71 7 7 7 7 7r   